Налаштування ротації рекламних блоків 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С-Бітрікс

Ротація — це показ різних баннерів в одній позиції по черзі або за вагами. У Бітриксі ротація реалізована в модулі advertising через механізм контрактів та баннерних груп. Без цього модуля ротацію можна зробити на JavaScript або через спеціальний PHP-код.

Ротація через модуль advertising

Архітектура: Контракт (рекламна кампанія) → Баннер (конкретне оголошення) → Місце (позиція на сайті). Місце показу створюється з типом (TEXT, HTML, BANNER) та прив'язується до конкретної зони сайту.

Таблиці модуля:

  • b_adv_banner — баннери з контентом, датами, вагами показу
  • b_adv_contract — контракти (кампанії), до яких прив'язані баннери
  • b_adv_type — місця показу
  • b_adv_stat_day — денна статистика показів та кліків по баннерам

Компонент у шаблоні:

$APPLICATION->IncludeComponent('bitrix:advertising.banner', '.default', [
    'TYPE' => 'main_slider',    // символьний код місця показу
    'SHOW_COUNT' => 1,           // скільки баннерів за раз
    'CACHE_TYPE' => 'N',         // ротація + кеш несумісні
]);

Кеш для ротуючих блоків повинен бути вимкнений (CACHE_TYPE = N) — інакше всі користувачі видять один і той же закешований баннер.

Вагова ротація: механіка

В b_adv_banner поле WEIGHT визначає імовірність показу баннера. Баннер з WEIGHT = 60 буде показуватися приблизно в 60% випадків при наявності двох баннерів з сумарною вагою 100.

Модуль вибирає баннер на основі зваженої випадкової вибірки при кожному запиті. Це створює навантаження на БД при високому трафіку: кожен показ — це SELECT + INSERT в b_adv_stat_day. Для високонавантажених сайтів статистику показів краще агрегувати через чергу або вимкнути якщо не потрібна.

Ротація без модуля advertising

Якщо модуль advertising недоступний (старе видання) або його можливостей достатньо, реалізуєте ротацію через інфоблок + JavaScript.

PHP-сторона повертає всі активні баннери для позиції в JSON. JavaScript на клієнті вибирає випадковий (або наступний по черзі) та відображає:

class BannerRotator {
    constructor(banners) {
        this.banners = banners;
        this.current = Math.floor(Math.random() * banners.length);
    }

    getNext() {
        const banner = this.banners[this.current];
        this.current = (this.current + 1) % this.banners.length;
        return banner;
    }
}

const rotator = new BannerRotator(window.bannerData['main_slider']);
// Показуємо перший баннер, змінюємо кожні 5 секунд
setInterval(() => displayBanner(rotator.getNext()), 5000);

Дані баннерів виводяться в JS-змінну через PHP у шаблоні. Кеш PHP-компонента при цьому працює — дані закешовані, ротацію робить клієнт.

A/B-тестування баннерів

Модуль advertising підтримує A/B-тестування через ділення трафіку по контрактам. Практично: створюєте два баннери в одній групі з вагами 50/50, дивитеся статистику кліків в /bitrix/admin/adv_stat.php через 7-14 днів, залишаєте переможця.

Для серйозного A/B-тестування з сегментацією за пристроями, джерелами трафіку та регіонами вбудованого функціоналу не хватає — потрібна інтеграція з Google Optimize або Optimizely. Але для базового порівняння двох баннерів модуль достатній.

Показ баннерів визначеній аудиторії

Контракти модуля advertising можна налаштувати на показ конкретним групам користувачів (авторизованим/неавторизованим), у конкретне час дня, при певних умовах. Ці налаштування зберігаються в b_adv_banner у полі CONDITIONS у вигляді сериалізованого масиву.

Для регіональної ротації — комбінуйте з регіональним визначенням з $_SESSION['USER_REGION'] та фільтруйте баннери за властивістю регіону перед передачею в ротатор.