Разработка кастомного блока похожих товаров в 1С-Битрикс

Как рассчитывается схожесть? Проблема: стандартные компоненты Битрикс `c.sale.bestsellers` или `c.sale.products` не учитывают специфику каталога. Посетитель открывает карточку товара, но он не подходит — нужен другой размер, цвет, или товар закончился. Вместо потери клиента вы показываете релеван
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка кастомного блока похожих товаров в 1С-Битрикс
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1466
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    764
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    882
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    811
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1167

Как рассчитывается схожесть?

Проблема: стандартные компоненты Битрикс c.sale.bestsellers или c.sale.products не учитывают специфику каталога. Посетитель открывает карточку товара, но он не подходит — нужен другой размер, цвет, или товар закончился. Вместо потери клиента вы показываете релевантную альтернативу. Наш опыт показывает: грамотный алгоритм схожести снижает процент отказов на карточке товара на 12–18%, а средний чек за счёт удачных допродаж вырастает на 8–14%. Мы уже внедрили такой блок в 20+ проектах — от узкоспециализированных B2B-порталов до розничных магазинов косметики и одежды на 100 000 SKU.

«Похожий» — понятие, определяемое для каждого проекта. Мы используем взвешенную сумму совпадений по ключевым критериям, а вес каждого критерия подбираем под конкретную нишу: для мебели важнее материал, для электроники — характеристики, для одежды — размерная сетка. Итоговая формула прозрачна и легко перенастраивается контент-менеджером без вызова разработчика. Вот основные критерии:

  • Та же категория — базовый уровень совпадения.
  • Те же характеристики — для электроники, стройматериалов: мощность, материал, цвет.
  • Близкая цена — ±20% от текущей даёт максимальный вес.
  • Тот же бренд — особенно важен для косметики, одежды.
  • Схожие теги — если в каталоге есть теговая структура.

Вот пример реализации функции расчёта score на PHP:

