Различные фильтры для разных категорий товаров

Главные вкладки

Аватар пользователя Dffpm Dffpm 12 февраля 2014 в 22:02

Доброго времени суток.

Тип материала "Товары", который имеет поле таксономии "Категория".

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

Как правильно это организовать?

Благодарен за любую помощь.

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 12 февраля 2014 в 22:33

- Фильтры по полям ?
- Сколько вариантов фильтров - столько и views создавать
- Есть один вариант для views когда можно попробовать обойтись одним views - использовать views_hacks->views_filters_selective
- Мне импонирует для данного случая кастомный php каталог

Аватар пользователя Dffpm Dffpm 12 февраля 2014 в 22:59

Спасибо за быстрый ответ.

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

- views_hacks->views_filters_selective сейчас изучаю.

Возможно ли решить вопрос с помощью hierarchical select ?

Аватар пользователя webpavilion webpavilion 12 февраля 2014 в 23:07

Если программно views выводить то можно менять набор explosed фильтров через $view->set_item_option() (в views2 точно можно было, в views3 не знаю как).

Аватар пользователя Dffpm Dffpm 12 февраля 2014 в 23:32

webpavilion, вы имеете в виду Получить id категории -> Узнать все значения словаря таксономии к ней относящиеся -> на основе этих значений составить и подгрузить фильтры (hook_form_views_exposed_form_alter)? Звучит неплохо. Или вы имели в виду иное?

Аватар пользователя roman-yrv roman-yrv 12 февраля 2014 в 23:34

А если сделать так ?
C помощью средств Form API собираете форму фильтров в зависимости от категории товара, ну а далее - в зависимости от того, что выбрано в форме, собираете SQL-запрос, запускаете его и выводите результат.
То что неизвестно, сколько времени нужно проразбираться с views, чтобы это всё реализовать.

Аватар пользователя Dffpm Dffpm 12 февраля 2014 в 23:43

roman-yrv, вариант. Но он ближе к кастомной реализации (по времени разработки и написанию). Все равно спасибо, взял на заметку.

Аватар пользователя Dffpm Dffpm 13 февраля 2014 в 10:23

webpavilion, реализация почти готова. Столкнулся со следующей ситуацией: поскольку все фильтры берутся из одного словаря таксономии, то в форме может быть лишь одни explosed фильтр с id этого словаря. Конечно, я создал сколько нужно раскрывающихся фильтров, присвоив им другие Id, но каким образом (хуком) можно переписать ajax запрос формы, добавив туда выбранные значения этих фильтров?

Аватар пользователя Dffpm Dffpm 10 ноября 2015 в 11:49

<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:
А вот это потрогайте https://drupal.org/project/shs[/quote]

Отличный модуль, спасибо! Выбрать нужные фильтры (элементы из словаря таксономии) в категории, а потом в товаре с его помощью становится очень удобно. Но во Views я не нашел способа генерировать столько dropdown, сколько выбрано фильтров. Все помещается в один (на каждый уровень потомков) dropdown. Ниже визуально описано как сейчас и как хотелось бы:

Аватар пользователя Dffpm Dffpm 13 февраля 2014 в 14:12

Как удалось реализовать "на скорую руку":

Получилось, собственно, как и рекомендовали господа roman-yrv и webpavilion:

1. Переопределена форма выбора фильтров для Товара (hook_form_alter в итоге доступны лишь те термины словаря, которые присутствуют в категории товара).
2. Была собрана форма фильтров (hook_form_views_exposed_form_alter - если рекомендуете другой, прошу поправить).
3. Был переопределен запрос в бд (hook_views_query_alter).

А благодаря sas@drupal.org, работа с фильтрами во всех формах значительно упростилась при использовании модуля Simple hierarchical select.

Всем огромное спасибо за помощь!