Розробка pop-up модулів на 1С-Бітрікс під ключ
Спливаюче вікно, що з'являється невчасно, дратує. Те саме вікно в потрібний момент з релевантною пропозицією приносить підписників і продажі. Різниця — в тригерах, таргетингу та технічному виконанні. Ми маємо понад 5 років досвіду розробки pop-up модулів на 1С-Бітрікс і реалізували понад 20 проєктів. У Бітрікс немає вбудованого конструктора pop-up'ів. Маркетплейсні рішення перевантажені та конфліктують з композитним кешем. Кастомна розробка дає повний контроль: що показуємо, кому, коли і як часто. Кастомний pop-up у 3 рази швидше завантажується і не конфліктує з кешем.
Чому кастомний pop-up краще готових рішень?
Маркетплейсні рішення часто мають зайві залежності, погано інтегруються з кастомною логікою і не завжди підтримують сучасні тригери. Наш підхід — модуль, керований через інфоблок, з гнучкою системою тригерів та таргетингу. Гарантуємо сумісність з composite‑кешем і відсутність конфліктів з іншими модулями.
Як працюють тригери показу?
Тригер — подія, що ініціює показ pop-up. Технічно кожен тригер — обробник JavaScript, що викликає функцію показу модального вікна.
Exit-intent — курсор миші рухається до верхньої межі viewport. Відстежується через mouseleave на document.documentElement. На мобільних — скрол вгору, що детектується через touchmove:
document.addEventListener('mouseleave', (e) => { if (e.clientY < 10) showPopup('exit-intent'); }); Глибина скролу — користувач проскролив 50%, 70% або до кінця сторінки. Використовуємо IntersectionObserver на маркерному елементі або обчислюємо відсоток через window.scrollY / (document.body.scrollHeight - window.innerHeight).
Час на сторінці — setTimeout із затримкою 15-30 секунд.
Неактивність — користувач не рухає мишею і не скролить N секунд. Реалізується через debounce-таймер, що скидається на mousemove, scroll, keydown.
Клік по елементу — стандартний addEventListener('click'). Кількість переглянутих сторінок — лічильник у sessionStorage.
Як налаштувати таргетинг для різних груп користувачів?
Pop-up без таргетингу — спам. Умови перевіряються на сервері при генерації конфігу та на клієнті при спрацюванні тригера.
Серверні умови (формуються в PHP-компоненті):
- Група користувача (авторизований / гість / конкретна група) через
$USER->GetUserGroupArray(). - Розділ сайту: тільки каталог, головна, виключити кошик через
$APPLICATION->GetCurDir(). - Тип пристрою: десктоп / мобільний по User-Agent.
- UTM-мітки: показати відвідувачам з рекламної кампанії, перевірка
$_GET['utm_source']зі збереженням у сесію.
Клієнтські умови:
- Частота показу: не частіше разу на добу / за сесію / за N візитів через
localStorageз timestamp. - Закриття: якщо користувач закрив pop-up — не показувати повторно, прапорець
popup_{id}_closed.
Архітектура: компонент + інфоблок
Pop-up'и керуються через інфоблок. Кожен елемент — окремий pop-up з налаштуваннями:
| Властивість | Тип | Призначення |
|---|---|---|
| TRIGGER_TYPE | Список | exit-intent, scroll, timeout, inactivity |
| TRIGGER_VALUE | Рядок | Відсоток скролу / секунди затримки |
| TARGET_PAGES | Рядок | Маска URL: /catalog/, /, виключення |
| TARGET_GROUPS | Прив'язка | Групи користувачів |
| SHOW_FREQUENCY | Список | once, daily, session |
| POPUP_TEMPLATE | Список | Шаблон: subscribe, promo, feedback |
| CONTENT | HTML | Вміст pop-up |
| ACTIVE_FROM / ACTIVE_TO | Дата | Період активності |
Компонент local:popup.manager підключається в header.php. Він вибирає активні pop-up'и, фільтрує за серверними умовами і формує JSON-конфігурацію для JavaScript.
Сумісність з composite-кешем
Composite cache кешує HTML. Якщо конфігурація pop-up'ів зашита в HTML — на закешованій сторінці буде застарілий набір. Рішення — винесення конфігурації в AJAX-endpoint. При завантаженні сторінки JavaScript запитує /ajax/popup_config.php, отримує JSON. Сторінка повністю кешується, конфігурація завжди актуальна. Запит важить 1-3 КБ і виконується за 20-50 мс. Динамічна область Bitrix Frame — альтернатива для складних сценаріїв.
Типові шаблони
Підписка на email — форма з одним полем і кнопкою, відправка через AJAX в обробник, що додає email до поштового списку Бітрікс (\Bitrix\Sender\Internals\Model\PostingRecipientTable) або через API зовнішнього сервісу. Обов'язково подвійне підтвердження (double opt-in) для відповідності ФЗ-152.
Промо-код — показуємо код знижки з копіюванням по кліку. Код береться з купонів модуля sale (\Bitrix\Sale\Internals\DiscountCouponTable). Можна генерувати унікальний купон для кожного відвідувача.
Зворотний дзвінок — форма ім'я + телефон, відправка створює лід в CRM Бітрікс24 через REST API (crm.lead.add) або записує в локальний інфоблок.
Аналітика показів
Без аналітики незрозуміло, чи працює pop-up. Мінімум — три метрики: покази, закриття, конверсії. Дані надсилаються в Яндекс.Метрику / Google Analytics через ym(COUNTER_ID, 'reachGoal', 'popup_show_' + popupId) або у власну таблицю b_popup_stats.
Що входить в роботу
- Проєктування архітектури та налаштування інфоблоку
- Розробка кастомного компонента з тригерами та таргетингом
- Інтеграція з композитним кешем (AJAX або Frame)
- Налаштування аналітики показів та конверсій
- Документація, навчання адміністраторів, підтримка протягом місяця
Строки
| Варіант | Склад | Строк |
|---|---|---|
| Один pop-up | Фіксований тригер, один шаблон, без керування з адмінки | 2-3 дні |
| Конструктор | Інфоблок, кілька тригерів, таргетинг, composite-сумісність, аналітика | 7-12 днів |
Оцінимо ваш проєкт і запропонуємо оптимальне рішення. Пишіть — розрахуємо строки та вартість індивідуально.







