Я пытаюсь создать пользовательскую форму входа в drupal-6.22, используя модуль регистрации по электронной почте и тему danland.
в файле template.php я внес несколько изменений как
function get_user_login_form() {
$form_id = 'user-login-form';
$form = array();
$form['name'] = array(
'#type' => 'textfield',
'#maxlength' => USERNAME_MAX_LENGTH,
'#required' => TRUE,
'#size' => 10,
'#attributes' => array('tabindex' => '1','title'=>'E-mail'),
);
$form['pass'] = array(
'#type' => 'password',
'#required' => TRUE,
'#size' => 10,
'#attributes' => array('tabindex' => '2','title'=>'Password'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t(''),
'#weight' => 2,
'#attributes' => array('tabindex' => '3')
);
$form['#validate'] = user_login_default_validators();
$form['#build_id'] = sprintf('form-%s', md5(uniqid(mt_rand(), TRUE)));
$form_state = array();
drupal_prepare_form($form_id, $form, $form_state);
drupal_process_form($form_id, $form, $form_state);
$out = new stdClass;
$out->form_start =
sprintf("<form method='post' accept-charset='UTF-8' action='%s'>",
url('user/login'));
$out->form_end = "</form>";
$out->name = drupal_render($form['name']);
$out->pass = drupal_render($form['pass']);
$out->submit =
drupal_render($form['form_id']) .
drupal_render($form['form_build_id']).
drupal_render($form['submit']);
return $out;
}
И в page.tpl.php я вставил этот код
<?php
$login_form = get_user_login_form();
?>
<?php print $login_form->form_start; ?>
<div class="name-tag"><?php print $login_form->name; ?></div><div class="pass-tag"><?php print $login_form->pass; ?></div><div class="submit-tag"><?php print $login_form->submit; ?></div>
<?php print $login_form->form_end;
?>
тогда я пытаюсь войти, используя электронную почту, но она не работает. этот код генерирует HTML-форму как
<form method='post' accept-charset='UTF-8' action='/dru/user/login'> <div class="name-tag"><div class="form-item" id="edit-name-1-wrapper">
<input type="text" maxlength="60" name="name" id="edit-name-1" size="10" value="" tabindex="1" title="E-mail" class="form-text required" />
</div>
</div><div class="pass-tag"><div class="form-item" id="edit-pass-1-wrapper">
<input type="password" name="pass" id="edit-pass-1" maxlength="128" size="10" tabindex="2" title="Password" class="form-text required" />
</div>
</div><div class="submit-tag"><input type="hidden" name="form_id" id="edit-user-login-form" value="user-login-form" />
<input type="hidden" name="form_build_id" id="form-8d944c2ceca0b8a4141c73564d35b69b" value="form-8d944c2ceca0b8a4141c73564d35b69b" />
<input type="submit" name="op" id="edit-submit-2" value="" tabindex="3" class="form-submit" />
</div>
</form>
здесь, если я отключаю модуль регистрации по электронной почте и меняю «title» => «E-mail» на «title» => «name» в теге атрибута, он работает нормально для имен. независимо от того, какой идентификатор CSS он генерирует, он добавляет дополнительный текст «-1» в вывод html. я думаю, что это создает проблему.