Убираем пустые категории из фильтра во views

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

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

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

Решения для пустых категорий

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

Это действительно сглаживает негативное впечатление пользователя, т.к. дизайн страницы выглядит хоть и бесполезным, но целостным. Принципиально же проблема не разрешается.

Поэтому рассмотрим другой путь, а именно уберем из фильтра категории, которые не содержат результатов.

Я буду показывать в контексте своей задачи, вам придется подумать, как это можно применить для вашего случая.

Потребуется реализация hook_form_views_exposed_form_alter и работа с базой данных, т.к. другого способа выяснить будет ли запрос пуст, кроме как его выполнить предварительно, не существует.

Детали задачи

Моё представление создавало список сущностей commerce_product_variation в контексте выбранного тега товара. А на форме был фильтр по категории товара. Получалось, что для выбранного тега товара, не все категории были актуальны. Нужно было удалить из фильтра лишние (пустые) категории.

Вероятно структура кода hook будет у вас такой же, только потребуется сконструировать собственный запрос к базе.

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

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

Модификация тела письма перед отправкой в Drupal

Июнь 9, 2023 г.

Рассмотрим два варианта, как зацепиться к отправляемым письмам и внести туда свои изменения. Первый вариант заключается в прямом изменении тела письма перед отправкой. Для этого мы реализуем hook_mail_alter(&message). MAIL ALTER хук Переменная ...

Читать

Ошибка: Migration is busy with another operation

Апрель 19, 2024 г.

При отладке миграций в Drupal могут возникать состояния, когда миграция не прошла по какой то причине (ошибке) и подвисла в состоянии отличном от Idle. ...

Читать

 

Комментарии к «Убираем пустые категории из фильтра во views»

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



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