Drupalのログインページの「Request new password」テキストの名前をカスタムテキストに変更したいと考えています。
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コアを変更するのではなく、このテキストの名前を変更する他の方法はありますか?
String Overrides モジュールを試しましたか?
サイト上のテキストをすばやく簡単に置き換える方法を提供します。
特徴
- 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',
);
それを行う方法がさらに2つありました。
インストール iTweak Login module
カスタムモジュールで、次のように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');
}
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;
}
}
元々 Geoff Hankerson に触発されました。彼に感謝します。