Фасетный поиск в Drupal: часть вторая

21 Apr, 2014

Часть первая / Часть вторая / Часть третья

Скачиваем модуль Facet API, кидаем в директорию модулей, и списке модулей находим два новых пункта: собственно Facet API и Current Search Blocks. Последний создает блок с со списком активных фильтров и ссылки для их отмены. Включаем оба, а также модуль Search facets для интеграции ранее настроенного поиска и facet API.

Теперь идем в Configuration > Search API > Product Index, здесь у нас новая вкладка Facets, где можно указать поля (проиндексированные ранее) для фильтра и виджеты.
enable facet api
select fields for api search
Каждому полю соответствует отдельный блок, так что после того, нужные поля выбраны, идем в настройки блоков и размещаем их в нужном регионе и последовательности.
facet api blocks

Current Search Blocks

В тех же настройках блоков находим блок Current search: Standard и размещаем в нужном месте. Потом идем в Configuration > Current Search Block > Standart, и в самом низу находим настройки видимости: ставим либо третий, либо последний пункт (Display when either keywords are entered one or more facet items are active).
current search block settings

Отображение фильтра на произвольной странице (отличной от страницы поиска)

Изначально блок с ссылками фильтра отображается только на соответствующей ему странице поиска, но иногда нужно, чтобы этот блок отображался и на других страницах. Сделать это просто, хотя и не очевидно. Идем в настройки ранее созданного представления, и добавляем блок Facets block.
Add facet api block
В настройках блока ставим:

  • Hide block: Yes
  • Search page path: путь к странице поиска
  • Facet field: выбираем любое поле

facet api block settings

Затем идем в настройки блоков, и размещаем вновь созданный блок выше блоков фильтра. Теперь блоки фильтра будут отображаться там же, где и данный вспомогательный блок.
Смысл же всех этих действий прост: чтобы блоки фильтра могли отобразится, им нужно получить информацию из базы данный (поля, кол-во элементов и т.д.). С помощью данного блока как раз и происходит этот запрос, в результате фильтр может быть отображен на любой странице.

Часть первая / Часть вторая / Часть третья

3 комментария

by Кирилл on вс, 09/11/2014 - 03:08

ЧТо Вы сделали для отображения поля "цена" в Search API > Product Index - закладка "поля" ?

by DreamR1der on вс, 09/11/2014 - 05:42

Ну для начала такое поле должно существовать :) А потом просто тыкаем галочки, какие поля индексировать. Вроде все, каких либо проблем не помню на данном этапе.

by Алексей on пт, 06/02/2015 - 16:36

Вопрос - при создании блока во views "Add facets block" в Preview не показывает ни одной ноды в чем может быть проблема? В page на основе фасета -все ок.

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

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.