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


Мы хотим переименовать текст "Запросить новый пароль" на странице входа в систему 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?

Author: Ajinkya Kulkarni, 2011-03-31

5 answers

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

Обеспечивает быстрый и простой способ замены любого текста на сайте.

Особенности

  • Легко заменить все, что прошло через t()
  • Поддержка локали, позволяющая переопределять строки на любом языке
  • Возможность импорта/экспорта файлов *.po для упрощения миграции из модуля локали
  • Обратите внимание, что это не замена локали, так как в ней тысячи переопределения могут причинить больше боли, чем пользы. Используйте это только в том случае, если вам нужно несколько простых изменений текста.
 5
Author: Kevin, 2020-06-15 09:13:00

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

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

$conf['locale_custom_strings_en'] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
 12
Author: jhedstrom, 2011-04-01 02:27:28

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

$conf['locale_custom_strings_en'][''] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
 4
Author: Simon Davies, 2012-01-25 17:30:05

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

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

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

Используйте свое имя модуля вместо "имя_модуля":

/*
 * Implements hook_menu_alter(). Change link text of 'Request new password' link.
 */
function mymodulename_menu_alter(&$items) {
      $items['user/password']['title'] = t('Reset password');
}
 1
Author: pferlito, 2014-07-28 00:02:04

Вы также можете сделать это в 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;
  }
} 

Первоначально вдохновленный Джеффом Ханкерсоном. Благодаря ему.

 0
Author: anou, 2019-01-23 15:42:38