「新しいパスワードのリクエスト」リンクの名前を変更する方法は?


7

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コアを変更するのではなく、このテキストの名前を変更する他の方法はありますか?

回答:


5

文字列オーバーライドモジュールを試しましたか?

サイト上のテキストをすばやく簡単に置き換える方法を提供します。

特徴

  • t()を介して渡されたものを簡単に置き換える
  • ロケールのサポートにより、任意の言語の文字列をオーバーライドできます
  • * .poファイルのインポート/エクスポート機能により、ロケールモジュールから簡単に移行できます。
  • 何千ものオーバーライドがあると、より多くの痛みが発生し、メリットが得られるため、これはロケールの代わりにはなりません。これは、テキストを簡単に変更する必要がある場合にのみ使用してください。

登録用のテキストを変更したかったので、以下の解決策を試しましたが、D7では機能しませんでした。実際には別のモジュールをインストールしたくありませんでしたが、String Overridesが優れたモジュールであることがわかり、それを使用して一連の文字列を変更しました。素晴らしいモジュール!
John81 2012年

12

文字列オーバーライドモジュールは、多くの文字列がある場合、または常に変更する必要がある場合に適していますが、settings.phpファイルの文字列オーバーライドセクションを編集することでも実現できます

セクションのコメントを外して、次のようにします。

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

2
この1つのタスクのためだけに新しいモジュールをインストールするよりも、このソリューションが好きです!
Alex Weber

これがオプションであることを以前に気づかなかった。これは、さらに別のモジュールをインストールするよりもはるかに優れたアプローチです。もちろん、ユーザーがUI内から新しいテキストを定義できるようにしたい場合を除きます。
drmonkeyninja 2012年

1
上記のコードはD6用です。D7の場合は、次のように追加の空のブラケットを使用します:$ conf ['locale_custom_strings_en'] [''] = array()
Pooch

4

私はDrupal 7でこれを試してみましたが、正しくありませんでした。追加の['']ビットを追加する必要があります。これは機能します:

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

1

それを行う方法がさらに2つありました。

  • iTweak Loginモジュールをインストールする

  • カスタムモジュールで、次のように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');
}

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

もともとはGeoff Hankersonに触発されました。彼に感謝します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.