Внимание, модуль кардинально переработан. Функционала стало больше на порядок.
Блок «Похожие товары» на карточке, который сам решает, что показать. Несколько признаков похожести, вес каждого настраивается в админке — от совпадения атрибутов до статистики «с этим товаром обычно смотрят».
Зачем он нужен
Ручная простановка связанных товаров не масштабируется: на сотне позиций это терпимо, на трёх тысячах — никогда не делается. В итоге блок либо пустует, либо показывает то, что заполнили два года назад.
Модуль подбирает похожие товары автоматически, на основе данных, которые в каталоге уже есть: атрибутов, категорий, производителя, цены, артикулов. А если на магазине есть трафик — ещё и на основе того, что покупатели реально смотрят вместе.
Шесть признаков похожести
Каждый признак работает независимо и добавляет товару баллы. Итоговый список отсортирован по сумме баллов — наверху то, что похоже сразу по нескольким признакам.
- Совпадение атрибутов. Основной признак для каталогов с заполненными характеристиками. Умеет сравнивать атрибуты со списком значений через разделитель — например, «8gb, 16gb» совпадёт с «16gb».
- Общие категории. Чем больше общих категорий, тем выше балл.
- Тот же производитель. Может работать и мягко (добавляет баллы), и жёстко (показывать только товары того же бренда).
- Близость цены. Товар из того же ценового сегмента получает больше баллов, чем вдвое более дорогой аналог.
- Та же серия по артикулу. Находит модельный ряд и цветовые вариации: XR-500-BLK и XR-500-RED — одна серия, XR-900-GRN — уже другая. Работает по полю Model, SKU или MPN.
- Смотрели также. Модуль накапливает статистику совместных просмотров и предлагает товары по принципу маркетплейсов: «с этим товаром обычно смотрят вот эти».
Весовые коэффициенты вместо жёстких правил
Обычная беда таких модулей — цепочка условий «И»: не совпал атрибут, не тот бренд, цена мимо коридора — блок пустой. Здесь признаки не отсекают товары, а набирают баллы.
Вклад каждого признака приводится к диапазону от 0 до 1 и умножается на его вес, поэтому веса сравнимы между собой напрямую: признак с весом 40 ровно вдвое важнее признака с весом 20. Вес 0 просто выключает признак.
На практике это значит, что настройку можно менять плавно. Плохо заполнены атрибуты — поднимите вес категорий и цены. Каталог из модельных рядов — дайте вес серии. Пошёл трафик — включите «Смотрели также» и поставьте ему вес выше остальных.
«Смотрели также» — рекомендации на реальном поведении
Модуль запоминает, какие товары посетители открывают в рамках одной сессии, и строит на этом связи между товарами. Чем чаще пару смотрят вместе, тем выше она в выдаче.
- Данные обезличены: хранятся только идентификаторы товаров и счётчик. Ничего о посетителях не собирается и никуда не передаётся.
- Пара засчитывается один раз за сессию — перезагрузки страницы не накручивают статистику.
- Запросы поисковых роботов не учитываются.
- Статистика ведётся отдельно по каждому магазину.
- В админке видно, сколько данных накоплено, и есть кнопка полной очистки.
Признаку нужно время, чтобы набрать данные. На новом магазине он бесполезен, на работающем — обычно самый точный из шести.
Кэш, за которым не нужно следить
Результат подбора сохраняется в отдельную таблицу базы и заполняется сам: первый заход на карточку товара считает подбор, все следующие берут готовый. Никаких кнопок «пересчитать» и заданий по расписанию — кэш сбрасывается автоматически, как только товар добавили, изменили, скопировали или удалили в админке, а также при сохранении настроек модуля.
При этом устаревших данных в блоке не будет: в кэше лежат только идентификаторы товаров, баллы и отличия, а цена, наличие, акции и рейтинг всегда читаются актуальные. Товар, который закончился или ушёл с витрины, исчезает из блока сразу, не дожидаясь пересчёта.
Отбор товаров под ваш каталог
Помимо весов есть жёсткие условия, которым товар обязан удовлетворять, чтобы попасть в блок:
- только товары в наличии и только с ценой;
- коридор допустимой разницы цен в процентах;
- ограничение по категориям: только из категорий самого товара, только из выбранных вручную, либо каскадом — сначала своя категория, потом выбранные, потом весь каталог, пока не наберётся нужное количество;
- список атрибутов, которые нужно исключить из сравнения — или, наоборот, единственные, по которым сравнивать;
- максимальное число отличий в характеристиках;
- минимальный балл похожести, ниже которого товар не показывается.
Вывод на сайте
- Собственный шаблон блока либо шаблон стандартного модуля «Рекомендуемые товары» — если тема оформления стилизует именно его.
- Свой заголовок блока для каждого языка магазина.
- Под каждым товаром можно показывать, чем именно он отличается от текущего: «Память: 16 ГБ», «Цвет: чёрный». Покупателю не нужно открывать карточку, чтобы понять разницу.
- Размер изображений и количество товаров настраиваются.
- Несколько экземпляров модуля с разными настройками — например, «Похожие модели» в одном месте страницы и «Смотрели также» в другом.
Установка без правок ядра
Модуль не изменяет файлы OpenCart и не использует модификаторы (ocmod). Устанавливается штатно через «Установка расширений», затем добавляется в макет страницы товара. Обновлять модификаторы и чистить их кэш не нужно — ломаться после обновления OpenCart тут нечему.
Все запросы к базе выполняются пакетно, без обращения к базе внутри циклов, а у каждого запроса подбора есть ограничение на количество строк. Модуль остаётся предсказуемым по нагрузке и на каталоге в десятки тысяч позиций.
Технические характеристики
- Совместимость: OpenCart 3.0.x, ocStore 3.0.x
- Версия PHP: 5.6 и новее, включая PHP 8
- База данных: MySQL, MariaDB
- Правки ядра: не требуются
- Модификаторы (ocmod): не используются
- Языки интерфейса: русский, английский
- Мультимагазин: поддерживается, статистика ведётся по каждому магазину отдельно
- Мультиязычность: поддерживается, заголовок задаётся для каждого языка
- Установка: штатная, через «Установка расширений»
- Исходный код: открыт, без шифрования и привязки к домену
Что нового в версии 4.02
- Подбор переведён на взвешенный скоринг с настройкой весов в админке — вместо цепочки жёстких условий, из-за которой блок часто оказывался пустым.
- Новый признак: поиск по серии артикула (Model, SKU, MPN).
- Новый признак: «Смотрели также» со сбором статистики совместных просмотров.
- Кэш подбора: заполняется сам при первом заходе на карточку товара и сбрасывается при изменении товаров в админке.
- Настройки разнесены по вкладкам, добавлен английский язык интерфейса.
- Модуль перестал зависеть от модификатора ядра.
- Поддержка мультимагазина при отборе товаров.
- Исправлены дубли товаров и превышение лимита в каскадном режиме категорий, потеря подходящих товаров при отборе по числу отличий, обрезка описания и пустой заголовок блока.
- Убраны запросы к базе внутри циклов — блок стал заметно легче для сервера.
- Совместимость с PHP 8.