Drupal → Создание фасетной навигации с помощью Search API

06.09.2014

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

Фасетная навигация

Предполагается что Search API уже настроен и создан Views по индексу.

  1. Включаем модуль Search facets из состава Search API.

  2. Добавляем в индекс поля, по которым будет осуществляться фасетная навигация. Например тип материала и теги:

  3. В табе Facets включаем нужные фасеты:

  4. Делаем переиндексацию.

  5. На странице управления блоками переносим блоки фасетов в нужный регион:

  6. Открываем страницу представления по поисковому индексу и получаем:

  7. Переходим в настройки отображения блока с фасетами:

  8. В настройках выбираем виджет Links with checkboxes, меняем оператор на OR и изменяем опцию Minimum facet count на 0, чтобы пустые фильтры не пропадали:

  9. Аналогично настраиваем другие блоки.

Profit.

Видео со всеми шагами, включая настройку Search API.

P.S: Если в качестве бакэнда используется search_api_db и хочется чтобы блоки с фасетами не пропадали при отсутствии результатов — https://www.drupal.org/node/2219897#comment-8585141

Похожие записи

Комментарии

Антон Уваров
09.09.2014, 20:53

Дорогой автор!
Уже который раз ищу информацию по друпалу, и каждый раз наконец нахожу тут. Вот, емаё, что ни открой - всё тут полезное. От души говорю! ОГРОМНОЕ СПАСИБО!!!
Даже просто хочется что нить новенькое о друпале посмотреть - теперь сюда буду заходить.
Отключаю адблок - посещаю ссылки гугл на твоей странице ;)
Кстати, что у тебя за редактор на комментариях висит такой симпатичный? :)

А стандартный модуль Search нужно выключать?

если он вам не нужен, то логично выключить

а вы не в курсе, можно ли накрутить зависимые фасеты по термину, то есть пока не выбран родитель не показывать фасет с дочерними терминами? Или это через #states нужно делать?

накрутил фасеты, поля иерархический термин, но вот проблема - если материал имеет несколько значений поля иерархического термина, то получается каша с выводом - то есть выбираешь из первого селекта родителя, во втором селекте доступны ВСЕ дочерние термины без привязки к родителю, тоже самое и с выбором второго селекта, не знаете как фильтрануть, что бы показывал значения, только в рамках иерархии?

буду крайне признателен, если вы меня наведете на мысль по выше написанному. Если я не понятно изложил ситуацию, может данная картинка прояснит ситуацию - картинка

ну как-то на js изменять или аджаксом подгружать.
я с фасетами особо не работал.

я с фасетами особо не работал.

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

п.с. спасибо за ответ.

Михаил
17.11.2015, 16:05

А можно ли хуком изменить значение фасета? Если да, то каким?

Василий
13.02.2016, 20:31

Использую ползунок для выбора цены и веса, в обоих фасетах есть кнопка "Пуск". Как сделать так, чтобы кнопка была одна?

Игорь
22.06.2016, 23:35

Очень рекомендую: https://www.drupal.org/project/facetapi_pretty_paths
сначала я его не использовал, но если всё правильно настроить, то можно получить кучу дополнительных страниц.
- Конечно надо запретить дубли в роботс.тхт
- Нужно самому покодить, чтобы получилось всё красиво ;-)
- мета теги актуальные и т.п.

Сергей
08.12.2017, 10:39

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

Добавить комментарий