使用不同模板在Drupal中拥有2个单独的用户注册表单的诀窍是什么?

时间:2010-06-11 02:45:05

标签: php drupal drupal-6 drupal-views drupal-5

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

提前谢谢

2 个答案:

答案 0 :(得分: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并自定义输出的内容。

答案 1 :(得分:1)

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

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

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

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

中途显示如何使用template.php为特定路径定义新的tpl页面。

你想要做的是在加载'user'或'user / register'时告诉它,使用tpl文件(你可以命名)。然后,您可以使用预处理器函数并添加到页面,如更改顶部的单词,或删除某些表单元素。好处是您可以通过核心配置文件模块或其他模块添加您想要的所有用户注册表单,它们仍将在此处显示。

它会以这种方式为您节省大量时间,而不是尝试使用您自己的模块重新创建用户登录过程(我也尝试过)。