Перейти к содержимому

Персональные рекомендации - блок на витрине, данные, проверка

Включаем блок персональных рекомендаций на витрине: подключение сервиса, вывод компонентом, кэш и композит, проверка качества выдачи.

Что нужно знать заранее

Персональные рекомендации считает облачный сервис платформы, а не ваш сайт. Витрина отправляет обезличенные события просмотров и покупок, а в ответ получает список товаров под конкретного посетителя.

Из этого следует главное ограничение: без доступа в интернет и без подключения к сервису блок работать не будет. На закрытом контуре и на стенде без сети рекомендации показывать нечем.

Блок рекомендаций персонален, поэтому его нельзя отдавать из общего кэша страницы. Для композитного сайта это отдельная динамическая область, а не часть готовой разметки страницы.

Шаги

  1. Подключить сайт к сервису рекомендаций в настройках модуля больших данных.
  2. Убедиться, что события просмотров и покупок уходят с витрины без ошибок.
  3. Поставить компонент рекомендаций на карточку товара, корзину и главную страницу.
  4. Исключить блок из общего кэша страницы и оставить его динамическим.
  5. Предусмотреть запасной вариант вывода, когда рекомендаций для посетителя нет.

Решение

Выводим блок рекомендаций на карточке товара:

$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,
]);

Запасная подборка закрывает и новых посетителей, и сбой сервиса. Она собирается из своих данных, кэшируется обычным образом и не требует ничего от внешней системы.

Типичные проблемы

Блок рекомендаций пустой у всех посетителей.

Сайт не подключён к сервису рекомендаций или события с витрины не отправляются. Подключение проверяют в настройках модуля, а отправку событий - в консоли браузера.

Разным посетителям показываются одинаковые товары.

Блок попал в общий кэш страницы и отдаётся всем одинаковым. Персональный блок исключают из кэша готовых страниц и делают динамическим.

На стенде рекомендации не появляются вовсе.

У стенда нет доступа в интернет или он не подключён к сервису рекомендаций. Проверять такой блок нужно на боевом сайте или на копии с доступом наружу.

Заголовок блока висит без товаров под ним.

Компонент вернул пустой список, а шаблон всё равно выводит заголовок. Пустой блок скрывают полностью или заменяют запасной подборкой.

В рекомендациях появляются снятые с продажи товары.

Сервис отдаёт идентификаторы, а витрина не проверяет доступность товара. Список фильтруют по активности и наличию перед выводом.

Частые вопросы

Чем персональные рекомендации отличаются от подборки хитов?

Подборка одинакова для всех и собирается из своих данных, а рекомендации считаются под конкретного посетителя. На малом трафике разница почти незаметна.

Какие данные уходят в сервис?

Обезличенные события просмотров, добавлений в корзину и покупок. Персональные данные покупателей туда не передаются, но политику проекта стоит проверить с юристом.

Работают ли рекомендации без интернета?

Нет, расчёт идёт на стороне облачного сервиса платформы. Для закрытого контура берут свои подборки по данным сайта.

Где размещать блок рекомендаций?

Классические места: карточка товара, корзина и главная страница. На страницах оформления заказа блок обычно только отвлекает от покупки.

Как оценить пользу такого блока?

По доле заказов, где товар пришёл из блока рекомендаций, а не по числу показов. Событие клика по товару блока отправляют в аналитику отдельно.

Смежное

Первоисточник