Wie benenne ich den Link "Neues Passwort anfordern" um?

7

Wir möchten den Text "Neues Passwort anfordern" auf der Anmeldeseite eines Drupal in einen benutzerdefinierten Text umbenennen.

In der Datei user.module sehe ich, dass dieser Text fest codiert ist

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

Gibt es eine andere Möglichkeit, diesen Text umzubenennen, als den Drupal-Kern zu ändern?

Ajinkya Kulkarni
quelle

Antworten:

5

Haben Sie das String Overrides- Modul ausprobiert ?

Bietet eine schnelle und einfache Möglichkeit, Text auf der Website zu ersetzen.

Eigenschaften

  • Ersetzen Sie einfach alles, was durch t () geleitet wird.
  • Unterstützung für das Gebietsschema, mit der Sie Zeichenfolgen in jeder Sprache überschreiben können
  • Möglichkeit zum Importieren / Exportieren von * .po-Dateien für eine einfache Migration aus dem Gebietsschema-Modul
  • Beachten Sie, dass dies kein Ersatz für Locale ist, da Tausende von Überschreibungen mehr Schmerzen verursachen können als Vorteile. Verwenden Sie diese Option nur, wenn Sie einige einfache Textänderungen benötigen.
Kevin
quelle
Ich habe unten eine Lösung versucht, weil ich den Text für die Registrierung ändern wollte, aber in D7 hat es bei mir nicht funktioniert. Ich wollte eigentlich kein anderes Modul installieren, aber ich fand String Overrides ein großartiges Modul und verwendete es, um eine Reihe von Strings zu ändern. Super Modul!
John81
12

Das Modul "Zeichenfolgenüberschreibungen" ist ein guter Vorschlag, wenn Sie viele Zeichenfolgen haben oder diese ständig ändern müssen. Sie können dies jedoch auch erreichen, indem Sie den Abschnitt "Zeichenfolgenüberschreibungen" in Ihrer Datei settings.php bearbeiten .

Kommentieren Sie einfach den Abschnitt aus, damit er so aussieht:

$conf['locale_custom_strings_en'] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
jhedstrom
quelle
2
Diese Lösung gefällt mir besser als die Installation eines neuen Moduls nur für diese eine Aufgabe!
Alex Weber
Ich habe noch nie bemerkt, dass dies eine Option ist. Es ist ein viel schönerer Ansatz als die Installation eines weiteren Moduls. Es sei denn, Sie möchten natürlich zulassen, dass Benutzer den neuen Text über die Benutzeroberfläche definieren können.
drmonkeyninja
1
Der obige Code gilt für D6. Verwenden Sie für D7 die zusätzliche leere Klammer wie folgt: $ conf ['locale_custom_strings_en'] [''] = array ()
Pooch
4

Ich habe es gerade in Drupal 7 versucht, aber es war nicht ganz richtig. Es muss ein zusätzliches [''] Bit hinzugefügt werden. Das funktioniert:

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

Ich habe zwei weitere Möglichkeiten gefunden:

  • Installieren Sie das iTweak Login-Modul

  • Implementieren Sie in einem benutzerdefinierten Modul hook_menu_alter () wie folgt:

Verwenden Sie Ihren Modulnamen anstelle von '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
quelle
0

Sie können es auch in template.phpIhrem Thema tun , Lösung flexibler für meinen Zweck ( ich wollte den Text in Französisch und Englisch nebeneinander ):

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

Ursprünglich von Geoff Hankerson inspiriert . Dank ihm.

anou
quelle