Выводить тот или иной Views в зависимости от Роли пользователя

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

Аватар пользователя samodelkin samodelkin 7 октября 2013 в 19:09

Добрый вечер.
Подскажите есть ли возможность вывести по одному и тому-же URL адресу разные представления в зависимости от роли пользователя.
Скажем есть у нас URL "site.ru/list1" по нему выводится представление которое доступно для роли "роль1" и есть "site.ru/list2" по нему выводится представление которое доступно для роли "роль2". Т.к. в принципе данные роли у пользователя не пересекаются хотелось бы вывести их по адресу "site.ru/list" а уже на уровне проверки роли пользователя показывается или то или другое представление.

Пока на ум приходит только написать модуль в котором будет создан обработчик адреса "site.ru/list" и при проверки роли пользователя будет выводится то или иное представление, но будет ли оно корректно работать? т.к. в представлении выводятся еще и формы которые будут отправляться на сайт.

Комментарии

Аватар пользователя validoll validoll 7 октября 2013 в 22:31

Все из коробки.
Вывести вьюхи блоками или панелями на нужную страницу (тут учитываем, что страницу с урлом создаем отдельно, нодой, Page Manager, или чем угодно), и в самих вьюхах выставить Access Control по тем ролям/правам доступа, которые нужны. Тут только нужно учесть, что если пользователь имеет обе роли, то будут показываться оба блока.

Аватар пользователя sg85 sg85 7 октября 2013 в 23:17

Для чуть более сложной логики, чем в примере выше, можно по переключать дисплеи через
https://api.drupal.org/api/views/views.api.php/function/hook_views_pre_v...
(обратить внимание на 1й комент)
А для совсем сложной логики(например если нужно вывести в одном случае термины, в другом ноды, или панель, или вообще одну ноду) можно использовать Ваш метод.

А вообще еще где-то модуль был для этого дела, так же подобное можно провернуть через панели(модуль panels, запихав на одну панель несколько разных представлений и сделав вывод этих представлений на основании практически чего угодно)