Налаштування тригера покинутого перегляду категорії 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування тригера покинутого перегляду категорії 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування триггера залишеного перегляду категорії 1С-Bitrix

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

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

На відміну від товарів, історія переглядів розділів каталога в Bitrix не ведеться з коробки. Таблиця b_catalog_viewed_product зберігає тільки продукти. Категорії каталога — це b_iblock_section, і немає аналога CCatalogViewedProduct для розділів.

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

Зберігання історії переглядів категорій

Створюємо власну таблицю через ORM Bitrix:

// Клас таблиці через 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
  • Агент з логікою визначення залишених переглядів
  • Запит топ-товарів категорії для підстановки в комунікацію
  • Таблицю дедупліцирування з урахуванням ієрархії розділів
  • Механізм виключення користувачів, які вже купили товар з цієї категорії