如何重命名“请求新密码”链接?


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核心的方法吗?

Answers:


5

您是否尝试过String Overrides模块?

提供了一种快速简便的方法来替换网站上的任何文本。

特征

  • 轻松替换通过t()传递的任何内容
  • 语言环境支持,使您可以覆盖任何语言的字符串
  • 能够导入/导出* .po文件,以便从“语言环境”模块轻松迁移
  • 请注意,这不是Locale的替代,因为具有数千个替代会导致更多的痛苦然后受益。仅在需要一些简单的文本更改时才使用此功能。

我尝试了以下解决方案,因为我想更改注册文本,但在D7中对我不起作用。并不是真的想安装另一个模块,但是我发现String Overrides是一个很棒的模块,并用它来更改一堆字符串。很棒的模块!
2012年

12

如果您有很多字符串,或者需要不断更改它们,“字符串覆盖”模块是一个很好的建议,但是您也可以通过编辑settings.php文件的字符串覆盖部分来实现。

只需取消注释该部分,使其看起来像这样:

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

2
与仅为此一项任务安装新模块相比,我更喜欢此解决方案!
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

我发现了另外两种方法:

  • 安装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');
}

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启发的。多亏了他

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.