# Создание товарной рекомендации
Сайт → Товарные рекомендации → Добавить.
# Смысл для бизнеса
# Название
Имя рекомендации в админке.
# Статус
Работает / Остановлено / В архиве.
# Источник каталога
Smart-фид (или другой unified feed) — откуда брать товары. Без фида рекомендация не из чего строить выдачу.
# Сигнал для обучения
# Метрика оптимизации
Что максимизируем при ранжировании (конверсии, выручка и т.д. — список в UI).
# Цель конверсии
Конкретная цель для обучения.
# Моделируемая конверсия (опционально)
Связь с моделируемой конверсией для согласованного сигнала с рекламой.
# После сохранения
- Создайте плейсменты и выберите способ их показа.
- Политика обновления модели подбирается автоматически по настройкам продукта.
# Размещения
Размещение связывает одну или несколько товарных рекомендаций с местом на сайте. В нём можно задать сценарий, число товаров, условия активации и фильтр товаров.
# Управляемый блок
Sales Ninja сам собирает карточки и вставляет блок по CSS-селектору. В редакторе доступны сетка, список или карусель, размеры и стиль карточек, параметры изображения, состав контента, текст кнопки и безопасные цвета. Настройки сгруппированы над превью, которое обновляется сразу и переключается между desktop- и mobile-режимами.
# JS-интеграция
Для SPA можно выбрать режим без автоматической отрисовки:
const unsubscribe = await ninja('onProductRecommendations', {
placementId: 'placement-id',
handler: ({ status, placementId, items, presentation }) => {
if (status === 'cleared') return clearRecommendations(placementId)
// Передайте данные в React/Vue/другой renderer.
}
})
Если placementId не указан, handler получит все data-only размещения. Bundle повторно вызывает handler при SPA-переходах. status: 'cleared' и items: [] означают, что старый блок нужно убрать. Функция unsubscribe освобождает подписку.
Сохраните unsubscribe и вызовите его только при размонтировании SPA-компонента или окончательном отключении интеграции.