Задача клиента
У клиента интернет-магазин на 1С-Битрикс. В карточке товара не было блока с альтернативными товарами — покупатель, если не находил то, что искал, просто уходил, а магазин терял продажу, хотя нужный или похожий товар мог быть в наличии.
Стандартного решения «из коробки», которое устроило бы клиента, не было: обычные блоки «Похожие товары» в Bitrix либо показывают товары просто из того же раздела без учёта характеристик, либо требуют ручной привязки, что нереально при большом каталоге.
Что нужно было сделать
Реализовать блок «Схожие по характеристикам» — товары, которые совпадают с текущим по значениям конкретных свойств, а не просто находятся в одном разделе. В интерфейсе сайта блок называется короче и привычнее для покупателя — «Аналоги»; «Схожие по характеристикам» здесь и далее — рабочее название механики, которое точнее описывает, как именно она устроена.
Ключевое условие: автоматический расчёт, без ручной работы менеджеров. Каталог обновляется, и товары должны «пересобираться» в похожие группы сами.
Как решали
Логика сравнения. Товары сравнивались в пределах одного раздела каталога — это упростило задачу: у товаров внутри раздела набор свойств примерно одинаковый (одна и та же товарная категория — одни и те же характеристики для сравнения). Схожесть определялась по совпадению значений конкретных свойств между товарами.
Почему расчёт вынесен в фон, а не считается «на лету». Если сравнивать товары в момент открытия карточки — это лишняя нагрузка на базу при каждом просмотре страницы, особенно в разделах с большим количеством товаров. Поэтому расчёт схожести был вынесен в cron-задачу (агент Bitrix), которая ночью проходит по каталогу, пересчитывает связи между товарами и сохраняет готовый результат. Днём карточка товара просто отображает уже посчитанные данные — без дополнительной нагрузки на сайт в рабочие часы, когда на сайте больше всего посетителей.
Итог для клиента. Блок работает в проде, обновляется автоматически каждую ночь и не требует ручного участия менеджеров — при появлении новых товаров или изменении характеристик связи пересчитываются сами.
Схема работы
- Cron-задача (агент Bitrix) — запускается ночью по расписанию
- Обход товаров по разделам — каталог проходится раздел за разделом
- Сравнение значений свойств — товар сравнивается с товаром внутри своего раздела
- Сохранение результата — готовые связи между товарами записываются заранее
- Карточка товара днём — просто показывает уже готовый список, без пересчёта на лету
Ночью — вся тяжёлая работа, днём — только быстрое чтение готовых данных, без нагрузки на сайт в рабочее время.
Результат
Что получили в результате:
- в карточке товара появился рабочий блок альтернатив, которого раньше не было вообще;
- решение работает автономно, без нагрузки на сайт в дневное время;
- клиент не тратит время команды на ручное сопоставление товаров.
Похожая задача?
Если у вас интернет-магазин на Bitrix, Yii2 или Laravel и есть похожая потребность — автоматизировать вывод похожих, сопутствующих или рекомендованных товаров — посмотрите услуги по разработке и доработке сайтов или напишите напрямую: admin@precord.ru.
