Возможно ли скрыть часть кода шаблона от незарегистрированного пользователя?

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

Аватар пользователя Колобок33 Колобок33 14 июня 2011 в 19:35

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

Создал отдельный шаблон страницы входа (логин пароль). Но когда вводишь пароль и логин, остаешься на том же шаблоне. Можно зделать редирект на другую страницу, это понятно. Но мне нужна эта страница www.сайт/user. Может шаблон входа (page-user.tpl)его отображение для зарегистрированных и не зарегистрированных пользователей можно изменить другим способом?
Поскольку не будешь же под каждого зарегистрированного пользователя делать шаблоны типа page-user-1.tpl page-user-2.tpl page-user-3.tpl.

Вот и подумал, что пока вход не совершен, на странице формы одно отображение, а ввел - полоучаешь другое, в принципе логично. Вопрос как?

Комментарии

Аватар пользователя Колобок33 Колобок33 15 июня 2011 в 17:09

[РЕШЕНО!]Возможно ли скрыть часть кода шаблона от незарегистрированного пользователя?

Не уверен, что способ идеальный, но меня на данном этапе устроил.

Как я уже писал в начале, темезировав страницу с формой логина и паролем page-user.tpl.php столкнулся с проблемой, что после входа редирект происходит в том же шалбоне, а из шаблона было убрано все кроме самой формы, шапки (без кнопок основного меню) и переменных для вывода контента, хелпа и служебных сообщений. Выходит, что входишь и визуально нет у тебя ни...х.. чего, простите...

А поскольку адрес страницы теперь: www.сайт/user/номер пользователя, выходит, что теперь под каждого авторизированного делать шаблон типа page-user-2.tpl, page-user-3.tpl, page-user-4.tpl и т.д.?

Самый простой способ настроить редирект на какую нибудь страничку при помощи Triggers, но тогда зайдя на свою страницу user/ все равно будет тот же пустой шаблон. Вот я и решил просто спрятать от глаз незарегистрированного пользователя часть кода страницы.

Для этого с подсказки моего "молчаливого друга"(надеюсь xxandeadxx не в обиде :))), заменив различия в строках кода шаблона на переменные, значения которых будут выводиться в зависимости от значения $user->uid состряпал такой вот php код:
<?php
global $user;
if ($user->uid != 0) { // если id посетителя не 0 - то это авторизированный пользователь
//для него одни значения переменных
$var_1='<код>';
$var_2='<код>';
$var_3='<код>';
$var_4='<код>';
}else{// а это покажем не авторизированному пользователю
$var_1='<пусто>';
$var_2='<пусто>';
$var_3='<пусто>';
$var_4='<пусто>';
?>

который вынес в отдельный файлик и поместил его в папку темы. А в самом шаблоне вставил команду include 'на файл.php'

На оригинальность не претендую.
Авось кому пригодится.
Подскажите решение лучше, с удовольствием поучусь...:))

Аватар пользователя Колобок33 Колобок33 16 июня 2011 в 10:11

"otmoroz" wrote:
«if $user->uid>0 {print $node->teaser} else {print t('You not have permission to see this content, son')}»
Ага, это я видел, в смысле натыкался когда решение искал. Его можно применять и к части текста. Типа "хотите читать скрытый текст, зарегистрируйтесь", ну или чего там надо, типа " а дальше только для взрослых"...:))

Есть еще вариант для блоков, но у блоков и так в движке есть разграничение по ролям, это наверно если к примеру не для одной категории не подходит, а для кого-то конкретно спрятать надо... тогда наверно... Ну в общем нужная веСчь! ура...