Есть такой модуль "Remember me", он добавляет чекбокс «Запомнить меня» к форме входа. Но у меня своя форма входа, вот как бы в нее вставить этот чекбокс. Может кто подскажет код, который можно вставить в свою форму?
Своя форма у вас написана с использованием Form API или в виде сырого HTML?
Если первое, то все решается просто - используйте drupal_get_form в своем модуле, создающем кастомную форму входа.
как-то все это очень неправильно.
Вам нужно создать свой модуль, который будет альтерить форму логина нужным вам образом (я так понимаю, вас только внешний вид не устроил)
И голочку «запомнить меня» прикручивать не придется — сама встанет. И интеграция с другими модулями будет обеспечена (например, с LoginToboggan)
Комментарии
по идее вам не надо вставлять код в свою форму, а посмотреть как модуль "Remember me" вставляет чекбокс в стандартную форму и немного допилить его
Своя форма у вас написана с использованием Form API или в виде сырого HTML?
Если первое, то все решается просто - используйте drupal_get_form в своем модуле, создающем кастомную форму входа.
я уж не помню где подсмотрел это решение, форма делается через block-user-0.tpl.php
<?php<div id="block-user-auth" class="clear-block block block-<?php print $block->module ?>">
<div id="content">
<form id="auth_form" action="" method="POST">
<input name="name" type="text" value="<?php print t('LName') ?>" onFocus="this.value = "";" id="auth_login" size="12" maxlength="120"/>
<input type="password" name="pass" value="<?php print t('LPassword') ?>" onFocus="this.value = "";" id="auth_password" size="12" maxlength="120"/>
<span class="enter"><a href="" onClick="getElementById('auth_form').submit(); return false;"><?php print t('Enter') ?></a> </span>
<div id="auth_registration">
<a href="http://sushifan.ru/?q=user/password"><?php print t('Forgot password?') ?></a> / <a href="/user/register"><?php print t('LRegister') ?></a>
</div>
<input type="hidden" name="form_build_id" id="form-<?php print drupal_get_token('user_login_block'); ?>" value="form-<?php print drupal_get_token('user_login_block'); ?>" /><br />
<input type="hidden" name="form_id" id="edit-user-login-block" value="user_login_block" />
</form>
</div>
</div>?>
и в template.php
<?phpfunction get_user_login_form() {
$form_id = 'user_login';
$form = array();
$form['name'] = array(
'#type' => 'textfield',
'#maxlength' => USERNAME_MAX_LENGTH,
'#required' => TRUE,
'#attributes' => array('tabindex' => '1'),
);
$form['pass'] = array(
'#type' => 'password',
'#required' => TRUE,
'#attributes' => array('tabindex' => '2'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Log in'),
'#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;
}?>
как-то все это очень неправильно.
Вам нужно создать свой модуль, который будет альтерить форму логина нужным вам образом (я так понимаю, вас только внешний вид не устроил)
И голочку «запомнить меня» прикручивать не придется — сама встанет. И интеграция с другими модулями будет обеспечена (например, с LoginToboggan)
да, думаю вы правы