Не показываем блок анонимам, а только залогиненым.

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

Аватар пользователя VladSavitsky VladSavitsky 30 января 2008 в 2:19

Задача:
Блок должен показывать аномимам сообщение типа "Зарегистрируйтесь, чтобы ..."
А залогиненым выводить то, что нужно.

Варианты:
1. В настройках блока проставить каким ролям доступ разрешёл - не подходит. Тогда анонимы блока не увидят вообще и не смогут прочесть, что им нужно зарегистрироваться. Нельзя так - они обидятся и уйдут!
2. В поле для видимости прописать условие кодом на PHP - не подходит по той же причине.
3. В теле самого блока сделать проверку и по результату проверки выдать разный контент.

Выбор: вариант 3.

Итак начинаем программировать эту дискриминацию.
Объекта $user в блоке не видно.
Поэтому нужно сделать так:
<?php
global $user;
return (bool) $user->uid;
?>

Этот код вернёт ИСТИНА для залогиненых пользователей. (Идея отсюда: http://drupal.org/node/64854)

Если же нужно ограничивать доступ для нескольких ролей, то можно использовать такую идею:

<?php
global $user;
$approved_roles = array('board', 'sales', 'engineer');

if (is_array($user->roles)) {
if (count(array_intersect($user->roles, $approved_roles)) > 0) {
return TRUE;
} else {
return FALSE;
}}
?>

Всё больше постигаю премудрость друпальную!...

Комментарии

Аватар пользователя Гость Гость (не проверено) 30 января 2008 в 8:00

Вариант №4.
Два блока.
Первый для анонимов, с предложением зарегистрироваться. Второй - с контентом - для авторизованых пользователей.
Smile

Аватар пользователя VladSavitsky VladSavitsky 30 января 2008 в 16:39

Вариант 4 тоже имеет право на существование. Просто в моём частном случае этот блок выводится через модуль, который делает табы (вкладки) и показывает несколько блоков на одном месте. Поэтому 2 разных блока для меня лично не подходит. Но как вариант...

Аватар пользователя wiw wiw 4 февраля 2008 в 20:36

Я так понимаю, что зарегистрированным пользователям в таком случае будут видны оба блока? Или для разграничения прав на до писать php условие?

Аватар пользователя svovik1 svovik1 12 ноября 2009 в 20:26

"wiw" wrote:
Я так понимаю, что зарегистрированным пользователям в таком случае будут видны оба блока?

а что мешает в настройках блока "загистрируйтесь" поставить видимость только анонимам?