Искал способы реализации и, помоему, наиболее простое и гибкое решение:
<div id="login">
<?php global $user; ?>
<?php if ($user->uid) : ?>
Здравствуйте: <?php print l($user->name,'user/'.$user->uid); ?> | <?php print l("Выход","logout"); ?>
<?php else : ?>
<form action="?q=user&<?php print drupal_get_destination() ?>" method="post" id="user-login">
<a href="?q=user/register" title="Создать нового пользователя">Регистрация</a> |
<a href="?q=user/password" title="Затребовать новый пароль">?</a>
<input type="text" maxlength="60" name="edit[name]" id="edit-name" size="12" value="" class="form-text required" />
<input type="password" maxlength="" name="edit[pass]" id="edit-pass" size="12" class="form-text required" />
<input type="submit" name="op" value="Вход" class="form-submit" />
<input type="hidden" name="edit[form_id]" id="edit-user-login" value="user_login" />
</form>
<?php endif; ?>
</div>
<?php global $user; ?>
<?php if ($user->uid) : ?>
Здравствуйте: <?php print l($user->name,'user/'.$user->uid); ?> | <?php print l("Выход","logout"); ?>
<?php else : ?>
<form action="?q=user&<?php print drupal_get_destination() ?>" method="post" id="user-login">
<a href="?q=user/register" title="Создать нового пользователя">Регистрация</a> |
<a href="?q=user/password" title="Затребовать новый пароль">?</a>
<input type="text" maxlength="60" name="edit[name]" id="edit-name" size="12" value="" class="form-text required" />
<input type="password" maxlength="" name="edit[pass]" id="edit-pass" size="12" class="form-text required" />
<input type="submit" name="op" value="Вход" class="form-submit" />
<input type="hidden" name="edit[form_id]" id="edit-user-login" value="user_login" />
</form>
<?php endif; ?>
</div>
Вставлять в нужном месте page.tpl.php
позицию можна задать свойсвами css:
#login {
position: absolute;
right:0.3em;
top:3.9em;
}
position: absolute;
right:0.3em;
top:3.9em;
}
(проверялось на версии 4.7.3)
Комментарии
или я одаренный, или эта форм экшн глючит:
он пытается перекинуть вот так:
http://site.ru/drupal/%3Ftime%3D1159343430?time=1159343430
и соотвественно 404
в то время как оригинальная форма перекидывает на:
http://site.ru/drupal/?time=1159343430
Тоже экспериментировал с горизонтальным представлением, пытался так как romand@drupal.org, но почему-то не получилось - после авторизации приходилось обновлять страницу чтобы в админку попасть.
Решил проблему следующим образом: у элементов формы есть префикс и суфикс - вот туда и закинул код, который находится до и после элементов форм. вроде получилось нормально.
2 smile:
да, вылазит местами, если выйти и сразу войти,
надо подумать как от этого избавится
Фидбэк такой: если вставлять представленный код как новый блок - не работает. Баг я описал выше.
Если наглухо вбивать в код страницы - то работает, но естественно текст весь нужно переводить в utf.
"наиболее простое и гибкое решение"
Я сам недавно научился работать с формами, так что phptamplate_($form) это просто супер!
Тут подробно описано http://www.nicklewis.org/node/845