Умный фильтр товаров для OpenCart 2.3, 3 и 4
Фасетный фильтр в категории: бренд, цена, атрибуты и опции с живыми счётчиками, собственным индексом и SEO-страницами фильтра. Без правок ядра.
Что включено в лицензии
| Функция | Free | Pro |
|---|---|---|
| Фасетный фильтр: бренд, цена, атрибуты, опции, наличие | ✔ | ✔ |
| Живые счётчики с учётом уже выбранных фильтров | ✔ | ✔ |
| Собственный индекс вместо запросов по атрибутам — каталог не тормозит | ✔ | ✔ |
| Дубли значений («12 В» / «12в» / «12 V») сливаются в одно | ✔ | ✔ |
| Числовые значения сортируются числами и работают диапазоном | ✔ | ✔ |
| SEO-страницы фильтра с собственным H1, title и человеческим URL | ✔ | ✔ |
| Остальные комбинации — noindex + канонический адрес на чистую категорию | ✔ | ✔ |
| Товары подкатегорий на странице категории переключателем | ✔ | ✔ |
| Без правок ядра, без jQuery и сторонних библиотек | ✔ | ✔ |
| Одна сборка на OpenCart 4.0 и 4.1, отдельные — на 3.x и 2.3 | ✔ | ✔ |
Умный фильтр делает в категории настоящую фасетную выборку: бренд, цена, атрибуты, опции, наличие — с живыми счётчиками и без перезагрузки страницы. Есть три сборки: для OpenCart 4.0.2 – 4.1.x, 3.0.2 – 3.0.5.0 и 2.3.0.x; функциональность одинаковая, отличается только пакет.
Не патчит ядро
Фильтр встраивается событиями и собственной моделью каталога, ни один файл ядра не переписывается. Поэтому обновление OpenCart его не ломает, а одна сборка встаёт и на 4.0, и на 4.1. Убрать модуль можно в один клик — магазин остаётся таким, каким был.
Собственный индекс вместо запросов по атрибутам
Вместо того чтобы на каждый клик перебирать таблицы атрибутов и опций, модуль держит собственный индекс товар → значение. Условия фильтра — это EXISTS по индексу, поэтому каталог не замедляется, когда покупатель добавляет пятый и шестой фильтр. Индекс обновляется сам, когда товар добавили, изменили, скопировали или удалили.
Дубли значений сливаются в одно
«12 В», «12в» и «12 V» в прайсах поставщиков — это три разные строки, и в обычном фильтре они становятся тремя чекбоксами. Здесь они сливаются в одно значение. Числовые значения сортируются как числа (1.5 / 2 / 10, а не 1.5 / 10 / 2) и работают как диапазон.
Честные счётчики
Рядом с каждым значением видно, сколько товаров останется после выбора. Счётчик считается с учётом всех остальных выбранных фильтров, а сам себя не ограничивает — то есть покупатель не упирается в нули и не видит «(0)» там, где товар на самом деле есть.
SEO-страницы фильтра
Нужную комбинацию фильтров можно превратить в отдельную страницу с собственным H1, title, description, текстом и человеческим URL. Всё остальное, что покупатель накликал, закрывается noindex,follow с каноническим адресом на чистую категорию — то есть в индекс не сыплются тысячи мусорных адресов.
Мелочи, которые заметны в работе
- Товары подкатегорий на странице категории — переключателем (в стандартном OpenCart их не видно вообще).
- Ноль сторонних библиотек: без jQuery и слайдер-плагинов, совместимо с CSP.
- Встроенная диагностика показывает, действительно ли перехвачена выборка, свежий ли индекс и работает ли кеш счётчиков — именно так этот класс модулей ломается тихо.
Как установить
- Загрузите сборку под свою версию и установите через «Расширения → Установка расширений».
- В «Расширения → Расширения → Модули» найдите «CatCode Умный фильтр» и нажмите Install.
- Откройте настройки и нажмите «Установить» — создадутся таблицы и события.
- Соберите индекс кнопкой «Переиндексировать», выберите, какие атрибуты становятся фасетами.
- Поставьте модуль в макет категории через «Дизайн → Макеты».
Что получает админ
Фасеты складываются из того, что у вас уже есть в каталоге: категория, атрибуты и опции товаров, цена, наличие, рейтинг. Ничего отдельно описывать не нужно — модуль берёт атрибуты и опции OpenCart как есть.
Для каждого фасета настраивается, как он выглядит покупателю: чекбоксы, ползунок для числовых значений или диапазон. Порядок фасетов в панели задаёте вы — то, чем в вашей категории действительно фильтруют, ставится первым.
Индекс перестраивается сам, когда товар меняется, и его можно перестроить полностью одной кнопкой — это понадобится один раз, после первого импорта большого прайса.
Как это работает — шаг за шагом
1. После установки модуль строит собственную плоскую таблицу-индекс «товар → значение». Это разовая операция, дальше индекс живёт сам.
2. Покупатель ставит галочку в фильтре. Запрос идёт не по таблицам product_attribute и product_option, а по этому индексу — одним простым SELECT вместо кучи JOIN-ов.
3. Счётчики возле остальных значений пересчитываются из того же индекса, поэтому они честные: показывают именно то, что найдётся, а не общее количество товаров со значением.
4. Выдача обновляется без перезагрузки, а состояние фильтра пишется в URL.
5. Товар изменили в админке или обновили импортом — индекс для этого товара перестраивается автоматически.
Почему это быстрее
Стандартная фильтрация OpenCart собирает выборку join-ами по product_attribute, product_option_value и product_description. Каждый добавленный фасет — это ещё один JOIN, и на каталоге в несколько десятков тысяч товаров запрос превращается в многосекундный.
Плоский индекс «товар → значение» эту проблему снимает в корне: фасетов может быть пять или пятнадцать, структура запроса не меняется. Именно поэтому магазин с большим прайсом получает от модуля больше всего — на каталоге в двести товаров разницу вы не заметите.
Бесплатная версия и Pro
Бесплатная версия — это полноценный фильтр: все типы фасетов, честные счётчики, слияние дублей значений, числовые диапазоны, ползунок цены с реальными границами выборки, применение без перезагрузки, состояние в URL, мобильная шторка. Ограничений по времени и рекламы в админке нет.
Pro добавляет SEO-страницы фильтра: вы выбираете комбинацию фильтров, которую стоит продвигать («жёлтые шкафы», «ноутбуки до 30 000»), и она получает собственный H1, title и человеческий URL. Остальные комбинации остаются под noindex,follow с каноникалом на чистую категорию.
Это и есть главное отличие от «фильтра из темы»: управляемая горстка посадочных страниц под низкочастотные запросы вместо либо миллиона мусорных URL в индексе, либо полного отсутствия фильтровых страниц в поиске.
Сколько стоит
Лицензия Pro — 990 грн, на один домен. Лицензия навсегда: оплачиваете один раз, без ежегодных платежей.
Технические требования
Поддерживаются OpenCart 4.0, 4.1 и 3.x, а также ocStore на их основе. Отдельные сборки под каждую ветку лежат в одном архиве.
Отдельных требований к хостингу нет: индекс — это одна обычная таблица MySQL, она не требует ни Elasticsearch, ни Redis, ни отдельного сервиса поиска.
Что под капотом
Модуль не патчит ядро: он работает через штатные события OpenCart, поэтому обновление магазина не затирает его правки, а удаление модуля не оставляет следов в файлах ядра. Пагинация и сортировка категории остаются родными.
Цена берётся с учётом спецпредложений и скидок, то есть из той же логики, что и в листинге. Поэтому не бывает ситуации, когда фильтр говорит одно, а карточка товара показывает другую цену.
Индекс обновляется по событиям сохранения товара, то есть грузит магазин ровно в момент редактирования, а не фоновым кроном раз в час.
Как установить
1. Залейте архив через «Расширения → Установщик расширений» и установите модуль в «Расширения → Модули».
2. Дождитесь построения индекса — при первом запуске модуль предлагает сделать это одной кнопкой.
3. В настройках соберите набор фасетов под свой каталог и задайте их порядок.
4. Добавьте модуль в макет категории через «Дизайн → Макеты → Category», в колонку слева или справа.
5. Если купили Pro — добавьте SEO-страницы под те комбинации фильтров, которые действительно ищут.
История версий
1.0.0 — первый выпуск. Фасеты по категории, атрибутам, цене, наличию и рейтингу; собственная таблица-индекс; честные счётчики с несуженным собственным фасетом; слияние дублей значений и числовая сортировка; ползунок цены с границами текущей выборки; применение без перезагрузки и состояние фильтра в URL; мобильная шторка; работа без патчей ядра. В Pro — SEO-страницы фильтра с собственным H1, title и URL, noindex,follow на остальных комбинациях и невмешательство в каноникал Yoast / Rank Math / AIOSEO.
Частые вопросы
Нужно ли править файлы ядра или шаблон?
Нет. Модуль встраивается событиями и собственной моделью каталога, ядро остаётся стоковым — обновление OpenCart его не ломает.
Выдержит ли большой каталог?
Условия фильтра идут по собственному индексу товар → значение, а не по таблицам атрибутов, поэтому добавление новых фасетов не замедляет выборку.
Что будет с дублями значений из прайсов поставщиков?
Они сливаются в одно значение, поэтому вместо трёх чекбоксов «12 В», «12в» и «12 V» покупатель видит один.
Не засорит ли фильтр индекс Google?
Нет. В индекс идёт только то, что вы сами сделали SEO-страницей; остальные комбинации отдают noindex,follow и канонический адрес на категорию.
Сколько сайтов можно активировать одним ключом?
Один. Лицензия навсегда: оплачиваете один раз, без ежегодных платежей.
Вопросы по модулю?
Пишите в Telegram — ответим в течение рабочего дня. Поможем с настройкой, совместимостью и активацией ключа.
Пока ни одного отзыва. Будь первым — ниже.
Оставить отзыв
Отзыв модерируется перед публикацией — обычно это занимает до 24 часов.
Пока вопросов нет. Спроси — мы ответим в течение 24 часов.
Задать вопрос
Обычно отвечаем в течение 24 часов в рабочее время.
Покупка модуля
—