Как определить разные главные страницы для разных статусов пользователя?
Прислано: argon
вс, 20/07/2008 - 23:59
Встала такая задачка - нужно чтобы для залогиненных пользователей и гостей главной были разные страницы,
так как форма регистрации помещается прямо на главной.
Поискал, как можно это сделать, нашел только нечто близкое здесь - http://www.drupal.ru/node/4174 но это не то, - разовые редиректы.
Можно еще по другому попробовать решить вопрос, - но... как управлять показом блоков для залогиненных/незалогиненных пользователей?
И в этом случае... как форму регистрации user/register поместить в виде блока на любую страницу?
- argon's blog
- Для комментирования войдите или зарегистрируйтесь
Как вариант: Создаем ноду с заголовком и пустым телом. Ставим ее главной. Делаем c помощью Views два блока. В один размещаем инфу для гостей, во второй - для регистрированных. Блоки настраиваем на показ для своих ролей и только на указанной странице.
- Для комментирования войдите или зарегистрируйтесь
ничего на понял. а стандартный блок "Вход в систему" уже не подходит? Он ведь исчезает, если пользователь залогинен
- Для комментирования войдите или зарегистрируйтесь
Блок исчезает, но контент заглавной остается тем же.
argon хочет разный контиент на заглавной страницы для разных пользователей. По остальному сайту ходи как хочешь... Или я что-то не так понял?
Пусть в качестве заглавной надо отобразить просто разный текст.
Создаем пустую ноду например node/1. Указываем заглавной страницей. Что мы увидим на морде - Только заголовок. Делаем блок с текстом для гостей и настраиваем его на показ в регионе content, только в ноде node/1 и только для роли anonymous user.
Делаем второй блок с текстом для зарегистрированных пользователей и настраиваем его на показ в регионе content, только в ноде node/1 и только для роли registered user. Теперь гости увидят заголовок и их текст, а если залогинятся, то тот же заголовок и другой текст на заглавной. Если заголовок не нужен, то можно поменять условия его вывода в файле page.tpl.php (не выводить на заглавной).
А вот если, надо будет отобразить на заглавной список материалов, при чем разный для гостей и пользователей, то понадобится через View создать соответствующие блоки и настроить их отображение, как указано выше.
- Для комментирования войдите или зарегистрируйтесь
2 beerman, - нужен блок "регистрация", а не "авторизация".
т.е. блок первичной регистрации.
Контент я хочу разный. соответственно 2 пути решения - либо на каждый блок вешать "управление показом в зависимости от статуса пользователя", либо редиректить пользователей на разные главные, в зависимости от статуса.
2 direqtor - т.е. через вьюс получится? ну вариант... хотя не легкий... мне казалось.... можно ли как-то проще решить? может сниппетами? И такой вопрос - как вообще сделать блок "регистрация?" т.е. можно ли вывести содержание /user/register - блоком?
- Для комментирования войдите или зарегистрируйтесь
Может и есть какой-нибудь модуль на эту тему. Но если по-простому.
Открой страницу. Скопируй нужный код в блок, который создашь, там всего лишь пара полей и кнопка. Потом размести в нужном месте сайта для анонимных пользователей.
- Для комментирования войдите или зарегистрируйтесь
О. точно )). А я чет не сообразил ))). Пасиб
про управление блоками здесь еще вариант нашел - http://setegnom.com/node/302
- Для комментирования войдите или зарегистрируйтесь
Можно и так, но в настройках блоков есть список ролей пользователей. Поставил нужные галочки – и все.
- Для комментирования войдите или зарегистрируйтесь
Здравствуйте. Стоит очень похожая задача, по-этому не стал создавать отдельной темы.
Есть несколько ролей. И есть модуль Content Profile, с помощью для каждой роли была создана своя анкета в профиле. Необходимо, что бы когда человек заходит на сайт шла проверка заполнена ли анкета и если нет, то выдавалась ссылка на нее, если да - просто обычный текст сайта.
<?php
global $user;
$fields = array();
$sql = "SELECT title FROM {node} WHERE (uid=".$user->uid.") AND ((type='owner_info') OR (type='adv_own_info')) LIMIT 3;";
$result = db_query($sql);
while ($record = db_fetch_object($result)) {
$fields[] = $record;
}
print_r($fields);
$title = count($fields);
$userroles = array($user);
if ($title==NULL && in_array('Роль1', $userroles)) {
print "Заполните анкету.";
elseif ($title!=NULL) {
print "Добро пожаловать на стартовую тестовую страницу нашего проекта. Скоро будет адекватней текст и приветствие.";
?>
Этот код я вставлял в ноду, которая установлена как главная страница сайта - для тех у кого заполнена анкета все работает прекрасно, для тех же у кого пустая в ноде выводится все кроме непосредственно "заполните анкету."
Подскажите как справиться с данной проблемой.
- Для комментирования войдите или зарегистрируйтесь




Комментарии