Как переименовать ссылку "Запросить новый пароль"?
Мы хотим переименовать текст "Запросить новый пароль" на странице входа в систему 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?
5 answers
Вы пробовали модуль Переопределения строк ?
Обеспечивает быстрый и простой способ замены любого текста на сайте.
Особенности
- Легко заменить все, что прошло через t()
- Поддержка локали, позволяющая переопределять строки на любом языке
- Возможность импорта/экспорта файлов *.po для упрощения миграции из модуля локали
- Обратите внимание, что это не замена локали, так как в ней тысячи переопределения могут причинить больше боли, чем пользы. Используйте это только в том случае, если вам нужно несколько простых изменений текста.
Модуль переопределения строк является хорошим предложением, если у вас много строк или вам нужно постоянно их изменять, но вы также можете добиться этого, отредактировав раздел переопределения строк вашего settings.php файл.
Просто раскомментируйте раздел, чтобы он выглядел так:
$conf['locale_custom_strings_en'] = array(
'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
Я только что попробовал это в Drupal 7, но это было не совсем правильно. Для этого нужно добавить дополнительный ["] бит. Это работает:
$conf['locale_custom_strings_en'][''] = array(
'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
Я нашел еще два способа сделать это:
Установите модуль входа в систему 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');
}
Вы также можете сделать это в 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;
}
}
Первоначально вдохновленный Джеффом Ханкерсоном. Благодаря ему.