Налаштування автодоповнення пошуку для Bitrix CMS
Автодоповнення пошуку — пропозиція завершити введений запит до повного пошукового терміну — відрізняється від підказок: підказки показують конкретні товари або сторінки, автодоповнення пропонує варіанти запитів. У Bitrix ці поняття часто плутають, і реалізація залежить від того, яка саме функціональність потрібна.
Два сценарії автодоповнення
Сценарій 1: Автодоповнення за пошуковим індексом
Користувач вводить "червон", система пропонує: "червоні сукні", "червоні кросівки", "червоний диван". Джерело — заголовки з b_search_content.
Сценарій 2: Автодоповнення за історією запитів
Система пропонує популярні запити інших користувачів, що збігаються з введеними символами. Джерело — історія пошуку з b_search_user_trans (якщо ведення історії увімкнене).
Стандартний компонент bitrix:search.suggest реалізує сценарій 1. Сценарій 2 вимагає користувацької розробки.
Увімкнення історії пошуку
Параметри → Пошук → Параметри модуля → Зберігати історію пошуку — увімкнути.
Історія зберігається в b_search_user_trans. Поля: SITE_ID, WORD (пошуковий запит), DATE_CHANGE, POPULARITY (кількість повторень).
Реалізація автодоповнення за популярними запитами
AJAX-ендпоінт для автодоповнення за історією:
// /local/ajax/search_autocomplete.php
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
$query = trim($_GET['q']);
if (strlen($query) < 2) {
die(json_encode([]));
}
$result = \Bitrix\Main\Application::getConnection()->query(
"SELECT WORD, POPULARITY FROM b_search_user_trans
WHERE SITE_ID = '" . SITE_ID . "'
AND WORD LIKE '" . \Bitrix\Main\DB\MssqlConnection::ForSql($query) . "%'
ORDER BY POPULARITY DESC
LIMIT 10"
);
$suggestions = [];
while ($row = $result->fetch()) {
$suggestions[] = $row['WORD'];
}
echo json_encode($suggestions);
На фронтенді — стандартний input з обробником подій input та debounce 200–300 мс.
Поєднання підказок та автодоповнення
На практиці найзручніший UX — комбінований випадаючий список:
- Верхня частина: 3–5 популярних запитів (автодоповнення)
- Нижня частина: 5–7 конкретних товарів (підказки з зображеннями)
Це реалізується через два паралельних AJAX-запити або через єдиний ендпоінт, що повертає обидва типи даних.
Кеширування
Запити автодоповнення виконуються при кожному введенні символу — важливо кешувати відповіді. Варіанти:
- Кеш Bitrix (
\Bitrix\Main\Data\Cache) з TTL 30–60 хвилин - Redis/Memcached для зберігання популярних запитів
- Статичні файли для топ-100 популярних запитів (оновлюються агентом раз на годину)
Терміни виконання
Налаштування стандартного автодоповнення через компонент підказок — 1–2 години. Користувацьке автодоповнення за історією запитів з комбінованим UI — 4–8 годин.







