Доброго времени суток.
Тип материала "Товары", который имеет поле таксономии "Категория".
Необходимо создавать различные фильтры для различных Категорий Товаров с последующей возможностью фильтровать Товары через Views.
Как правильно это организовать?
Благодарен за любую помощь.
Комментарии
- Фильтры по полям ?
- Сколько вариантов фильтров - столько и views создавать
- Есть один вариант для views когда можно попробовать обойтись одним views - использовать views_hacks->views_filters_selective
- Мне импонирует для данного случая кастомный php каталог
Спасибо за быстрый ответ.
- Да, если возможно, то по полям, в противном случае добавлять значение в словарь таксономии и сортировать как-нибуть по нему.
- Такой подход не подойдет. Различных фильтров может быть до сотни.
- Кастомный каталог - согласен, но на текущий момент времени в обрез.
- views_hacks->views_filters_selective сейчас изучаю.
Возможно ли решить вопрос с помощью hierarchical select ?
Если программно views выводить то можно менять набор explosed фильтров через $view->set_item_option() (в views2 точно можно было, в views3 не знаю как).
webpavilion, вы имеете в виду Получить id категории -> Узнать все значения словаря таксономии к ней относящиеся -> на основе этих значений составить и подгрузить фильтры (hook_form_views_exposed_form_alter)? Звучит неплохо. Или вы имели в виду иное?
А если сделать так ?
C помощью средств Form API собираете форму фильтров в зависимости от категории товара, ну а далее - в зависимости от того, что выбрано в форме, собираете SQL-запрос, запускаете его и выводите результат.
То что неизвестно, сколько времени нужно проразбираться с views, чтобы это всё реализовать.
roman-yrv, вариант. Но он ближе к кастомной реализации (по времени разработки и написанию). Все равно спасибо, взял на заметку.
Да, но только hook_form_views_exposed_form_alter вам не поможет, нужно рендерить views программно.
webpavilion, реализация почти готова. Столкнулся со следующей ситуацией: поскольку все фильтры берутся из одного словаря таксономии, то в форме может быть лишь одни explosed фильтр с id этого словаря. Конечно, я создал сколько нужно раскрывающихся фильтров, присвоив им другие Id, но каким образом (хуком) можно переписать ajax запрос формы, добавив туда выбранные значения этих фильтров?
Thus, it does not yet integrate with: Forum (Drupal core), Views, etc.
А вот это потрогайте https://drupal.org/project/shs
Как удалось реализовать "на скорую руку":
Получилось, собственно, как и рекомендовали господа 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.
Всем огромное спасибо за помощь!