📑 У цій статті
- Проблема: фільтри в OpenCart і чому стандартні модулі ламають тему
- Що таке AI Filters v1.0.5 і навіщо event-injected рендеринг
- Швидка установка за 5 хвилин
- Що отримуєте з коробки
- Сумісність з популярними OpenCart-темами
- Просунуті налаштування: GA4, URL-state, exclude-self
- Troubleshooting: 6 типових проблем
- FAQ
У стандартному OpenCart фільтрів на сторінці пошуку немає, а на категоріях вони працюють з перезавантаженням сторінки. Сторонні модулі зазвичай вимагають правок twig-шаблонів — це означає що при оновленні теми вам або треба все робити заново, або фільтри ламаються. AI Filters v1.0.5 вирішує це через event-injected рендеринг: жодних правок теми, AJAX-режим, працює і на категоріях і на сторінці пошуку.
Проблема: фільтри в OpenCart і чому стандартні модулі ламають тему
OpenCart 3 і 4 з коробки мають слабкий filter-механізм:
- На сторінці категорій — фільтри по атрибутах перезавантажують всю сторінку при кожному кліку. На каталозі 5k+ SKU це сповільнює UX до неприйнятного.
- На сторінці пошуку (
/index.php?route=product/search) стандартних фільтрів немає взагалі. Покупець знайшов 247 товарів — і не може звузити по бренду чи ціні. - OpenCart не має підрахунків per-facet count — користувач не знає скільки товарів залишиться після кліку, поки не клікне.
Сторонні модулі (особливо популярні в маркетплейсі OpenCart) зазвичай йдуть тим самим шляхом — модифікують template-файли категорії та пошуку. Наслідки:
Що таке AI Filters v1.0.5 і навіщо event-injected рендеринг
AI Filters — фасетний модуль що поставляється у складі AI Search v1.0.5. Працює окремо (можна використовувати без AI-пошуку) або разом з ним. Ключовий принцип — event-injected: модуль не модифікує template-файли. Натомість підписується на стандартні OpenCart events catalog/view/category/before та catalog/view/product/search/before, і вставляє HTML фільтрів у вже-зрендерений output.
category.twig чи search.twig не потрібно.
Швидка установка за 5 хвилин
- Зареєструйтесь на ai-search.cc — Google login або email.
- Завантажте
aisearch.ocmod.zipз кабінету — це один архів і для AI Search, і для AI Filters. - В адмінці OpenCart: Extensions → Installer → Upload → виберіть zip → Continue.
- Extensions → Modifications → Refresh (важливо — інакше events не активуються).
- Extensions → Extensions → Modules → знайти AI Filters → Install → Edit → ввімкнути
Status: Enabled→ Save. - Перейдіть на frontend і відкрийте будь-яку категорію чи сторінку пошуку. Фільтри з'являться зліва (або у налаштованому положенні).
category.twig, search.twig чи будь-яких інших template-файлів. Перевірено на офіційній OpenCart-темі та популярних сторонніх (Journal, OctTheme, Ronix, Shoppica).
Що отримуєте з коробки
AJAX-режим: переключення без reload
Користувач клікає чекбокс — фільтр-панель і список товарів оновлюються без перезавантаження сторінки. Це не SPA-overlay (як у Klevu) — просто XHR-запит до власного endpoint, який повертає новий список ID товарів. URL змінюється через history.pushState(), тож користувач може поділитися посиланням з активними фільтрами.
Per-facet counts з exclude-self логікою
Якщо у вас групи "Колір", "Розмір", "Бренд", і користувач уже вибрав "Чорний", "M" — інші чекбокси показують скільки товарів буде доступно після додавання цього фільтра. Але всередині групи "Колір" числа залишаються без врахування "Чорний" — щоб користувач бачив скільки товарів є з іншими кольорами на тих же фільтрах розміру/бренду. Це називається exclude-self per-group.
Native HTML5 dual-range slider для ціни
Без сторонніх JS-бібліотек. Працює на mobile (touch). Debounced — XHR відбувається після 500ms бездіяльності, не на кожному pixel.
URL-state у CSV форматі
Приклад URL зі активними фільтрами
/index.php?route=product/category&path=20&ai_f[manufacturer]=12,15&ai_f[price]=100-500&ai_f[color]=red,blue
Формат ai_f[group]=v1,v2,v3 — людиночитаний, легко debug-ається, share-friendly. Можна давати посилання на конкретну добірку у Telegram/email.
GA4 / dataLayer events
При кожному застосуванні фільтра у window.dataLayer вистрілює подія:
{ event: 'ai_filters_applied', filter_group: 'manufacturer', filter_value: '12', total_results: 47 }
Можете побудувати GA4-звіт: які фільтри найпопулярніші, які combo приводять до конверсії, де користувачі застрягають.
Сумісність з популярними OpenCart-темами
Event-injected підхід працює з будь-якою темою, яка не вимикає стандартні OpenCart events. Перевірено на:
- Default OpenCart 3.x / 4.x — повна сумісність
- Journal 3 / Journal 4 — працює без додаткових налаштувань
- OctTheme — працює, рекомендуємо вимкнути власні фільтри Oct щоб не конфліктували
- Ronix — працює
- Shoppica — працює
Просунуті налаштування
1. Position: ліва колонка vs верх
В адмінці модуля: Filter Position → Left column / Top horizontal / Custom. У режимі Custom можна вказати CSS selector контейнера куди впорснути фільтри (приклад: .product-filter-container).
2. Active groups + сортування
Виберіть які групи показувати: ціна, виробник, колір, розмір, опції, атрибути, наявність, рейтинг. Drag-n-drop порядок. Можна окремо для категорій vs пошуку.
3. Mobile sticky bottom button
На мобільних пристроях панель фільтрів ховається за bottom-кнопку "Фільтри (3)" з лічильником активних. Тапнув — slide-up panel зверху списку товарів.
4. Conditional rules
"Показувати фільтр 'Колір' тільки якщо в активних результатах є хоча б 3 різних кольори". Робить UX чистіше — порожні фільтри не з'являються.
5. Кешування counts
Per-facet counts кешуються на рівні Redis або file-cache. Перший запит — обчислюється, наступні (з тими ж активними фільтрами) — миттєво з кешу. Кеш інвалідується автоматично при зміні товарів.
Troubleshooting: 6 типових проблем
99% випадків — забули натиснути Extensions → Modifications → Refresh після установки. Без цього events не активуються. Зробіть Refresh, очистіть Twig-кеш (Dashboard → Cache) і перевірте знову.
Перевірте, чи jQuery завантажений. Якщо тема використовує своє bundling-решення без jQuery — увімкніть в адмінці AI Filters → Settings → Load jQuery in catalog.
Перевірте, що ви вже виконали reindex AI Search (навіть якщо AI-пошук не використовуєте — counts беруться з тієї ж бази). Зайдіть в Extensions → Modules → AI Search → Edit → Indexer → Start Indexing.
Багато premium-тем (Journal, OctTheme) мають власні фільтри. Вимкніть їх у налаштуваннях теми або в адмінці AI Filters виберіть "Replace theme filters" — модуль автоматично заховає конкуруючий блок.
Перевірте viewport meta-тег у темі:
<meta name="viewport" content="width=device-width, initial-scale=1">. Без нього touch-events падають.
Це означає що ваша тема перевизначає
window.history. Контактуйте [email protected] з URL вашого магазину — додамо compatibility layer.
FAQ
Чи є AI Filters окремим продуктом, чи частиною AI Search?
Поставляється у складі AI Search v1.0.5 — один zip-архів, одна ліцензія. Можна використовувати тільки фільтри без AI-пошуку (вимкнути AI Search в адмінці, AI Filters залишити Enabled).
Чи це безкоштовно?
На Free-плані (до 200 SKU) — так. На платних тарифах AI Filters входить у вартість тарифу AI Search без доплат: Starter $12, Business $29, Pro $79, Enterprise $199.
Чи працюватиме на OpenCart 2.x?
Ні. Підтримуємо тільки OpenCart 3.0.x і 4.0.x. На OC 2 архітектура event-системи інша — доведеться писати окремий модуль.
А що з multistore?
Працює. Налаштування модуля можна задати окремо для кожного store через стандартний store-selector OpenCart.
Чи можна налаштувати які групи фільтрів показуються на пошуку vs на категоріях?
Так. У адмінці є дві окремі вкладки: Category Page Filters та Search Page Filters. Кожна зі своїм набором активних груп і їх порядком.
Скільки фільтрів можна додати на сторінку?
Технічного ліміту немає. На практиці UX починає страждати після ~12 груп — рекомендуємо приховати найменш популярні через Conditional rules (показувати тільки якщо є ≥3 значень).