Налаштування сортування на drupal 7 або Фасетноє пошук

Налаштування сортування на drupal 7 або Фасетноє пошук

І так давайте перейдемо безпосередньо до встановлення та налаштування потрібних нам модулів

установка модулів

На сторінці модулів включаємо:

Створення пошукового сервера

Йдемо в Конфігурація> Пошук і метадані> Search API (/ admin / config / search / search_api) і натискаємо Додати сервер.
Потім вводимо ім'я сервера, в випадаючому списку Клас сервісу (Service class) вибираємо Database service і зберігаємо.

Налаштування сортування на drupal 7 або Фасетноє пошук

створення індексу

Йдемо в Конфігурація> Пошук і метадані> Search API (/ admin / config / search / search_api), тиснемо Додати сервер (Add index).
Вводимо назву індексу, в поле Тип елемента (Item type) вибираємо 'Матеріал', в поле Сервер вибираємо Database server. тиснемо Створення індекс.

Налаштування сортування на drupal 7 або Фасетноє пошук

У формі відзначаємо галочками поля, за якими буде проводитися сортування, і зберігається.
Щоб можна було робити сортування за назвою Ноди, включаємо title і навпроти нього в випадаючому списку вибираємо тип string. а не fulltext. За fulltext сортування робити не можна.
Налаштування сортування на drupal 7 або Фасетноє пошук

Створення сторінки пошуку

На даному етапі з налаштуванням уявлення ми закінчили, тепер перейдемо безпосередньо до Фасетноє фільтру.

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

Тепер йдемо в Конфігурація> Пошук і метадані> Search API> Product Index (/ admin / config / search / search_api / index / product_index / facets), тут у нас з'явилася нова вкладка фасетами (Facets). де потрібно вказати поля (проіндексовані раніше) для фільтра і налаштувати їх відображення.

Налаштування сортування на drupal 7 або Фасетноє пошук

Налаштування сортування на drupal 7 або Фасетноє пошук

Для кожного від міченого поля буде автоматично створений окремий блок на сторінці блоків, так що після того як потрібні поля обрані, йдемо на сторінку блоків і розміщуємо їх в потрібному регіоні та послідовності.
Налаштування сортування на drupal 7 або Фасетноє пошук

Current Search Blocks

На сторінці налаштування блоків знаходимо блок Current search: Standard і розміщуємо його в потрібному нам місці. Потім йдемо в Конфігурація> Пошук і метадані> Current Search Block> Standart. і в самому низу знаходимо настройки видимості: ставимо або передостанній. або останній пункт (Display when either keywords are entered one or more facet items are active).

Налаштування сортування на drupal 7 або Фасетноє пошук

Відображення фільтра на довільній сторінці (відмінною від сторінки пошуку)

  • Hide block: Yes
  • Search page path: шлях до сторінці пошуку
  • Facet field: вибираємо всі поля

Налаштування сортування на drupal 7 або Фасетноє пошук

Після переходимо на сторінку налаштування блоків, і розміщуємо щойно створений блок вище блоків фільтра. Тепер блоки фільтра будуть відображатися там же, де і даний допоміжний блок.
Сенс цих дій простий: щоб блоки фільтра могли перегляньте, їм потрібно отримати інформацію з бази даних. Допоміжний блок якраз і виробляє цей запит.

Множинний вибір (чекбокси в фільтрі)

Налаштування сортування на drupal 7 або Фасетноє пошук

Тепер в блоці фільтра можна вибирати кілька катигории відразу:

Патчим Jquery UI Slider: виправляємо вибір значень

Патчим JQuery UI Slider: налаштовуємо редирект

У версії модуля 7х-1.5 я зіткнувся з тим, що якщо віджет слайдера розташований на сторінці, відмінною від сторінки пошуку, то після зміни діапазону ціни відбувався пере направлення на поточну сторінку, а не на сторінку пошуку.
Помилка полягає в функии search_api_ranges_block_slider_view_form_submit () (файл search_api_ranges.module, рядок 364).
Я не став особливо розбиратися, що там і навіщо, просто трохи змінив код в рядку 427:

після чого проблема вирішилася.

Схожі статті