xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

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

Views 3

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

Views 2

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

Комментарии RSS

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

переопределите шаблон поля
или модуль https://drupal.org/project/views_conditional попробуйте

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

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

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

Прошу помощи.
В представлении выводятся два 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'

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

спасибо за информацию!

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании