Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal登录表单自定义_Drupal_Drupal 7_Drupal Views_Drupal Theming_Drupal Forms - Fatal编程技术网

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',

  );