Контекстное задание значений фильтров представлений модуля views

Views оказался настолько популярным модулем, что его даже включили в 8-ю версию Drupal. Он может формировать разделы сайта, блоки, быть источником списков и т.п. Но передача внешних параметров многообразием не отличается. Не хватает очень важного обработчика — контекста публикации.

С этой проблемой можно справится программно. Я покажу как переопределить фильтры views.

Для начала нужно создать представление, задав параметры фильтров, какими то дефолтовыми значениями.

Представленный код написан для Drupal 7.x, views 3.x.

Случай прямого вызова views

Если вызывать представление программно, то код начинается с получения объекта views. Более подробно можно посмотреть вот тут.

В данном примере я меняю параметры фильтра, исходя из контекста текущей публикации.

Конструкция сайта при этом следующая: на странице типа «каталог» нужно показать список публикаций типа «товар», соответствующих терминам, выбранным для данной публикации «каталог».

Каталогов может быть много на сайте, каждый со своим набором терминов, которые используются как фильтр товаров. Таким образом, мы получаем разные выборки товаров для каждой каталожной страницы.

Для моего практического случая код, изменяющий значения в фильтрах, выглядел вот так:

Используем зацепку к views

Когда вы хотите поправить представление где то на полпути, то можно зацепиться через hook_views_pre_execute и поменять значение фильтров как раз перед выполнением views.

Написать комментарий

Мало букафф? Читайте есчо !

Использование entityqueue для сортировки элементов во view, основанной на Search API datasource

Апрель 3, 2024 г.

Ранее подход, который я опишу, использовался для nodequeue, сейчас с заменой плагина фунционалом entityqueue, тоже самое можно применить и для него. Проблема: Создано представление (view), где источник данных - элементы datasource Search API. ...

Читать

Прячем поле view в зависимости от роли пользователя в Drupal

Август 31, 2023 г.

Метод работает не только с ролями, но и любой другой логикой, которую вы в силах реализовать в коде. Нам понадобится hook_views_pre_render, где мы выполним проверку и отключим не нужное нам поле представления. [crayon-6628fd2373b94656434799/] ...

Читать

 

Комментарии к «Контекстное задание значений фильтров представлений модуля views»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: