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

Прислано: argon

вс, 20/07/2008 - 23:59

Другие статьи по теме:

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

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

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

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано direqtor в пн, 21/07/2008 - 02:48.

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


Опубликовано beerman в пн, 21/07/2008 - 02:51.

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


Опубликовано direqtor в пн, 21/07/2008 - 03:15.

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

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

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


Опубликовано argon в пн, 21/07/2008 - 07:42.

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

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

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


Опубликовано direqtor в пн, 21/07/2008 - 07:56.

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


Опубликовано argon в пн, 21/07/2008 - 11:41.

О. точно )). А я чет не сообразил ))). Пасиб

про управление блоками здесь еще вариант нашел - http://setegnom.com/node/302


Опубликовано direqtor в вт, 22/07/2008 - 01:40.

Можно и так, но в настройках блоков есть список ролей пользователей. Поставил нужные галочки – и все.


Опубликовано ShadOR в пн, 06/07/2009 - 09: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 
"Добро пожаловать на стартовую тестовую страницу нашего проекта. Скоро будет адекватней текст и приветствие.";
 
?>

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


Новое на сайте

Ссылки партнёров