Drupal 7中的默认用户注册页面包含用于输入用户名,密码和电子邮件地址的字段 .
我添加了一些以这种形式显示的额外字段,但我想改变它的显示方式 .
例如,我想更改表单项的顺序并添加CSS .
重要的是,我想更改为用户名显示的标签 - 我希望它改为“昵称” .
我怎样才能做到这一点?
您可以在多个图层上更改此内容:
在settings.php中,您已经看到了一些示例,只需添加:
$ conf ['locale_custom_strings_en'] [''] = array('Username'=>'昵称','用户名'=>'昵称',);
您可能希望覆盖包含用户名的更多字符串,例如"The username is invalid" . 当你开始混合这些单词时,用户体验很糟糕,所以为了正确地做你想要的,你必须改变几个这样的字符串,即使你使用下面的其他选项之一 . 最值得注意的是,您需要对验证和错误字符串给予一些关注 .
但是,这会将“用户名”改为“昵称”!也适用于管理员和版主 . 根据您更广泛的规格和愿望,这可能会产生不必要的副作用 .
在template.php中,您可以覆盖传递给屏幕的任何内容 . 在这种情况下,您需要覆盖the login form template .
显式代码太多,无法输入 . 但粗略的,你需要:
告诉Drupal你想用一个模板作为用户登录表单 hook_theme .
hook_theme
创建模板文件 . 并使用您希望的任何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'); }
或者,如果您想要更多业务逻辑(不属于主题层),您可以在那里创建一个模块和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'); } }
几天前我有一个类似的任务,并在this post的帮助下完成了 .
你需要为此设置一个自定义主题,但这很容易做到这里有很多例子 .
在旁注中,考虑将drupal问题发布到http://drupal.stackexchange.com,您可能会得到更多答案 .
祝好运!
在主题的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); .
print_r($form);
我只是要解决同样的问题 .
我试了几个小时来了解user_register_submit和user_register_form函数 .
我找到的最简单,最灵活的解决方案是通过ajax / jquery检索表单数据(用户名,电子邮件和密码),并创建一个自定义模块,以编程方式将数据保存到新用户 .
事实上,我发现通过ajax /自定义模块绕过'drupal方式'比尝试理解遗留代码的层和层更快更频繁 .
这是来自一个没有先前的PHP知识开始drupaling的人 .
4 回答
您可以在多个图层上更改此内容:
翻译:
在settings.php中,您已经看到了一些示例,只需添加:
$ conf ['locale_custom_strings_en'] [''] = array('Username'=>'昵称','用户名'=>'昵称',);
您可能希望覆盖包含用户名的更多字符串,例如"The username is invalid" . 当你开始混合这些单词时,用户体验很糟糕,所以为了正确地做你想要的,你必须改变几个这样的字符串,即使你使用下面的其他选项之一 . 最值得注意的是,您需要对验证和错误字符串给予一些关注 .
但是,这会将“用户名”改为“昵称”!也适用于管理员和版主 . 根据您更广泛的规格和愿望,这可能会产生不必要的副作用 .
主题覆盖:
在template.php中,您可以覆盖传递给屏幕的任何内容 . 在这种情况下,您需要覆盖the login form template .
显式代码太多,无法输入 . 但粗略的,你需要:
告诉Drupal你想用一个模板作为用户登录表单
hook_theme
.创建模板文件 . 并使用您希望的任何HTML .
表格覆盖:
在主题和模块中,您可以使用hook_form_alter覆盖任何主题 .
在您的主题中,您将添加到template.php:
或者,如果您想要更多业务逻辑(不属于主题层),您可以在那里创建一个模块和add a form_alter:
几天前我有一个类似的任务,并在this post的帮助下完成了 .
你需要为此设置一个自定义主题,但这很容易做到这里有很多例子 .
在旁注中,考虑将drupal问题发布到http://drupal.stackexchange.com,您可能会得到更多答案 .
祝好运!
在主题的template.php中,添加:
要查看您可以更改的所有内容,请在该函数内部执行
print_r($form);
.我只是要解决同样的问题 .
我试了几个小时来了解user_register_submit和user_register_form函数 .
我找到的最简单,最灵活的解决方案是通过ajax / jquery检索表单数据(用户名,电子邮件和密码),并创建一个自定义模块,以编程方式将数据保存到新用户 .
事实上,我发现通过ajax /自定义模块绕过'drupal方式'比尝试理解遗留代码的层和层更快更频繁 .
这是来自一个没有先前的PHP知识开始drupaling的人 .