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

Баннер не показывается - разбор причин

Баннер заведён в модуле рекламы, тип создан, картинка загружена, а на странице пусто: ни разметки, ни ссылки. Разбираем причины по убыванию частоты, начиная с того, доходит ли дело до отбора баннера внутри типа.

С чего начать

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

Ставим маркеры вокруг вызова компонента:

var_dump(\Bitrix\Main\Loader::includeModule('advertising')); // в младших редакциях модуля нет
echo '<!-- зона MAIN_TOP: начало -->';
$APPLICATION->IncludeComponent('bitrix:advertising.banner', '', [
'TYPE' => 'MAIN_TOP', // строковый идентификатор типа рекламы, он же зона показа
]);
echo '<!-- зона MAIN_TOP: конец -->';

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

Смотрим отданную посетителю страницу:

Окно терминала
curl -s 'https://example.com/' | grep -n 'зона MAIN_TOP'
# ни одного маркера - код зоны не выполнялся: шаблон, кэш или редакция продукта
# два маркера подряд - компонент отработал, но баннер не прошёл отбор

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

Сверяем настройки в админке по этому пути:

Маркетинг -> Баннерная реклама -> Типы баннеров - тип, он же зона показа
Маркетинг -> Баннерная реклама -> Баннеры - активность, даты, ключевые слова
Публичная часть -> режим правки - кнопки управления рекламной областью

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

Снимаем ключевые слова как причину:

// подставляем ключевые слова самого баннера, вторым аргументом - тип рекламы
CAdvBanner::SetDesiredKeywords(array('Partners', 'Cooperation'), 'MAIN_TOP');
CAdvBanner::SetRequiredKeywords(array('Partners'), 'MAIN_TOP');

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

Логика отбора по словам такая:

Страница: desired = [Partners, Cooperation, Company]
Баннер A: keywords = [Company] -> показ ДА (совпало одно слово, логика ИЛИ)
Баннер B: keywords = [News] -> показ НЕТ (совпадений нет вовсе)
Страница: required = [Partners, Cooperation]
Баннер C: keywords = [Partners] -> показ НЕТ (не хватает Cooperation, логика И)

Желательные слова работают по ИЛИ и только расширяют выбор, обязательные работают по И и жёстко фильтруют его. При обязательных словах без совпадений показываются баннеры, у которых ключевых слов нет вовсе.

Проверяем композитную копию страницы:

Окно терминала
ls /home/bitrix/www/bitrix/html_pages/example.com/ | head
php -f /home/bitrix/www/bitrix/modules/main/tools/cron_html_pages.php 10
# папку композита не удаляют руками: кэш сбрасывают из админки или этим скриптом

Готовая страница композита отдаётся посетителю до выполнения кода зоны. Пока копия жива, в браузере видна разметка, собранная ещё до появления баннера, и правки в карточке на неё никак не влияют.

Причины

  1. Компонент выводится без указанного типа рекламы примерно 30% случаев

    ПризнакВ шаблоне вызов баннера стоит, а в отданной странице между маркерами пусто.

    ПроверкаСверяем строковый идентификатор типа в параметрах компонента и в карточке самого баннера.

    Что делатьЗадаём тип рекламы в настройках компонента: из дистрибутива он приходит ненастроенным и молчит.

  2. Баннер неактивен или вышел из периода показа примерно 22% случаев

    ПризнакБаннер работал раньше и пропал сам по себе, без единой правки шаблона.

    ПроверкаСмотрим признак активности и обе даты показа в карточке баннера, а не вёрстку.

    Что делатьВключаем баннер и продлеваем дату окончания либо очищаем её, если срок не нужен.

  3. Обязательные ключевые слова не совпали со словами страницы примерно 18% случаев

    ПризнакНа одной странице баннер виден, а на соседней странице той же зоны его нет.

    ПроверкаПодставляем ключевые слова баннера прямо из кода и смотрим, вернулся ли он в зону.

    Что делатьПереводим набор в желательные слова либо задаём странице свойство adv_desired_target_keywords.

  4. Исчерпан лимит показов или переходов примерно 12% случаев

    ПризнакБаннер исчез после всплеска трафика, хотя даты показа ещё не закончились.

    ПроверкаСмотрим остаток показов и переходов в карточке баннера рядом с настройками ротации.

    Что делатьПоднимаем лимит или снимаем его совсем, если ограничение пришло из старого контракта.

  5. Баннер привязан к другому сайту или другой группе посетителей примерно 10% случаев

    ПризнакНа одном домене многосайтовой сборки баннер виден, а на втором домене его нет.

    ПроверкаПроверяем список сайтов и групп в карточке баннера, а страницу открываем гостем.

    Что делатьДобавляем нужный сайт в привязку и открываем показ группе неавторизованных посетителей.

  6. Страница отдаётся из кэша со старой разметкой примерно 8% случаев

    ПризнакВ админке баннер сохранён и активен, а в браузере страница остаётся прежней.

    ПроверкаСбрасываем кэш компонента из админки и повторяем проверку маркеров на той же странице.

    Что делатьВыносим зону баннера из композита либо подгружаем её отдельным запросом после загрузки.

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

Поставил компонент «Баннер», а на странице ничего нет. Что настроить?

Из дистрибутива компонент приходит ненастроенным и в таком виде не выводит ничего. В параметрах задают тип рекламы - тот же строковый идентификатор, что стоит в карточке баннера. Пока типы в компоненте и в баннере не совпадут, зона останется пустой.

В админке нет раздела «Баннерная реклама» - куда он делся?

Модуль рекламы недоступен в младших редакциях: «Старт», «Стандарт», «Малый бизнес». Раздела в меню там нет, и компонент в шаблоне тоже не заработает. На таких лицензиях баннеры выводят из инфоблока обычным списком.

Баннер виден на одной странице и пропадает на соседней. Почему?

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

Где в шаблоне advertising.banner формируется разметка баннера?

Готовую разметку собирает сам модуль и кладёт в результат работы компонента. Шаблон её только выводит, поэтому править вёрстку баннера в шаблоне компонента почти негде: содержимое и ссылку меняют в карточке баннера.

Правки в баннере не видны на сайте, хотя в админке всё сохранено.

Страница отдаётся из кэша компонента или из готовой композитной копии. Кэш сбрасывают из админки, а копии композита - штатным сбросом, а не удалением папки руками. Зону со счётчиком показов из композита лучше вынести совсем.

Смежное

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