Как определить разные главные страницы для разных статусов пользователя?

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

Аватар пользователя argon argon 21 июля 2008 в 3:59

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

Поискал, как можно это сделать, нашел только нечто близкое здесь - http://www.drupal.ru/node/4174 но это не то, - разовые редиректы.

Можно еще по другому попробовать решить вопрос, - но... как управлять показом блоков для залогиненных/незалогиненных пользователей?
И в этом случае... как форму регистрации user/register поместить в виде блока на любую страницу?

Комментарии

Аватар пользователя direqtor direqtor 21 июля 2008 в 6:48

Как вариант: Создаем ноду с заголовком и пустым телом. Ставим ее главной. Делаем c помощью Views два блока. В один размещаем инфу для гостей, во второй - для регистрированных. Блоки настраиваем на показ для своих ролей и только на указанной странице.

Аватар пользователя beerman beerman 21 июля 2008 в 6:51

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

Аватар пользователя direqtor direqtor 21 июля 2008 в 7:15

Блок исчезает, но контент заглавной остается тем же.
argon хочет разный контиент на заглавной страницы для разных пользователей. По остальному сайту ходи как хочешь... Или я что-то не так понял?

Пусть в качестве заглавной надо отобразить просто разный текст.
Создаем пустую ноду например node/1. Указываем заглавной страницей. Что мы увидим на морде - Только заголовок. Делаем блок с текстом для гостей и настраиваем его на показ в регионе content, только в ноде node/1 и только для роли anonymous user.
Делаем второй блок с текстом для зарегистрированных пользователей и настраиваем его на показ в регионе content, только в ноде node/1 и только для роли registered user. Теперь гости увидят заголовок и их текст, а если залогинятся, то тот же заголовок и другой текст на заглавной. Если заголовок не нужен, то можно поменять условия его вывода в файле page.tpl.php (не выводить на заглавной).

А вот если, надо будет отобразить на заглавной список материалов, при чем разный для гостей и пользователей, то понадобится через View создать соответствующие блоки и настроить их отображение, как указано выше.

Аватар пользователя argon argon 21 июля 2008 в 11:42

2 beerman, - нужен блок "регистрация", а не "авторизация".
т.е. блок первичной регистрации.

Контент я хочу разный. соответственно 2 пути решения - либо на каждый блок вешать "управление показом в зависимости от статуса пользователя", либо редиректить пользователей на разные главные, в зависимости от статуса.

2 direqtor - т.е. через вьюс получится? ну вариант... хотя не легкий... мне казалось.... можно ли как-то проще решить? может сниппетами? И такой вопрос - как вообще сделать блок "регистрация?" т.е. можно ли вывести содержание /user/register - блоком?

Аватар пользователя direqtor direqtor 21 июля 2008 в 11:56

Может и есть какой-нибудь модуль на эту тему. Но если по-простому.
Открой страницу. Скопируй нужный код в блок, который создашь, там всего лишь пара полей и кнопка. Потом размести в нужном месте сайта для анонимных пользователей.

Аватар пользователя ShadOR ShadOR 6 июля 2009 в 13:51

Здравствуйте. Стоит очень похожая задача, по-этому не стал создавать отдельной темы.

Есть несколько ролей. И есть модуль 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 
"Добро пожаловать на стартовую тестовую страницу нашего проекта. Скоро будет адекватней текст и приветствие.";
 
?>

Этот код я вставлял в ноду, которая установлена как главная страница сайта - для тех у кого заполнена анкета все работает прекрасно, для тех же у кого пустая в ноде выводится все кроме непосредственно "заполните анкету."
Подскажите как справиться с данной проблемой.