Come rinominare il link "Richiedi nuova password"?


7

Vogliamo rinominare il testo "Richiedi nuova password" nella pagina di accesso di un Drupal in un testo personalizzato.

Nel file user.module, vedo che questo testo è hard coded

if (variable_get('user_register', 1)) {
    $items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));
  }
  $items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
  $form['links'] = array('#value' => theme('item_list', $items));

Esiste un altro modo per rinominare questo testo piuttosto che modificare il core di Drupal?

Risposte:


5

Hai provato il modulo String Overrides ?

Fornisce un modo rapido e semplice per sostituire qualsiasi testo sul sito.

Caratteristiche

  • Sostituisci facilmente tutto ciò che è passato attraverso t ()
  • Supporto locale, che consente di sovrascrivere le stringhe in qualsiasi lingua
  • Possibilità di importare / esportare file * .po, per una facile migrazione dal modulo Locale
  • Si noti che questo non è un sostituto di Locale in quanto avere migliaia di sostituzioni può causare più dolore che beneficio. Usa questo solo se hai bisogno di alcune semplici modifiche al testo.

Ho provato la soluzione qui sotto perché volevo cambiare il testo per la registrazione ma non ha funzionato per me in D7. Non volevo davvero installare un altro modulo ma ho trovato String Overrides un ottimo modulo e l'ho usato per cambiare un sacco di stringhe. Modulo fantastico!
John81,

12

Il modulo String Overrides è un buon suggerimento se hai molte stringhe o hai bisogno di modificarle costantemente, ma puoi anche farlo modificando la sezione delle stringhe del tuo file settings.php .

Basta decommentare la sezione in questo modo:

$conf['locale_custom_strings_en'] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);

2
Mi piace questa soluzione meglio dell'installazione di un nuovo modulo solo per questo compito!
Alex Weber,

Non ho mai capito che questa era un'opzione prima. È un approccio molto più bello rispetto all'installazione di un altro modulo. A meno che, naturalmente, non si desideri consentire agli utenti di definire il nuovo testo all'interno dell'interfaccia utente.
drmonkeyninja,

1
Il codice sopra è per D6. Per D7 usa la parentesi vuota aggiuntiva in questo modo: $ conf ['locale_custom_strings_en'] [''] = array ()
Pooch

4

Ho appena provato questo in Drupal 7 ma non era del tutto giusto. È necessario aggiungere un bit [''] extra. Questo funziona:

$conf['locale_custom_strings_en'][''] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);

1

Ho trovato altri due modi per farlo:

Usa il nome del tuo modulo invece di 'mymodulename':

/*
 * Implements hook_menu_alter(). Change link text of 'Request new password' link.
 */
function mymodulename_menu_alter(&$items) {
      $items['user/password']['title'] = t('Reset password');
}

0

Puoi anche farlo nel template.phptuo tema, soluzione più flessibile per il mio scopo ( volevo il testo in francese e in inglese fianco a fianco ):

/**
 * Implements hook_form_alter(&$form, &$form_state, $form_id)
 */
function YOURTHEME_form_alter(&$form, &$form_state, $form_id) {

  switch ($form_id) {
    //Modify the User Login Block Form
    case 'user_login_block':     
      $item = array(); 
      $items[] = l( t('Request new password') . ' |  <span class="en">' . t('Request new password', array(), array('langcode' => 'en')) . '</span>', 'user/password', array('html' => TRUE) ); 

      $form['links']['#markup'] = theme('item_list', array('items' => $items));

    break;
  }
} 

Originariamente ispirato a Geoff Hankerson . Grazie a lui.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.