Как переименовать ссылку «Запросить новый пароль»?

7

Мы хотим переименовать текст «Запросить новый пароль» на странице входа в Drupal в какой-нибудь специальный текст.

В файле user.module я вижу, что этот текст жестко запрограммирован

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

Есть ли другой способ переименования этого текста, кроме изменения ядра Drupal?

Ajinkya Kulkarni
источник

Ответы:

5

Вы пробовали модуль переопределения строк ?

Предоставляет быстрый и простой способ заменить любой текст на сайте.

особенности

  • Легко заменить все, что прошло через t ()
  • Поддержка локали, позволяющая переопределять строки на любом языке
  • Возможность импорта / экспорта файлов * .po, для легкой миграции из модуля Locale
  • Обратите внимание, что это не замена Locale, поскольку тысячи переопределений могут причинить больше боли, чем пользы. Используйте это только если вам нужно несколько простых текстовых изменений.
Kevin
источник
Я попробовал решение ниже, потому что я хотел изменить текст для регистрации, но он не работал для меня в D7. Не очень хотелось устанавливать другой модуль, но я нашел String Overrides отличным модулем и использовал его для изменения набора строк. Потрясающий модуль!
John81
12

Модуль String Overrides - это хорошее предложение, если у вас много строк или вам необходимо постоянно изменять их, но вы также можете добиться этого, отредактировав раздел переопределения строк в вашем файле settings.php .

Просто раскомментируйте раздел, чтобы он выглядел так:

$conf['locale_custom_strings_en'] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
jhedstrom
источник
2
Мне нравится это решение лучше, чем установка нового модуля только для этой задачи!
Алекс Вебер
Никогда не понимал, что это был вариант раньше. Это гораздо более приятный подход, чем установка еще одного модуля. Если, конечно, вы не хотите, чтобы пользователи могли определять новый текст из пользовательского интерфейса.
drmonkeyninja
1
Код выше для D6. Для D7 используйте дополнительную пустую скобку, например, так: $ conf ['locale_custom_strings_en'] [''] = array ()
Pooch 12.12
4

Я только что попробовал это в Drupal 7, но это было не совсем правильно. Требуется дополнительный бит ['']. Это работает:

$conf['locale_custom_strings_en'][''] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
Саймон Дэвис
источник
1

Я нашел еще два способа сделать это:

  • Установите модуль входа в iTweak

  • В пользовательском модуле реализуйте hook_menu_alter () следующим образом:

Используйте имя вашего модуля вместо «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
источник
0

Вы также можете сделать это в template.phpсвоей теме, решение более гибкое для моей цели ( я хотел, чтобы текст на французском и английском языках был рядом ):

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

Первоначально вдохновленный Джеффом Хэнкерсоном . Спасибо ему.

Anou
источник