好的,这是我的钩形式alter function。它导致现场的所有注册表格被覆盖,我不想要,因为我只想在这个页面上。
function special_registration_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'user_register') {
drupal_set_title(t('Custom registration'));
$form['firstname'] = array('#type' => 'textfield',
'#title' => t('First Name: *'),
'#required' => TRUE,
'#size' => 45,
'#weight' => - 100,);
$form['lastname'] = array('#type' => 'textfield',
'#title' => t('Last Name: *'),
'#required' => TRUE,
'#size' => 45,
'#weight' => - 99,);
}
我只在这个页面上捕获并存储在另一个表中的名字和姓氏。
在其他页面上,我只想要一个好的老式表格。我还需要改变体重吗?我知道我错过了一些基本的东西。
答案 0 :(得分:2)
您只需要使用arg或$ _GET ['q']检查当前页面。
例如:
function special_registration_form_alter(&$form, $form_state, $form_id) {
if ($_GET['q'] !== 'whatever/path' ) { return false; }
..rest of code..
}
答案 1 :(得分:2)
如果您想将表单更改限制为特定页面,您只需将页面检查添加到表单ID检查,例如:
function special_registration_form_alter(&$form, $form_state, $form_id) {
// Alter the registration form, but only on 'user/register' pages
if ($form_id == 'user_register' && 'user' == arg(0) && 'register' == arg(1)) {
// snipped alteration code
}
}
答案 2 :(得分:0)
您也可以在Core列表模块中使用Profile模块。它将在没有任何编程的情况下解决这个问题,fyi。
答案 3 :(得分:0)
实施hook_user()
;该功能允许更改用户在网站上注册时呈现的表单。
user.module使用hook_user()
,它独立于配置文件模块。
将挂钩定义为hook_user($op, &$edit, &$account, $category = NULL)
时,参数$op
将在向用户显示注册表单时包含值'register'
。在这种情况下,模块会返回要添加到注册表单的表单字段。
答案 4 :(得分:0)
如果您不需要创建用户帐户,例如简单的事件注册。如果您只是收集名称,则可以使用webform模块。