На сайте есть 2 роли "неавторизированный" юзер и "покупатель".
На сайте есть товары, которые может видеть только юзер "покупатель".
На странице ноды можно скрывать доступ с помощью хука .
Кто подскажет как скрыть определенные ноды во view для неавторизированного пользователя?
P.S. Drupal 7
Комментарии
Я сделал в товаре поле "скрывать для неавторизированных".
Но, тут загвоздка:
- если во view выставить фильтр по этому полю, то ноды скроются во view для всех пользователей(для авторизированных тоже). А авторизированные должны видить все ноды.
Возможные решения:
Делать две view в блоке на странице (1 - для неавторизированных со скрытыми нодами, 2 - для авторизированных со всеми нодами). Выставить разрешение на просмотр view по ролям.
Может есть другие варианты?
Решил!
Мне помог модуль http://drupal.org/project/views_php .
С его помощью можно вставлять php в фильтры!
Если фильтр возвращает true, то нода в виде не выводится.
У ноды я создал поле field_data_field_model_hide (bool)
Вот код, который я вставил в фильтр:
<?php
$hide_node = 0;
if($data->nid){
// Select hide state for current node
$hide_node = db_select('field_data_field_model_hide', 'h')
->fields('h', array('field_model_hide_value'))
->condition('h.entity_id', $data->nid)
->execute()
->fetchField();
// wholesale role id
$admin_role = '4';
global $user;
if (!array_key_exists('4', $user->roles) && $hide_node == 1) {
return 'TRUE';
}
}
?>
Меня на это вдохновил этот комментарий