Настройка ротации рекламных блоков 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С-Битрикс

Ротация — это показ разных баннеров в одной позиции по очереди или по весам. В Битриксе ротация реализована в модуле 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'] и фильтруйте баннеры по свойству региона перед передачей в ротатор.