Персональные рекомендации - блок на витрине, данные, проверка
Включаем блок персональных рекомендаций на витрине: подключение сервиса, вывод компонентом, кэш и композит, проверка качества выдачи.
Что нужно знать заранее
Персональные рекомендации считает облачный сервис платформы, а не ваш сайт. Витрина отправляет обезличенные события просмотров и покупок, а в ответ получает список товаров под конкретного посетителя.
Из этого следует главное ограничение: без доступа в интернет и без подключения к сервису блок работать не будет. На закрытом контуре и на стенде без сети рекомендации показывать нечем.
Блок рекомендаций персонален, поэтому его нельзя отдавать из общего кэша страницы. Для композитного сайта это отдельная динамическая область, а не часть готовой разметки страницы.
Шаги
- Подключить сайт к сервису рекомендаций в настройках модуля больших данных.
- Убедиться, что события просмотров и покупок уходят с витрины без ошибок.
- Поставить компонент рекомендаций на карточку товара, корзину и главную страницу.
- Исключить блок из общего кэша страницы и оставить его динамическим.
- Предусмотреть запасной вариант вывода, когда рекомендаций для посетителя нет.
Решение
Выводим блок рекомендаций на карточке товара:
$APPLICATION->IncludeComponent('bitrix:catalog.bigdata.products', 'main', [ 'IBLOCK_TYPE' => 'catalog', 'IBLOCK_ID' => $iblockId, 'PAGE_ELEMENT_COUNT' => 8, // сколько товаров показываем в блоке 'CACHE_TIME' => 3600, // кэшируется обвязка, но не сам список]);Компонент сам обращается к сервису и подставляет полученные товары. Разметку блока задаёт его шаблон, поэтому вписать рекомендации в дизайн витрины проще, чем кажется на первый взгляд.
Проверяем, что сайт подключён к сервису:
\Bitrix\Main\Loader::includeModule('catalog');printf("модуль больших данных: %s\n", \Bitrix\Main\ModuleManager::isModuleInstalled('bigdata') ? 'установлен' : 'нет');// без подключённого сервиса компонент вернёт пустой список товаровДержим блок вне общего кэша страницы:
$APPLICATION->SetPageProperty('composite_frame_mode', 'no');// либо блок оформляют динамической областью композитной страницы$APPLICATION->IncludeComponent('bitrix:main.include', '', [ 'AREA_FILE_SHOW' => 'file', 'PATH' => '/include/recommend.php',]); // отдельный файл удобно подгружать запросом после загрузки страницыПерсональные данные в общем кэше - худший сценарий такого блока. Один посетитель увидит рекомендации другого, и объяснить это владельцу магазина будет невозможно.
Прячем пустой блок вместо пустого места:
if (!$arResult['ITEMS']) { return; // ничего не выводим: заголовок без товаров хуже пустоты}$items = array_filter($arResult['ITEMS'], static fn($i) => $i['CAN_BUY'] === 'Y');// снятые с продажи товары в рекомендациях отсекают перед выводом блокаПустой блок с заголовком «Вам может понравиться» выглядит поломкой. Правильное поведение - не выводить ничего или показать запасную подборку из хитов продаж.
Готовим запасной вариант подборки:
$APPLICATION->IncludeComponent('bitrix:catalog.top', 'main', [ 'IBLOCK_ID' => $iblockId, 'ELEMENT_SORT_FIELD' => 'SHOW_COUNTER', // популярные товары как запасной вариант 'PAGE_ELEMENT_COUNT' => 8,]);Запасная подборка закрывает и новых посетителей, и сбой сервиса. Она собирается из своих данных, кэшируется обычным образом и не требует ничего от внешней системы.
Типичные проблемы
Блок рекомендаций пустой у всех посетителей.
Сайт не подключён к сервису рекомендаций или события с витрины не отправляются. Подключение проверяют в настройках модуля, а отправку событий - в консоли браузера.
Разным посетителям показываются одинаковые товары.
Блок попал в общий кэш страницы и отдаётся всем одинаковым. Персональный блок исключают из кэша готовых страниц и делают динамическим.
На стенде рекомендации не появляются вовсе.
У стенда нет доступа в интернет или он не подключён к сервису рекомендаций. Проверять такой блок нужно на боевом сайте или на копии с доступом наружу.
Заголовок блока висит без товаров под ним.
Компонент вернул пустой список, а шаблон всё равно выводит заголовок. Пустой блок скрывают полностью или заменяют запасной подборкой.
В рекомендациях появляются снятые с продажи товары.
Сервис отдаёт идентификаторы, а витрина не проверяет доступность товара. Список фильтруют по активности и наличию перед выводом.
Частые вопросы
Чем персональные рекомендации отличаются от подборки хитов?
Подборка одинакова для всех и собирается из своих данных, а рекомендации считаются под конкретного посетителя. На малом трафике разница почти незаметна.
Какие данные уходят в сервис?
Обезличенные события просмотров, добавлений в корзину и покупок. Персональные данные покупателей туда не передаются, но политику проекта стоит проверить с юристом.
Работают ли рекомендации без интернета?
Нет, расчёт идёт на стороне облачного сервиса платформы. Для закрытого контура берут свои подборки по данным сайта.
Где размещать блок рекомендаций?
Классические места: карточка товара, корзина и главная страница. На страницах оформления заказа блок обычно только отвлекает от покупки.
Как оценить пользу такого блока?
По доле заказов, где товар пришёл из блока рекомендаций, а не по числу показов. Событие клика по товару блока отправляют в аналитику отдельно.
Смежное
- Каталог товаров - оглавление подтемы
- Подборки товаров: новинки, хиты и акции на витрине - запасной вариант из своих данных
- Сопутствующие товары: связи, комплекты и подарки - ручные связи вместо расчёта
- Композитный сайт: включение, динамические области, сброс - как оформить динамическую область
- Электронная торговля в аналитике: события, покупка, сверка - оценка пользы блока
- Быстрые картинки на витрине: размеры, ленивая загрузка, WebP - блок товаров и скорость страницы
- Каталог и продажи - устройство магазина целиком