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

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

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

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

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

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

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

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

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

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

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

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

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

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

XML карта сайта для многоязычных проектов на Drupal

Апрель 16, 2024 г.

Для начала разберемся: что мы пытаемся построить. Ожидается, что у нас есть корневой файл sitemap.xml, который содержит список языковых xml карт. ...

Читать

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

Апрель 19, 2024 г.

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

Читать

Форма поиска товаров на Drupal

Май 11, 2023 г.

Здесь подробно рассмотрим небольшую задачу для сайта под управлением CMS Drupal. Требуется выводить поисковую форму для товаров в виде блока. Форма ...

Читать

Не появляется форма переиндексации на странице /admin/config/search/search-api/index/

Июль 25, 2024 г.

Если ваш view базируется на search API источнике данных, то важно, чтобы данные были проиндексированы. Но иногда форма переиндексации отсутствует на странице ...

Читать
 

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

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



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