Drupal → Как для определённой роли спрятать колонку или поле в представлении Views

07.11.2011

Например нужно спрятать поле field_secret для анонимных пользователей в представлении myview дисплея page_1:

Drupal 8+

/**
 * Implements hook_views_pre_build().
 */
function mymodule_views_pre_build(\Drupal\views\ViewExecutable $view): void {
  if (
    $view->id() == 'myview' &&
    $view->current_display == 'page_1' &&
    \Drupal::currentUser()->isAnonymous()
  ) {
    $view->field['field_secret']->options['exclude'] = TRUE;
  }
}

Drupal 7, Views 3

/**
 * Implements hook_views_pre_render().
 */
function mymodule_views_pre_render(&$view) {
  if (
    $view->name == 'myview' &&
    $view->current_display == 'page_1' &&
    user_is_anonymous()
  ) {
    $view->field['field_secret']->options['exclude'] = TRUE;
  }
}

Drupal 6, Views 2

/**
 * Implements hook_views_pre_render().
 */
function mymodule_views_pre_render(&$view) {
  if (
    $view->name == 'myview' &&
    $view->current_display == 'page_1' &&
    user_is_anonymous()
  ) {
    unset($view->field['field_secret']);
  }
}
Написанное актуально для
Views 2, Views 3
Похожие записи

Комментарии

А как можно во вьюхе показать поле по условию, например если значение поля TITLE равно TEST, тогда поле BODY не показывай

Здравствуйте, скажите пожалуйста, хочу во вьюхе переопределить выводного одного из полей, т.о. скопировал tpl.php файл в темплэйт у темы, и переименовал его в нужное имя.

Смысл переопределения заключается в том, что мне нужно чтобы вьюха вывела только первое значение этого поля, все остальные пропускала

Вячеслав
20.12.2013, 13:39

Xandeadx, спасибо.
($GLOBALS['user']->roles[1])
Помогаете не первый раз

Михаил
01.12.2014, 19:41

Прошу помощи.
В представлении выводятся два exposed фильтра. Для одного из значений первого фильтра нужно спрятать второй фильтр.
Нижеприведенный код, к сожалению, результата не дал:

function chibs_views_pre_render(&$view) {
  if ( $view->name == 'vacancies' ) { 
    if ( $view->exposed_data['employer'] == 'ag' ) {
      $view->field['field_region']->options['exclude'] = TRUE;
     }   
  }
}

На входе в функцию, $view->field содержит только одно поле - 'title'

Михаил
01.12.2014, 21:12

Оказывается фильтр это не поле :(
Скрыть вывод фильтра удалось в hook_views_pre_build(&$view), выполнив
unset( $view->filter['field_region_value']);
Сейчас другая проблема, не получается узнать текущее значение первого фильтра в hook_views_pre_build.

Подскажите, пожалуйста, а как подобным образом спрятать сортировку?

Добавить комментарий