Comment renommer le lien «Demander un nouveau mot de passe»?

7

Nous voulons renommer le texte "Demander un nouveau mot de passe" sur la page de connexion de Drupal en un texte personnalisé.

Dans le fichier user.module, je vois que ce texte est codé en dur

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));

Existe-t-il un autre moyen de renommer ce texte plutôt que de modifier le noyau Drupal?

Ajinkya Kulkarni
la source

Réponses:

5

Avez-vous essayé le module String Overrides ?

Fournit un moyen rapide et facile de remplacer tout texte sur le site.

Caractéristiques

  • Remplacez facilement tout ce qui est passé par t ()
  • Prise en charge des paramètres régionaux, vous permettant de remplacer les chaînes dans n'importe quelle langue
  • Possibilité d'importer / exporter des fichiers * .po, pour une migration facile à partir du module Paramètres régionaux
  • Notez que ce n'est pas un remplacement de Locale car avoir des milliers de remplacements peut causer plus de douleur que d'avantages. Utilisez-le uniquement si vous avez besoin de quelques modifications de texte faciles.
Kevin
la source
J'ai essayé la solution ci-dessous parce que je voulais changer le texte pour l'enregistrement mais cela n'a pas fonctionné pour moi en D7. Je ne voulais pas vraiment installer un autre module, mais j'ai trouvé que String Overrides était un excellent module et je l'ai utilisé pour changer un tas de chaînes. Module génial!
John81
12

Le module String Overrides est une bonne suggestion si vous avez de nombreuses chaînes ou si vous devez les modifier constamment, mais vous pouvez également y parvenir en modifiant la section des chaînes de remplacement de votre fichier settings.php .

Décommentez simplement la section pour qu'elle ressemble à ceci:

$conf['locale_custom_strings_en'] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
jhedstrom
la source
2
J'aime mieux cette solution que d'installer un nouveau module juste pour cette seule tâche!
Alex Weber
Je n'avais jamais réalisé que c'était une option auparavant. C'est une approche beaucoup plus agréable que d'installer un autre module. À moins bien sûr que vous ne vouliez permettre aux utilisateurs de définir le nouveau texte à partir de l'interface utilisateur.
drmonkeyninja
1
Le code ci-dessus est pour D6. Pour D7, utilisez le support vide supplémentaire comme ceci: $ conf ['locale_custom_strings_en'] [''] = array ()
Pooch
4

J'ai juste essayé ceci dans Drupal 7 mais ce n'était pas tout à fait ça. Il a besoin d'un bit supplémentaire [''] ajouté. Cela marche:

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

J'ai trouvé deux autres façons de le faire:

Utilisez le nom de votre module au lieu de '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');
}
pferlito
la source
0

Vous pouvez également le faire dans template.phpvotre thème, solution plus flexible pour mon usage ( je voulais le texte en français et en anglais côte à côte ):

/**
 * 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;
  }
} 

Inspiré à l'origine par Geoff Hankerson . Grâce à lui.

anou
la source