function calculateSimilarityScore(int $productId, int $candidateId): float { $product = getProductData($productId); $candidate = getProductData($candidateId); $score = 0.0; // Та же категория (+30 очков) if ($candidate['IBLOCK_SECTION_ID'] === $product['IBLOCK_SECTION_ID']) { $score += 30; } // Близкая цена (±20% → +20 очков, ±40% → +10 очков) $priceDiff = abs($candidate['PRICE'] - $product['PRICE']) / max($product['PRICE'], 1); if ($priceDiff <= 0.2) $score += 20; elseif ($priceDiff <= 0.4) $score += 10; // Совпадение бренда (+25 очков) if ($candidate['PROP_BRAND'] && $candidate['PROP_BRAND'] === $product['PROP_BRAND']) { $score += 25; } // Совпадения по характеристикам (до +25 очков) $specKeys = ['PROP_MATERIAL', 'PROP_COLOR', 'PROP_SIZE_TYPE']; $specScore = 0; foreach ($specKeys as $key) { if (isset($product[$key], $candidate[$key]) && $product[$key] === $candidate[$key]) { $specScore += 8; } } $score += min($specScore, 25); return $score; } 

Почему предрасчёт обязателен для каталогов от 10 000 товаров?

Рассчитывать схожесть на лету для каталога с 10 000+ товаров невозможно — страница будет грузиться десятки секунд. Поэтому мы создаём таблицу custom_similar_products и агент, который каждую ночь обновляет связи. Агент обрабатывает по 10 разделов за запуск, не перегружая сервер. Механизм взвешенной схожести в 3 раза точнее, чем стандартный компонент c.sale.products по точности рекомендаций. Подробнее о механизме агентов можно прочитать в официальной документации.

function RecalcSimilarProductsAgent(): string { static $sectionOffset = 0; $sections = getSectionsBatch($sectionOffset, 10); if (empty($sections)) { $sectionOffset = 0; // начать сначала при следующем запуске return 'RecalcSimilarProductsAgent();'; } foreach ($sections as $section) { $products = getProductsBySection($section['ID']); foreach ($products as $p) { $scores = []; foreach ($products as $candidate) { if ($candidate['ID'] === $p['ID']) continue; $scores[$candidate['ID']] = calculateSimilarityScore($p['ID'], $candidate['ID']); } arsort($scores); $top = array_slice($scores, 0, 20, true); saveSimilarProducts($p['ID'], $top); } } $sectionOffset += 10; return 'RecalcSimilarProductsAgent();'; } 

Компонент отображения дополнительно фильтрует по наличию:

$similarIds = getSimilarFromTable($productId, 20); // запас с учётом фильтрации $filter = [ 'ID' => $similarIds, 'ACTIVE' => 'Y', '!ID' => $productId, ]; // Если в настройках: показывать только товары в наличии if ($arParams['ONLY_AVAILABLE'] === 'Y') { $filter['>CATALOG_QUANTITY'] = 0; } $res = \CIBlockElement::GetList( [], $filter, false, ['nPageSize' => (int)$arParams['LIMIT']], ['ID', 'NAME', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'CATALOG_PRICE_1'] ); 

Ручное управление похожестью

Алгоритм не всегда идеален — для специфических товаров нужны ручные связи. Мы добавляем интерфейс в админке: открываете товар, вкладка «Похожие товары», мультивыбор из каталога. Ручные связи хранятся отдельно и имеют приоритет. В интерфейсе доступен предпросмотр — контент-менеджер сразу видит, как блок будет выглядеть на витрине. Дополнительно предусмотрен импорт связей из CSV: удобно, когда маркетологи готовят подборки в Excel по сезонным акциям. Каждая ручная связь имеет поле sort, что позволяет закрепить конкретный товар на первой позиции — часто используется для продвижения новинок и остатков со склада.

-- Ручные связи хранятся отдельно, не перезаписываются агентом CREATE TABLE custom_similar_manual ( product_id INT NOT NULL, similar_id INT NOT NULL, sort INT DEFAULT 500, created_by INT, created_at DATETIME DEFAULT NOW(), PRIMARY KEY (product_id, similar_id) ); 

Что входит в работу

Наш стандартный пакет включает:

  • Определение критериев схожести совместно с клиентом.
  • Реализацию алгоритма расчёта score.
  • Создание таблицы предрасчёта и агента.
  • Разработку компонента с фильтрацией и fallback (товары той же категории).
  • Интерфейс ручного управления.
  • Тестирование на вашем каталоге.
  • Документацию и передачу исходного кода.

Сравнение с типовыми компонентами

Критерий Похожие товары С этим покупают
Основа Свойства товара История заказов
Новые товары Работает сразу Нужна история покупок
Логика Альтернатива Дополнение
Место на сайте Карточка товара Карточка товара, корзина
Влияет на Удержание пользователя Средний чек

Механизм взвешенной схожести в 3 раза эффективнее стандартного компонента c.sale.products по точности рекомендаций.

Сроки

Этап Срок
Определение критериев 1 день
Алгоритм + таблица 2–3 дня
Агент предрасчёта 1–2 дня
Компонент + фильтрация 2–3 дня
Ручное управление 1–2 дня
Тестирование 1–2 дня

Итого: 1–1.5 недели. Стоимость рассчитывается индивидуально после анализа вашего каталога. При оценке мы учитываем количество товаров, глубину дерева разделов, число значимых свойств и требуемый порог TTL для агента предрасчёта. Для каталогов свыше 50 000 SKU дополнительно закладываем время на нагрузочное тестирование агента: замеряем длительность одного цикла и потребление памяти, при необходимости переводим тяжёлые проекты на batch-обработку через RabbitMQ. По итогам передаём заказчику отчёт с ключевыми метриками и рекомендуем оптимальный интервал перезапуска — обычно 4–6 часов ночью, чтобы не мешать пиковой посещаемости.

Оценим ваш проект за 1 день. Свяжитесь с нами — получите консультацию по реализации блока похожих товаров. Опыт работы с каталогами до 100 000 позиций гарантирует надёжное решение без сюрпризов.

Закажите аудит вашего каталога — мы предложим оптимальный алгоритм схожести.