Рекомендации на сайте 1С-Битрикс
В модуле «Октопус CDP» (с версии 0.9.0) есть два способа вывести на сайте подборки товаров от Октопуса:
- компонент «Рекомендации Октопуса» — ставится на страницу и выводит товары каталогом сайта, с его оформлением и ценами;
- PHP-класс
\OctopusCDP\Client\Recommendations— возвращает ID товаров, чтобы передать их в любой компонент или обработать в своём коде.
Оба работают через метод GET /recommendations: там подробно описано, как строятся подборки и когда они доступны.
Подборки
| Подборка | Где показывать | Что нужно |
|---|---|---|
| Вам может понравиться | Главная, личный кабинет, пустая корзина | — |
| Похожие товары | Карточка товара | ID товара |
| С этим покупают | Карточка товара или корзина | ID товара или текущая корзина |
| Вы недавно смотрели | Карточка товара, личный кабинет | — |
«Вы недавно смотрели» доступно на всех тарифах, остальные подборки — с тарифа «Рост» и при условии, что в Октопус передано не меньше 20 товаров.
Перед началом
- Модуль «Октопус CDP» обновлён до версии 0.9.0 или новее.
- В настройках модуля выбран инфоблок товаров — товары выгружаются в Октопус. Без него подборки не запрашиваются.
- В кабинете Октопуса сопоставлены поля товаров, в том числе ссылка на страницу товара: по ней просмотры привязываются к товарам.
Компонент «Рекомендации Октопуса»
В визуальном редакторе компонент находится в группе «Октопус CDP». Его можно разместить в шаблоне сайта или на странице, как любой другой компонент.
Параметры
| Параметр | Описание |
|---|---|
| Подборка | Вам может понравиться, Похожие товары, С этим покупают, Вы недавно смотрели |
| Заголовок блока | Выводится над товарами. Пусто — без заголовка |
| Количество товаров | До 50 |
| ID товара | Для похожих и «с этим покупают». В карточке товара — ID текущего товара |
| К корзине | «С этим покупают» без ID товара подбирает к текущей корзине посетителя |
| Не дороже, % от суммы корзины | Для подборки к корзине. По умолчанию 30 %, 0 — без ограничения |
| Только из разделов | ID разделов каталога сайта |
| Только со значением свойства | Код свойства (например, BRAND) и значение |
| Как у текущего товара | Код свойства: подбирать товары с тем же значением, например «ещё от этого бренда» |
| Шаблон компонента catalog.section | Каким шаблоном выводить товары. Пусто — шаблон по умолчанию |
| Типы цен | Какие цены показывать |
| Время кеширования | По умолчанию 15 минут |
Коды свойств — те, с которыми свойства передаются в Октопус (обычно код свойства инфоблока). Свойство должно быть сопоставлено с полем товара в кабинете Октопуса.
Примеры
Карточка товара — похожие и «ещё от этого бренда»:
<?php $APPLICATION->IncludeComponent('octopus.recommendations', '', [
'TYPE' => 'similar',
'PRODUCT_ID' => $arResult['ID'],
'LIMIT' => 8,
'BLOCK_TITLE' => 'Похожие товары',
]); ?>
<?php $APPLICATION->IncludeComponent('octopus.recommendations', '', [
'TYPE' => 'similar',
'PRODUCT_ID' => $arResult['ID'],
'SAME_PROPERTY' => 'BRAND',
'BLOCK_TITLE' => 'Ещё от этого бренда',
]); ?>
Корзина — «с этим покупают»:
<?php $APPLICATION->IncludeComponent('octopus.recommendations', '', [
'TYPE' => 'bought_together',
'USE_BASKET' => 'Y',
'MAX_PRICE_SHARE' => 30,
'LIMIT' => 6,
'BLOCK_TITLE' => 'Дополните покупку',
]); ?>
Главная страница:
<?php $APPLICATION->IncludeComponent('octopus.recommendations', '', [
'TYPE' => 'personal',
'LIMIT' => 12,
'BLOCK_TITLE' => 'Вам может понравиться',
]); ?>
Как выводятся товары
Компонент получает от Октопуса ID товаров и подключает bitrix:catalog.section с фильтром по этим ID и в порядке, в котором их вернул Октопус. Поэтому товары выглядят так же, как в каталоге сайта.
Чтобы изменить вёрстку, скопируйте шаблон компонента в шаблон сайта или укажите свой шаблон catalog.section. Любые параметры catalog.section можно передать массивом CATALOG_PARAMS. ID товаров доступны в шаблоне как $arResult['ITEMS_IDS'].
Когда блок не выводится
Если подбирать нечего — не выбран инфоблок товаров, тариф не подходит, у товара нет данных, Октопус не ответил за секунду — блок просто не выводится. Администратор сайта видит на месте блока причину, посетители — ничего.
PHP-класс для своего кода
Если нужны только ID товаров — передать их в другой компонент, сохранить, отдать в JavaScript — используйте класс напрямую:
\Bitrix\Main\Loader::includeModule('octopuscdp.client');
use OctopusCDP\Client\Recommendations;
$ids = Recommendations::get('similar', ['product' => $elementId, 'limit' => 8]);
if (!$ids && ($error = Recommendations::getLastError())) {
// почему подборка пустая
}
get() возвращает ID элементов инфоблока товаров сайта в порядке показа — только активные на сайте, не больше limit.
Параметры
| Параметр | Описание | По умолчанию |
|---|---|---|
limit | Сколько товаров, до 50 | 8 |
product | ID товара — для similar и bought_together | — |
basket | bought_together без product — подбирать к текущей корзине | true |
max_price_share | К корзине: не дороже этого % от её суммы, 0 — без ограничения | 30 |
section | Массив ID разделов | — |
filter | ['КОД_СВОЙСТВА' => 'значение'], несколько значений — через запятую | — |
same | Код свойства: значение как у product или товаров корзины | — |
cache_time | Кеш ответа, секунд | 900 |
Первый аргумент — тип подборки: personal, similar, bought_together или recently_viewed.
Примеры
// «Вам может понравиться» только из бренда Nike
$ids = Recommendations::get('personal', ['filter' => ['BRAND' => 'Nike'], 'limit' => 12]);
// Похожие из разделов 15 и 17
$ids = Recommendations::get('similar', ['product' => $elementId, 'section' => [15, 17]]);
// Вывести своим компонентом
$GLOBALS['arRecoFilter'] = ['ID' => $ids ?: [0]];
$APPLICATION->IncludeComponent('bitrix:catalog.top', 'my-slider', [
'IBLOCK_ID' => $catalogIblockId,
'FILTER_NAME' => 'arRecoFilter',
// ...
]);
Как модуль определяет посетителя
- Авторизованный посетитель, а также пришедший по ссылке из рассылки Октопуса, — как клиент: подборки учитывают его историю с любых устройств.
- Гость — по текущей сессии: подборка строится по тому, что он смотрел и клал в корзину на сайте.
- Поисковым роботам персональные подборки не запрашиваются: «Вам может понравиться» показывает им общие популярные товары, «Вы недавно смотрели» — ничего.
Кеш и композитный сайт
- Ответы Октопуса кешируются: подборки к товару — на время из настроек (по умолчанию 15 минут), персональные — не дольше 5 минут на посетителя, «Вы недавно смотрели» — минуту.
- Если Октопус ответил, что тариф не позволяет подборки или каталог не подключён, модуль запоминает это на час и всё это время не отправляет запросы.
- На композитном сайте «Вам может понравиться» и «Вы недавно смотрели» выводятся динамической областью: страница остаётся в кеше, а блок у каждого посетителя свой. «Похожие» и «С этим покупают» от посетителя не зависят и кешируются вместе со страницей.