Отдельная страница для регистрации и логина

Главные вкладки

Аватар пользователя Dreamer Dreamer 20 августа 2007 в 20:47

Нужно сделать отдельную страницу для региситрации и логина.
Я нашел такое решение
вставляется функция в template.php, тема http://drupal.org/node/154113
Стоит Drupal 5.1
/**
* This snippet loads a custom page-login.tpl.php layout file when
* users click through to the login, request password or register pages
*/

function _phptemplate_variables($hook, $variables = array()) {
switch ($hook) {
case 'page':
global $user;
if (arg(0) == 'user'){
if (!$user->uid) { //check to see if the user is logged in. If not display the special login page layout
$variables['template_file'] = 'page-login';
}
elseif (arg(1) == 'login' || arg(1) == 'register' || arg(1) == 'password' ) {
$variables['template_file'] = 'page-login';
}
}
break;
}

return $variables;
}

но после вставки этой функции у меня просто не грузится сайт.

Комментарии

Аватар пользователя edhel edhel 20 августа 2007 в 21:04

0) действительно, чем стандартная страница /user не подходит?
1) стОит журнал ошибок пхп и/или друпала посмотреть
2) может файл page.login.tpl.php не находит?

Аватар пользователя Dreamer Dreamer 20 августа 2007 в 21:07

Вы имеете ввиду
/**
* This snippet loads a custom page-login.tpl.php layout file when
* users click through to the login, request password or register pages
*/

function _phptemplate_variables($hook, $variables = array()) {
switch ($hook) {
case 'page':
global $user;
if (arg(0) == 'http://ваш_сайт/user'){
if (!$user->uid) { //check to see if the user is logged in. If not display the special login page layout
$variables['template_file'] = 'page-login';
}
elseif (arg(1) == 'http://ваш_сайт/user/login' || arg(1) == 'http://ваш_сайт/user/register' || arg(1) == 'http://ваш_сайт/user/password' ) {
$variables['template_file'] = 'page-login';
}
}
break;
}

return $variables;
}

Так страницы грузятся, но страница page-login.tpl.php не запускается вместо обычной регистрации.

Аватар пользователя Dreamer Dreamer 21 августа 2007 в 14:17

Возможно я не правильно выражаюсь но вы меня уже второй раз не так понимаете.
Нужно именно отдельная страница page-login.tpl.php. Чтобы можно было задать свое оформление для этой страницы.
Подскажите как правильно написать функцию проверки которая будет переадресовывать на страницу page-login.tpl.php.
Вот здесь пример с подобной реализацией http://drupal.org/node/154113, но их функция у меня не работает возможно проблема в версии у меня Drupal 5.1.

Аватар пользователя edhel edhel 21 августа 2007 в 17:32

На http://drupal.org/node/154242 оформление самой формы, а не всей страницы.

Повторюсь — смотрите логи. Не грузится сайт ("белый экран смерти") из-за ошибок в ПХП. Там и строчку Вам укажут и станет всё понятнее мб.

Аватар пользователя Dreamer Dreamer 21 августа 2007 в 18:56

Все нормально функционирует, мне нужно просто задать свое оформление для этих страниц.
Shedko спасибо этот вариант в принципе подойдет если он заработает, я поменяю форму, а потом уберу показ блоков. Конечно лучше бы страницу менять, так намного проще было бы.

Аватар пользователя Dreamer Dreamer 21 августа 2007 в 21:50

Насчет http://www.lullabot.com/articles/hacking_phptemplate, это решение у меня не работало потом я почитал коментарии,
проблема в том что функция которую они предлагают имеет название которое уже есть в файле tamlplate и поэтому после вставки функции страницы переставали грузится единственное решение которое я пока нашел это удалить ту функцию которая была в этом файле и вместо нее вставить предложенную.
Был бы еще способ настроить название полей вместо "Адрес электронной почты:" и "Имя пользователя:" прописать свои
и вообще отредактировать теги в форме по своему усмотрению.

Аватар пользователя edhel edhel 22 августа 2007 в 5:06

Был бы еще способ настроить название полей вместо "Адрес электронной почты:" и "Имя пользователя:" прописать свои
и вообще отредактировать теги в форме по своему усмотрению.

С помощью http://api.drupal.org/api/function/hook_form_alter/5 можно изменить любую форму (добавить, удалить, изменить поля).

$form['#theme'] = 'my_theme_func'; - назначить функцию для темизации формы.