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

时间:2011-06-01 20:59:04

标签: drupal drupal-7

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

我添加了一些显示在此表单中的额外字段,但我想更改它的显示方式。

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

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

我该怎么做?

4 个答案:

答案 0 :(得分:6)

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

文:

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

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

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

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

主题覆盖:

在template.php中,您可以覆盖传递给屏幕的任何内容。在这种情况下,您需要覆盖the login form template

显式代码太多,无法输入此处。但粗略地说,你需要:

  1. 告诉Drupal您想使用hook_theme的用户登录表单的模板。
  2. 创建模板文件。并使用您希望的任何HTML。
  3. 表格覆盖:

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

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

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

    或者,如果您想要更多业务逻辑(属于主题层),您可以在那里创建一个模块并add a 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');
        }
    }
    

答案 1 :(得分:1)

我几天前做了类似的任务,并在this post的帮助下完成了这项任务。

你需要为此设置一个自定义主题,但这很容易做到这里有很多例子。

在旁注中,考虑向http://drupal.stackexchange.com发布drupal问题,您可能会得到更多答案。

好运!

答案 2 :(得分:1)

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

function [YOUR-TEMPLATE-NAME]_form_user_register_form_alter(&$form, &$form_state, $form_id) {

    $form['account']['name']['#title'] = t('Nickname');

}

要查看您可以更改的所有内容,请在该功能内部执行print_r($form);

答案 3 :(得分:0)

我只需解决同样的问题。

我尝试了几个小时来了解user_register_submit和user_register_form函数。

我找到的最简单,最灵活的解决方案是通过ajax / jquery检索表单数据(用户名,电子邮件和密码),并创建一个自定义模块,以编程方式将数据保存到新用户。

事实上,我发现通过ajax /自定义模块绕过'drupal方式'比尝试理解遗留代码的层和层更快更快。

这是来自一个刚开始没有PHP知识的人。