如何在Drupal 7中自定义默认用户注册页面

Car*_*ñiz 3 drupal drupal-7

Drupal 7中的默认用户注册页面包含用于输入用户名,密码和电子邮件地址的字段.

我添加了一些以这种形式显示的额外字段,但我想改变它的显示方式.

例如,我想更改表单项的顺序并添加CSS.

重要的是,我想更改为用户名显示的标签 - 我希望它改为"昵称".

我怎样才能做到这一点?

ber*_*kes 6

您可以在多个图层上更改此内容:

翻译:

在settings.php中,您已经看到了一些示例,只需添加:

$ conf ['locale_custom_strings_en'] [''] = array('Username'=>'昵称','用户名'=>'昵称',);

您可能希望覆盖包含用户名的更多字符串,例如"用户名无效".当你开始混合这些单词时,用户体验很糟糕,所以为了正确地做你想要的,你必须改变几个这样的字符串,即使你使用下面的其他选项之一.最值得注意的是,您需要对验证和错误字符串给予一些关注.

但是,这会将"用户名"改为"昵称"!也适用于管理员和版主.根据您更广泛的规格和愿望,这可能会产生不必要的副作用.

主题覆盖:

在template.php中,您可以覆盖传递给屏幕的任何内容.在这种情况下,您需要覆盖登录表单模板.

显式代码太多,无法输入.但粗略的,你需要:

  1. 告诉Drupal你想使用模板作为用户登录表单hook_theme.
  2. 创建模板文件.并使用您希望的任何HTML.

表格覆盖:

在主题和模块中,您可以使用hook_form_alter覆盖任何主题.

在您的主题中,您将添加到template.php:

function your_template_form_user_register_form_alter(&$form, &$form_state, $form_id) {
    $form['account']['name']['#title'] = t('Nickname');
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要更多业务逻辑(属于主题层),您需要创建一个模块并在其中添加form_alter:

function your_modulename_form_user_register_form_alter(&$form, &$form_state, $form_id) {
    if (_your_module_is_person_from_irc()) {
      $form['account']['name']['#title'] = t('Nickname');
    }
}
Run Code Online (Sandbox Code Playgroud)