2013-11-26 2 views
1

Привет я использовал этот кодDrupal форма Войти настроить

<?php 
    $elements = drupal_get_form("user_login"); 
    $form = drupal_render($elements); 

    echo $form; 
?> 

получить по умолчанию Drupal формы входа в систему для моего сайта, но мне нужно настроить HTML, я нашел несколько страниц в модуле/пользователей, но не понять, как настроить структуру.

+1

Что именно вы пытаетесь сделать? – pamatt

+0

@pamatt: Я пытаюсь создать форму для входа для пользователей с именем пользователя и паролем и использовал указанную выше форму, но я хочу настроить структуру формы. Где я могу получить структуру формы, чтобы я мог ее настроить? – Ron

ответ

1

использовать это в template.php

function themename_theme() { 
    $items = array(); 
    $items['user_login'] = array(
    'render element' => 'form', 
    'path' => drupal_get_path('theme', 'corporateclean') . '/templates', 
    'template' => 'user-login', 

); 

и создать папку шаблона и в том, что создать файл пользовательского login.tpl.php и в этом файле вы можете поместить ваш HTML и можете настроить Друпал логин

1

Форма входа пользователя для Drupal построена функцией user_login в user.module с использованием Drupal Form API. Если вам необходимо настроить его, вы должны сделать это с помощью hook_form_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 

    } 
} 

** EDIT, на ваш комментарий **

Вам не нужно вызывать функцию YOUR_MODULE_NAME_form_alter(): Drupal делает это для вас с помощью механизма hook каждый раз, когда ему нужно построить форму, и, когда $form_id=='user_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')); 

в $ форма массив передается по ссылке на ваш hook_form_alter() перед тем, как оказывается, что позволяет для настройки. Итак, допустим, что вы хотите изменить метку текстового поля для имени пользователя от «Имени пользователя», чтобы «Имя пользователя», вы пишете

$form['name']['#title'] = t("Name of the User"); 

в пользовательском коде. Если вы хотите добавить еще одно поле в форме (текстовой, например), вы

$form['otherfield'] = array(
    '#title' => t('My new custom textarea'), 
    '#type' => 'textarea', 
    '#description' => t("A description of what this area is for"), 
    '#cols' => 10, 
    '#rows' => 3, 
    '#weight' => 20, 
); 

и Drupal добавит поле в форме регистрации пользователя.

Существует много разных типов полей и свойств, которые вы можете настроить таким образом: я рекомендую вам полностью прочитать документацию API формы. Таким образом, вы позволяете Drupal заботиться о создании, переводе, рендеринге, проверке и представлении формы, а также при необходимости разрешать другим модулям манипулировать вашей формой.

Надеюсь, это ясно, хорошо провести время.

+0

Привет, pamatt У меня есть два вопроса в первую очередь: как я могу вызвать функцию на странице page.tpl.php, если функция axiton _form_alter во-вторых заключается в том, что вместо моего пользовательского кода я должен разместить общий html? – Ron

+0

Я отредактировал ответ, чтобы уточнить, что вы должны делать. – pamatt

+0

Эй, @pamatt, не могли бы вы отправить мне свой почтовый ящик, чтобы я мог поделиться вам кодом? – Ron

Смежные вопросы