Хочу назначить видимость некоторых блоков определённым ролям пользователей. Понимаю что это нужно сделать через "Показать, если введенный PHP-код возвращает TRUE (PHP-режим, только для экспертов)." но вот какой код написать. Я не знаю Drupal API. Подскажите плз.
Комментарии
Где-то в Handbooks на drupal.org были примеры.
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
Почитал я хэндбук и нарыл вот что:
здесь http://drupal.org/node/64854 приводится пример как ограничивать вывод блоков для зарегистрированных пользователей.
global $user;
return (bool) $user->uid;
?>
Осталось только узнать как определить, входит ли пользователь в определённую групу или нет. Кто подскажет?
http://drupal.org/node/27690
А также патч
http://drupal.org/node/18018
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
Спасибо, http://drupal.org/node/27690 только что сам нашёл и только хотел сюда запостить
А http://drupal.org/node/18018 не очень удобно да и нет необходимости в таком функционале. Был-бы это модуль - ещё куда ни шло, а патчи - дело неблагодарное, потом замучаешься при переходе на новую версию ядра.
Этот патч вроде должен входить в следующую версию.
Давно, кстати, пора.
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
Решил проблему вот таким кодом:
global $user;
if (is_array($user->roles) && in_array('admin', $user->roles)) {
return TRUE;
} else return FALSE;
?>
Ограничив тем самым блок навигации для показа только роли admin.
у меня проблема с отображением блоков в определенных категориях страниц...
почему-то $node не видно из скрипта
<?php
global $node;
foreach ($node->taxonomy as $term) {
if ($term->name == "Ладья") return true;
}
?>
- ругается, что $node не существует...
Я только для одной роли сделал так:
<?php
global $user;
if (in_array('authenticated user',$user->roles) // если в списке ролей есть автор. пользователь
&& count($user->roles) == 1) // и список ролей только из 1 роли
return TRUE;
else
return FALSE;
?>
Или я туплю или ... А что у вас разве в настройках блока нет секции
«Настройки видимости для ролей»
Показать блок определенным ролям:
Все таки это я с утра туплю не посмотрел на дату первого поста и версию Друпал