Drupal登录表单自定义
嗨,我用过这个代码Drupal登录表单自定义,drupal,drupal-7,drupal-views,drupal-theming,drupal-forms,Drupal,Drupal 7,Drupal Views,Drupal Theming,Drupal Forms,嗨,我用过这个代码 <?php $elements = drupal_get_form("user_login"); $form = drupal_render($elements); echo $form; ?> 要获取我的站点的默认Drupal登录表单,但我需要自定义HTML,我在module/users中找到了一些页面,但不了解如何自定义结构。Drupal的用户登录表单是由user.module中的user\u login函数使用创建的。如果您需
<?php
$elements = drupal_get_form("user_login");
$form = drupal_render($elements);
echo $form;
?>
要获取我的站点的默认Drupal登录表单,但我需要自定义HTML,我在module/users中找到了一些页面,但不了解如何自定义结构。Drupal的用户登录表单是由
user.module
中的user\u login
函数使用创建的。如果您需要自定义它,您应该在模块中使用hook\u form\u alter()进行自定义
function YOUR_MODULE_NAME_form_alter(&$form, &$form_state, $form_id) {
if ($form_id=='user_login') {
// YOUR CUSTOM CODE FOR THE FORM GOES HERE
}
}
**编辑,在你的评论之后**
您不需要调用YOUR\u MODULE\u NAME\u form\u alter()
函数:Drupal每次需要构建表单时都会通过钩子机制为您这样做,并且,当$form\u id=='user\u login'
时,它会修改登录表单以允许您进行自定义。Drupal做这件事的方式在Drupal.org中有详细讨论,只需按照我在这个答案开头所写的链接
用户登录表单在user.module
中以这种方式声明:
// Display login form:
$form['name'] = array('#type' => 'textfield',
'#title' => t('Username'),
'#size' => 60,
'#maxlength' => USERNAME_MAX_LENGTH,
'#required' => TRUE,
);
$form['name']['#description'] = t('Enter your @s username.', array('@s' => variable_get('site_name', 'Drupal')));
$form['pass'] = array('#type' => 'password',
'#title' => t('Password'),
'#description' => t('Enter the password that accompanies your username.'),
'#required' => TRUE,
);
$form['#validate'] = user_login_default_validators();
$form['actions'] = array('#type' => 'actions');
$form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Log in'));
$form数组在呈现之前通过引用传递给您的hook\u form\u alter()
,允许自定义。那么,假设您想将用户名的文本字段的标签从“Username”更改为“用户名”,您可以这样写
$form['name']['#title'] = t("Name of the User");
在自定义代码中。如果要向表单中添加另一个字段(例如文本区域),则需要
Drupal会将该字段添加到用户登录表单中
有许多不同类型的字段和属性可以通过这种方式进行自定义:我鼓励您充分阅读表单API文档。通过这种方式,您可以让Drupal负责表单生成、翻译、呈现、验证和提交,还可以允许其他模块在需要时操作表单
我希望这是清楚的,祝你有一个愉快的一天。在template.php中使用它
function themename_theme() {
$items = array();
$items['user_login'] = array(
'render element' => 'form',
'path' => drupal_get_path('theme', 'corporateclean') . '/templates',
'template' => 'user-login',
);
然后创建一个模板文件夹,并在其中创建一个文件user-login.tpl.php,在这个文件中,您可以放置html并自定义drupal登录您到底想做什么?@pamatt:我正在尝试使用用户名和密码为用户创建一个登录表单,并使用上述表单,但我想自定义表单的结构。我在哪里可以得到表单的结构,这样我就可以定制它了??嗨,pamatt,首先我有两个问题:如果函数是axiton,我如何调用page.tpl.php页面中的函数?第二个问题是,我应该在自定义代码的位置放置整个html吗?嘿@pamatt,你能给我发送你的邮件id吗可以和你分享一些代码吗?Ron除了在Stack Overflow上发布我的电子邮件之外,我没有其他方法可以向你发送我的电子邮件,我不会这么做。不管怎样,这个论坛是为了分享问题和解决方案,你可以在这里安全地分享你的代码:其他人可能会进来,为你寻找的答案贡献力量,其他人可能也会找到你想要的答案。嗨,pamatt,我已经创建了block.tpl.php,我可以通过将其与菜单挂钩来调用我的自定义表单,但在这种情况下,drupals的默认功能不起作用。检查此url,如果我运行“忘记密码未到达”的“密码”字段。如果使用Drupal默认表单,您将获得Drupal的默认功能。你的block.tpl.php在做什么?您需要自定义登录表单的具体用途是什么?
function themename_theme() {
$items = array();
$items['user_login'] = array(
'render element' => 'form',
'path' => drupal_get_path('theme', 'corporateclean') . '/templates',
'template' => 'user-login',
);