Добавление условий во views программно

Модуль Views — мощный инструмент в копилке друпалера. Конструктор позволяет создавать условия, перекрывающие большую часть потребностей в практических задачах. Есть возможность связывания с дополнительными сущностями и контекстом выполнения представления.

Далее мы рассмотрим случай, когда этих средств недостаточно и требуется добавить собственные условия в запрос (query) представления (views).

Изменить запрос можно с помощью зацепки hook_views_query_alter(&$view, &$query), где достаточно поменять свойства объекта $query для достижения ваших целей.

Условия представлены в виде массива, который отражает структуру условий из конструктора views.

Пример набора условий во views состоящих из двух групп:

… и его представление в объекте query:

Чтобы задать дополнительное условие, требуется указать три параметра и группу. Например, перепишем условие во второй группе:

На первый взгляд кажется, что условия базируются на Database Drupal API https://www.drupal.org/docs/7/api/database-api/dynamic-queries/conditional-clauses. Но это не так.

Использованный в примере оператор formula — даёт максимальную свободу в формулировках условий, фактически позволяя вам добавлять выражения на sql. Это несет определенные риски, и ответственность за то, что вы там пишите, полностью ложится на ваши плечи. Тогда как другие операторы ограничены в применении, связаны с типом конкретного поля, проходят ряд проверок и т.п.

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

Глюк модуля transliteration в php 7.3.

Октябрь 20, 2019 г.

Столкнулся со следующим неприятным багом, при использовании модуля pathauto, совместно с модулем транслитерации: Drupal генерирует "обрезанные" синонимы адресов страниц. Длина получаемого синонима плавала от 40-70 символов, и я никак не мог понять ...

Читать

Как изменить длину поля (max length) после создания, сохраняя данные

Май 15, 2018 г.

Друпал не позволяет менять длину текстового поля после создания. Функция field_update_field также нам не поможет - будет сгенерирована соответствующая ошибка, что поле уже содержит данные и изменить его длину нельзя. Это можно проделать вручную, зная ...

Читать

Вывод результатов формы в саму форму после submit

Март 2, 2017 г.

Что делают в большинстве случаев после успешного submit данных формы? Вариантов два - либо показывают системное сообщение drupal_set_messge(), либо производят переадресацию на некую страницу с результатами. Первый вариант почти всегда выглядит неказисто, ...

Читать

Еще один пример работы с EntityFieldQuery

Декабрь 23, 2020 г.

Время от времени продолжаю кодить под drupal 7, публикую еще один пример для работы EntityFieldQuery, на этот раз с фильтром по полю типа term reference. Основная логика точно такая же как и при работе с data полями (где у нас хранятся тексты или ...

Читать
 

Комментарии к «Добавление условий во views программно»

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



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