3

我有一个无法更改的默认用户注册表单。然而,我的老板想要第二份登记表,它的布局与第一份不同。我是 Drupal 的新手,所以一些解释会很棒。

先感谢您

4

2 回答 2

1

如果您创建自定义模块,您可以使用 hook_menu() 定义第二个菜单项的路径。

function user_menu() {
  $items['user/custom_register'] = array(
   'title' => 'Create new account',
   'page callback' => 'drupal_get_form',
   'page arguments' => array('user_register'),
   'access callback' => 'user_register_access',
   'type' => MENU_LOCAL_TASK,
   'file' => 'user.pages.inc',
   );
   return $items;
 }

当然,这看起来与您现有的形式没有任何不同,它只是一条不同的路径。

要自定义表单,您有很多选项,您可以使用 hook_form_alter() 并检查路径。或者您可以将page arguments上面的参数更改为名为 user_register 并自定义输出的参数。

于 2010-06-11T13:03:04.160 回答
1

让我为您节省一些时间,因为我刚刚在几个网站上解决了这个问题。在此处查看登录表单:

这是基本的用户登录表单。我通过告诉 Drupal 使用自定义 tpl 文件来加载此页面来覆盖它,并且在 TPL 中,我添加了其他元素并添加到 style.css。

这里有一篇关于如何做到这一点的文章:

http://www.lullabot.com/articles/hacking-phptemplate

中途它向您展示了如何使用 template.php 为特定路径定义新的 tpl 页面。

您要做的是在加载“用户”或“用户/注册”时告诉它,使用 tpl 文件(您可以命名它)。然后,您可以使用预处理器功能并添加到页面,例如将顶部的单词更改为单词,或删除某些表单元素。好处是您可以通过核心配置文件模块或其他模块将您想要的所有内容添加到用户注册表中,它们仍然会在这里呈现。

这样可以为您节省大量时间,而不是尝试使用您自己的模块重新发明用户登录过程(我也尝试过)。

于 2010-06-11T13:09:38.067 回答