Настройка триггера брошенного просмотра категории 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка триггера брошенного просмотра категории 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка триггера брошенного просмотра категории 1С-Битрикс

Просмотр категории — слабый сигнал намерения, но при серии таких просмотров без перехода в товар это уже паттерн нерешительности. Пользователь трижды заходил в «Ноутбуки», не открывал конкретные товары и уходил. Триггер на брошенный просмотр категории позволяет реагировать на этот паттерн и подтолкнуть к выбору через персонализированную коммуникацию.

Проблема: просмотры категорий не пишутся в стандартные таблицы

В отличие от товаров, история просмотров разделов каталога в Битрикс не ведётся из коробки. Таблица b_catalog_viewed_product хранит только продукты. Категории каталога — это b_iblock_section, и никакого аналога CCatalogViewedProduct для разделов нет.

Это означает: нужно самостоятельно фиксировать факт просмотра раздела. Точка входа — компонент bitrix:catalog.section или bitrix:catalog.section.list. В шаблоне компонента или через result_modifier.php добавляется AJAX-запрос на собственный endpoint при загрузке страницы.

Хранение истории просмотров категорий

Создаём собственную таблицу через ORM Битрикс:

// Класс таблицы через D7
class ViewedSectionTable extends \Bitrix\Main\ORM\Data\DataManager
{
    public static function getTableName(): string
    {
        return 'bl_catalog_viewed_section';
    }

    public static function getMap(): array
    {
        return [
            new \Bitrix\Main\ORM\Fields\IntegerField('ID', ['primary' => true, 'autocomplete' => true]),
            new \Bitrix\Main\ORM\Fields\IntegerField('FUSER_ID', ['required' => true]),
            new \Bitrix\Main\ORM\Fields\IntegerField('SECTION_ID', ['required' => true]),
            new \Bitrix\Main\ORM\Fields\StringField('SITE_ID', ['size' => 2]),
            new \Bitrix\Main\ORM\Fields\DatetimeField('DATE_VISIT'),
        ];
    }
}

При каждом хите на страницу раздела — ViewedSectionTable::add() с FUSER_ID из CSaleUser::GetAnonymousUserID() или реальным USER_ID при авторизации.

Определение «брошенности» категории

Логика сложнее, чем для товара. Варианты критериев:

  • Простой: пользователь просматривал раздел X, но не перешёл ни в один товар из него (нет записи в b_catalog_viewed_product с товаром из этого раздела за тот же период)
  • Поведенческий: пользователь 2+ раза за 24 часа открывал один и тот же раздел без покупки — признак нерешительности, нужна помощь в выборе
-- Пользователи, дважды смотревшие один раздел за сутки без покупки
SELECT fuser_id, section_id, COUNT(*) as visits
FROM bl_catalog_viewed_section
WHERE date_visit > NOW() - INTERVAL '24 hours'
GROUP BY fuser_id, section_id
HAVING COUNT(*) >= 2;

Персонализация контента триггера

Для триггера на категорию имеет смысл не просто напомнить «вы смотрели раздел», а показать топ-3 товара из этой категории. Выборка строится через CIBlockElement::GetList() с фильтром по SECTION_ID и сортировкой по полю CATALOG_QUANTITY или по количеству заказов из b_sale_order_basket.

Если в системе настроена система рекомендаций (модуль ml или сторонний сервис), можно запрашивать персональные рекомендации по FUSER_ID для конкретного SECTION_ID.

Агент и дедупликация

Аналогично триггеру на товар: агент в b_agent с интервалом 20–30 минут. Таблица дедупликации bl_abandoned_section_sent с уникальным ключом на (fuser_id, section_id, DATE(sent_at)) — не чаще одного срабатывания в сутки для одной пары.

Важный нюанс для многоуровневого каталога: если пользователь просматривал подраздел «Игровые ноутбуки» (дочерний от «Ноутбуки»), триггер не должен срабатывать дважды — на дочерний и родительский раздел. Решение: при поиске дублей подниматься по дереву разделов через b_iblock_section.IBLOCK_SECTION_ID и проверять, не было ли уже отправки по родительскому разделу.

Что настраиваем

  • Создание таблицы bl_catalog_viewed_section через миграцию ORM
  • AJAX-вызов записи просмотра из шаблона компонента bitrix:catalog.section
  • Агент с логикой определения брошенных просмотров
  • Запрос топ-товаров категории для подстановки в коммуникацию
  • Таблицу дедупликации с учётом иерархии разделов
  • Механизм исключения пользователей, уже купивших товар из этой категории