Собственно сабж. Хочу на страницах регистрации, входа и воостановления пароля сделать покрасивее формы, расположить по своему элементы. Версия Друпала 6. Как это можно сделать?
Еще вопрос, сделал темизацию блока для входа на сайт через добавление своего дизайна в block-user-0.tpl.php. Но стал появдяться значок крокозябры (квадратик), который портит мне дизайн, избавиться никак не могу. В page.tpl.php и block-user-0.tpl.php этого нет, непойму откуда он береться. Что делать?
Если все элементы остаются и меняется только их внешний вид, то ЦЦС все решает. Если вы хотите что-то добавить от себя, поищите на орге "темизация формы авторизации" Там что-то очень замороченное
«посмотри как здесь сделано. Если это то, что тебе нужно, то пиши - подскажу...»
Это как раз то что мне нужно, только у меня еще пара дополнительных полей (имя, каптча, дата рождения).
Далее темизацию меню входа делаем уже с помощью CSS.
2. Делаем формы входа/регистрации/восст. пароля на отдельных страницах:
2.1 В template.php добавляем функцию:
<?php function phptemplate_preprocess_page(&$vars) { global $user;
if(
arg(0) == 'user' && (arg(1) == 'login' || arg(1) == 'register' || arg(1) == 'password')){//если вызывается страница входа/регистрации/восст. пароля if ($user->uid == 0) { // и пользователь аноним $vars['template_files']['0'] = 'page_user_login'; // в качестве файла шаблона используем page_user_login.tpl.php
} switch (arg(1)) { case 'login': $vars['title'] = 'Вход'; //если страница входа, определяем заголовок и название страницы $vars['head_title'] = 'Вход'; break; case 'password': $vars['title'] = 'Забыли пароль?'; // аналогично для страницы восст. пароля $vars['head_title'] = 'Забыли пароль?'; break; case 'register': $vars['title'] = 'Регистрация'; // аналогично для страницы регистрации $vars['head_title'] = 'Регистрация'; break; } } return $vars; } ?>
2.2 копируем файл page.tpl.php и переименовываем его в page_user_login.tpl.php
2.3 в новом файле отключаем вывод tabs (удаляем строку, отвечающую за вывод. примерно она выглядит так <?php if ($tabs != ""): ?><?php print $tabs ?><?php endif; ?>). ну и если необходимо. дополнительно в этом же файле добавляем свои классы для заголовка страниц. У меня это выглядит так ( привожу участок кода, отвечающий за вывод основного материала страницы):
<?php <div id="content"> <?php print $header; ?> //выводим header <?php if (arg(1) == 'register') {?><h1 class="title users reg"><?php print $title ?></h1><?php } ?> // для страницы регистрации в title добавляем класс reg <?php if (arg(1) == 'login') {?><h1 class="title users login"><?php print $title ?></h1><?php } ?>// для страницы входа в title добавляем класс login <?php if (arg(1) == 'password') {?><h1 class="title users pass"><?php print $title ?></h1><?php } ?>// для страницы восст.пароля в title добавляем класс pass <?php if ($help != ""): ?>//если есть help <p id="help"><?php print $help ?></p>//выводим help <?php endif; ?> <?php if ($messages != ""): ?>//если есть message <div id="message"><?php print $messages ?></div>//выводим message <?php endif; ?> <div id = "user"> <div class = "topleft"><div class = "topright"></div></div>//вспомогательные DIVы <?php print($content) ?>// выводим контент <div class = "bottomleft"><div class = "bottomright"></div></div>//вспомогательные DIVы </div> </div> ?>
вот собственно и все...
Не забываем чистить кэш после обновлений.
Ага, я так понял нужно прописать свой нужный хтмл и пхп код между(например если это страница регистрации)
<?php if (arg(1) == 'register') {?>
Сюда переменные и формы для страницы регистрации
<?php } ?>
Тогда возникает еще вопрос, как узнать названия переменных форм, как вывести капчу и т.д
Собственно сложного ничего нет. Рассказываю по пунктам:
Все отлично работает, но нужно к странице регистрации прикрутить капчу или защиту какую нить иначе заспамят. Как вы кстати на сайте решаете эту проблему?
Комментарии
Еще вопрос, сделал темизацию блока для входа на сайт через добавление своего дизайна в block-user-0.tpl.php. Но стал появдяться значок крокозябры (квадратик), который портит мне дизайн, избавиться никак не могу. В page.tpl.php и block-user-0.tpl.php этого нет, непойму откуда он береться. Что делать?
это русская буква не в той кодировке. надо было в utf-8 редактировать page.tpl.php
Сохраните в кодировке UTF8. На крайняк перепишите код и не копируйте ниоткуда )
Насчет буквы я понял, НО в шаблонах ее нет. Вот кусочек page.tpl
<?php if ($right) { ?><div id="rightbar">
<div class="ind">
<?php print $right ?>
</div>
</div><?php } ?>
А вставляется она перед началом вывода блока <?php print $right ?>. В файле блока такого тоже нет.
Если все элементы остаются и меняется только их внешний вид, то ЦЦС все решает. Если вы хотите что-то добавить от себя, поищите на орге "темизация формы авторизации" Там что-то очень замороченное
http://drupal.org/node/311880
Опять вернулся к темизации страницы регистрации и входа, проблема так и не решена.
Помогите плиз с рабочим примером
посмотри как здесь сделано. Если это то, что тебе нужно, то пиши - подскажу...
«посмотри как здесь сделано. Если это то, что тебе нужно, то пиши - подскажу...»
Это как раз то что мне нужно, только у меня еще пара дополнительных полей (имя, каптча, дата рождения).
мне тоже интересно
Собственно сложного ничего нет. Рассказываю по пунктам:
1. заменяем форму входа на сайт:
1.1 В template.php темы добавляем функцию:
<?php
function phptemplate_flat_login() {
global $user;
if (!$user->uid) {
$messages= '<ul>
<li class = "login">'.l('Вход','user/login', array('attributes' => array('rel'=>'nofollow')) ).'</li>
<li>'.l('Регистрация', 'user/register', array('attributes' => array('rel'=>'nofollow')) ).'</li>
<li>'.l('Забыли пароль?', 'user/password', array('attributes' => array('rel'=>'nofollow'))).'</li>
</ul>';
}
else
{
$messages= '<ul>
<li class = "login">'.l('Моя анкета', 'user/'.$user->uid).'</li>
<li>'.l('Изменить', 'user/' . $user->uid . '/profile/profile').'</li>
<li>'.l('Выход', 'logout').'</li>
</ul>';
}
return $messages;
}
?>
Этот прием уже описывался на этом сайте...
1.2 В файл page.tpl.php в нужном Вам месте вставляем соответствующий вызов функции:
<?php
<div id="login"><?php echo phptemplate_flat_login();?></div>
?>
Далее темизацию меню входа делаем уже с помощью CSS.
2. Делаем формы входа/регистрации/восст. пароля на отдельных страницах:
2.1 В template.php добавляем функцию:
<?php
function phptemplate_preprocess_page(&$vars) {
global $user;
if(
arg(0) == 'user' && (arg(1) == 'login' || arg(1) == 'register' || arg(1) == 'password')){//если вызывается страница входа/регистрации/восст. пароляif ($user->uid == 0) { // и пользователь аноним
$vars['template_files']['0'] = 'page_user_login'; // в качестве файла шаблона используем page_user_login.tpl.php
}
switch (arg(1)) {
case 'login':
$vars['title'] = 'Вход'; //если страница входа, определяем заголовок и название страницы
$vars['head_title'] = 'Вход';
break;
case 'password':
$vars['title'] = 'Забыли пароль?'; // аналогично для страницы восст. пароля
$vars['head_title'] = 'Забыли пароль?';
break;
case 'register':
$vars['title'] = 'Регистрация'; // аналогично для страницы регистрации
$vars['head_title'] = 'Регистрация';
break;
}
}
return $vars;
}
?>
2.2 копируем файл page.tpl.php и переименовываем его в page_user_login.tpl.php
2.3 в новом файле отключаем вывод tabs (удаляем строку, отвечающую за вывод. примерно она выглядит так
<?php if ($tabs != ""): ?><?php print $tabs ?><?php endif; ?>
). ну и если необходимо. дополнительно в этом же файле добавляем свои классы для заголовка страниц. У меня это выглядит так ( привожу участок кода, отвечающий за вывод основного материала страницы):<?php
<div id="content">
<?php print $header; ?> //выводим header
<?php if (arg(1) == 'register') {?><h1 class="title users reg"><?php print $title ?></h1><?php } ?> // для страницы регистрации в title добавляем класс reg
<?php if (arg(1) == 'login') {?><h1 class="title users login"><?php print $title ?></h1><?php } ?>// для страницы входа в title добавляем класс login
<?php if (arg(1) == 'password') {?><h1 class="title users pass"><?php print $title ?></h1><?php } ?>// для страницы восст.пароля в title добавляем класс pass
<?php if ($help != ""): ?>//если есть help
<p id="help"><?php print $help ?></p>//выводим help
<?php endif; ?>
<?php if ($messages != ""): ?>//если есть message
<div id="message"><?php print $messages ?></div>//выводим message
<?php endif; ?>
<div id = "user">
<div class = "topleft"><div class = "topright"></div></div>//вспомогательные DIVы
<?php print($content) ?>// выводим контент
<div class = "bottomleft"><div class = "bottomright"></div></div>//вспомогательные DIVы
</div>
</div>
?>
вот собственно и все...
Не забываем чистить кэш после обновлений.
Спасибо, все работатет. А как теперь можно темизировать непосредственно сами формы регистрации и входа, расположить их в нужном порядке?
Ага, я так понял нужно прописать свой нужный хтмл и пхп код между(например если это страница регистрации)
<?php if (arg(1) == 'register') {?>
Сюда переменные и формы для страницы регистрации
<?php } ?>
Тогда возникает еще вопрос, как узнать названия переменных форм, как вывести капчу и т.д
по поводу темизации форм прекрасно описано здесь...
Все отлично работает, но нужно к странице регистрации прикрутить капчу или защиту какую нить иначе заспамят. Как вы кстати на сайте решаете эту проблему?
Поставьте модуль captcha.
Я пользуюсь Captcha + hidden_captcha
Этот модуль установлен. Но при темизации регистрации по вашему способу я незнаю как вывести каптчу в шаблоне.
а у меня только 1 страница получилась... регистрации а остальные как же?
вру. все три.
а как убрать над формами
ссылки
Вход
Регистрация
Забыли пароль?
---
а Забыли пароль?
оставить на странице авторизации???
theme_menu_local_tasks(&$variables)
убрал функцию function phptemplate_flat_login() из пейдж-юзер
---
theme_menu_local_tasks(&$variables) это к востановлению пароля?
theme_menu_local_tasks(&$variables) это к
а как убрать над формами
ссылки
Вход
Регистрация
Забыли пароль?
ну я их по другому убрал...