xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

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

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

Предполагается что 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

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

Комментарии RSS

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

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

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

Информация полезна, но не новая =) тут появилось раньше и подробнее - http://dreamr1der.ru/drupal_facet_search

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

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

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

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

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

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

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

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

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

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

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании