Перейти к содержимому

Баннерная реклама в 1С-Битрикс - типы, таргетинг, показы

Модуль рекламы показывает баннеры в отведённых местах страниц. При этом он выбирает, какой именно баннер показать конкретному посетителю. Разберём модель типов и ключевых слов - без неё логика выбора кажется непредсказуемой.

Как это работает

Тип рекламы - это зона показа. Ключевая сущность модуля - тип. Это группа баннеров с общим признаком, обычно привязанная к месту на странице. Имя типа задаёт администратор произвольно, и именно строковый идентификатор связывает всё вместе. Он передаётся и в API управления показом, и в компонент вывода. Поэтому идентификатор стоит делать осмысленным.

Выбор баннера решают ключевые слова. У баннера их задают в карточке на вкладке таргетинга. У страницы для этого есть собственный набор слов, заданный в её свойствах. Механизм сопоставляет два набора между собой и выбирает подходящие баннеры внутри типа.

Управлять баннерами можно из публичной части. В режиме правки у рекламной области появляются кнопки управления, и это удобно контент-менеджерам.

Примеры

1. Вывод баннера

$APPLICATION->IncludeComponent('bitrix:advertising.banner', '', [
'TYPE' => 'TOP',
'NODATA' => 'N',
'CACHE_TIME' => 3600,
]);

Параметр типа - тот самый строковый идентификатор зоны показа.

2. Управление показом из кода

// желательные ключевые слова: расширяют выбор
CAdvBanner::SetDesiredKeywords('ноутбуки, техника', 'TOP');
// обязательные: сужают выбор до баннеров с этими словами
CAdvBanner::SetRequiredKeywords('распродажа', 'TOP');

Разница принципиальная. Желательные слова повышают шансы подходящих баннеров, а обязательные жёстко фильтруют выборку. Второй аргумент - строковый идентификатор типа, то есть той самой зоны показа.

3. Вставка баннера в текст

Сценарий из практики. В текст статьи ставят метку, а при выводе заменяют её на случайный баннер нужного типа.

$arResult['DETAIL_TEXT'] = preg_replace_callback(
'/#BANNER_([A-Za-z0-9-]+)#/',
fn($m) => CAdvBanner::GetHTML(CAdvBanner::GetRandom($m[1])),
$arResult['DETAIL_TEXT']
);

Способ замены важен: варианты с исполнением кода в шаблоне подстановки недопустимы. Такой механизм удалён из языка и открывает дыру в безопасности.

Справочник

ЭлементНазначениеОсобенности
Тип рекламызона показа, группа баннеровстроковый идентификатор связывает всё
Баннерсам рекламный материалключевые слова на вкладке таргетинга
Ключевые слова страницыконтекст выборасопоставляются со словами баннеров
SetDesiredKeywords()желательные словарасширяют выбор
SetRequiredKeywords()обязательные словажёстко фильтруют
GetRandom() / GetHTML()случайный баннер и его разметкадля вставки в текст
bitrix:advertising.bannerвывод баннерапараметр - идентификатор типа
Управление из публичной частикнопки в режиме правкидля контент-менеджеров
Гаджеты рабочего столавиджеты административной панелиотдельная часть модуля

Частые ошибки

Баннеры не показываются. Чаще всего расходятся идентификаторы типа в компоненте и в настройке баннеров, либо у баннера заданы обязательные ключевые слова, которых нет у страницы.

Путают желательные и обязательные слова. Первые расширяют выбор, вторые сужают его до совпадений.

Идентификаторы типов бессмысленные. Через полгода никто не помнит, что означает тип с абстрактным названием. А фигурирует такой идентификатор и в коде шаблона, и в настройках модуля.

Замену меток в тексте делают исполнением кода. Такой механизм удалён из языка и был небезопасен. Замену в тексте делают через функцию обратного вызова, которой передают найденную метку.

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

Частые вопросы

Что такое тип баннера и зачем он нужен?

Это группа баннеров, которая на практике играет роль зоны показа: шапка, боковая колонка, подвал. Строковый идентификатор типа связывает настройки, код управления показом и компонент вывода, поэтому он должен быть осмысленным. Внутри типа модуль выбирает конкретный баннер по ключевым словам и настройкам показа.

Чем желательные ключевые слова отличаются от обязательных?

Желательные расширяют выбор: баннеры с этими словами получают преимущество, но показаны могут быть и другие. Обязательные работают как фильтр: показываются только баннеры, у которых есть эти слова. Путаница между ними - обычная причина того, что реклама либо не показывается вовсе, либо не совпадает с ожиданиями.

Как показать разные баннеры на разных страницах?

Через ключевые слова: у страницы свой набор, у баннера - свой, и модуль сопоставляет их внутри типа. Программно набор можно задать перед выводом области, указав тип вторым аргументом. Так одна и та же зона показывает разную рекламу в разделах каталога, статьях и на главной.

Почему все посетители видят один баннер?

Скорее всего, область попала в кеш вместе со страницей - и композитный сайт, и обычное кеширование компонента сохраняют результат целиком. Рекламные блоки, которые должны меняться, выносят в динамическую зону композита или выводят без кеширования.

Связанные темы

Первоисточники