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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавляем свой фильтр в TWIG на Drupal

Июнь 1, 2023 г.

В TWIG уже много разных встроенных фильтров, Drupal их перечень только расширяет. Но наше счастье было бы не полным, если бы мы не могли добавить свои фильтры. В Drupal это делается через сервис twig.extension. Для начала надо сформировать описатель, ...

Читать

Изменить http код ответа для кастомной страницы

Октябрь 30, 2023 г.

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

Читать

Чем заменить file_create_url в Drupal 9/10

Январь 9, 2024 г.

Функция file_create_url устаревает, начиная с версии 9.3, а в 10й версии она уже отсутствует. Документация предлагает воспользоваться реализацией интерфейса \Drupal\Core\File\FileUrlGeneratorInterface, чтобы заместить устаревающую функцию в вашем ...

Читать

Корзина не пуста - изменим стиль пункта меню

Август 2, 2023 г.

Использую Drupal Commerce, и в меню у меня есть пункт "Корзина", со ссылкой на корзину пользователя. Хочется, чтобы стиль пункта меню менялся, если корзина не пуста. Я буду использовать hook_preprocess_menu темы, чтобы изменить нужный пункт меню ...

Читать
 

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

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



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