Возможности кода рекламного блока

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

За вызов рекламы в коде отвечает функция Ya.Context.AdvManager.render.

Внимание.
  • Мы не рекомендуем неопытным пользователям самостоятельно вносить изменения в код вызова рекламных блоков. Изменение любых переменных и функций, кроме описанных на данной странице, может привести к ошибкам в работе блоков Рекламной сети и, следовательно, к снижению дохода.
  • Код блока нельзя использовать в качестве альтернативного кода в других рекламных системах.

Срезы статистики

В коде блока вы можете дополнительно задать идентификатор среза и собирать отдельную статистику по срезам. Идентификатор среза задается в отдельной переменной:

Имя переменной Описание Тип данных
statId Идентификатор среза Число от 1 до 1 000 000 000

Задайте идентификатор среза в коде вызова рекламы при размещении на сайте, например:

Ya.Context.AdvManager.render({
    blockId: "R-A-123456-1",
    renderTo: "yandex_rtb_R-A-123456-1",
    statId: 34567, // идентификатор среза
});

Идентификатор среза для блока R-A-123456-1 в примере — 34567. Его можно указывать и в других блоках, тогда вы сможете просмотреть для этих блоков сгруппированную статистику. Размещая блок R-A-123456-1 на других страницах, вы можете указать другой идентификатор среза, чтобы просматривать статистику отдельно для каждого места размещения.

Ограничение высоты в баннерах

По умолчанию текстово-графические объявления формата Адаптивный  полностью занимают обрамляющий контейнер. Регулировать высоту блока можно с помощью параметров height (высота) и max-height (максимальная высота).

Рекомендуемые значения максимальной высоты блоков:

  • в мобильной версии сайта — не менее 70 и не более 90 vh;
  • в десктопной версии сайта при размещении на боковых панелях — не менее 40 и не более 60 vh.
Пример кода рекламного блока с максимальной высотой:
<div id="yandex_rtb_R-I-677833-1" style="max-height: 80vh;">
  <div style="height: 72vh;"></div>
</div>
<script>
  window.yaContextCb.push(()=>{
    Ya.Context.AdvManager.render({
      renderTo: 'yandex_rtb_R-I-677833-1',
      blockId: 'R-I-677833-1'
    })
  })
</script>

Настройка темы

Тема (светлая или темная) задается в интерфейсе Рекламной сети Яндекса при создании или редактировании блока. Также вы можете управлять темой блока через код вставки с помощью параметра darkTheme:

  • darkTheme: false — применяется светлая тема;
  • darkTheme: true — применяется темная тема. Блоки в темной теме отличаются не только фоном, но и цветом текста, рамки, кнопок и других элементов рекламы.

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

Управление темой блока через код будет удобным для сайтов с динамической темой. Например, с помощью JavaScript можно задавать разные значения параметра darkTheme: в зависимости от времени суток, выбранной пользователем темы сайта или браузера.

Пример кода рекламного блока с темной темой:

Ya.Context.AdvManager.render({
    blockId: "R-A-123456-1",
    renderTo: "yandex_rtb_R-A-123456-1",
    darkTheme: true
});
Пример рекламного блока Top Ad с темной темой

Размещение Floor Ad или Top Ad одновременно с Лентой

Одновременно показывать Ленту, Floor Ad и Top Ad на одном экране нельзя. Настройте callback-функцию observer, чтобы удалить Floor Ad или Top Ad в момент, когда Лента попадет в зону видимости.

Пример кода вызова рекламы с функцией observer
<div id="yandex_rtb_R-A-588461-101"></div>
<script>
  window.yaContextCb.push(() => {
    Ya.Context.AdvManager.renderFeed({
      blockId: 'R-A-588461-101',
      renderTo: 'yandex_rtb_R-A-588461-101'
    })
  })
  window.yaContextCb.push(() => {
    Ya.Context.AdvManager.render({
      blockId: 'R-A-588461-98',
      type: 'тип рекламного блока' // topAd или floorAd
    })
  })
  const feed = document.getElementById('yandex_rtb_R-A-588461-101'); // ID из поля renderTo
  const callback = (entries) => {
    entries.forEach((entry) => {
      if (entry.isIntersecting) {
        Ya.Context.AdvManager.destroy({blockId: 'R-A-588461-98'});
      }
    });
  };
  const observer = new IntersectionObserver(callback, {
    threshold: 0,
  });
  observer.observe(feed);
</script>            

Callback-функции в коде вызова рекламы

В код вызова рекламы можно добавить сallback-функции:

onClose

Чтобы узнать, в какой момент реклама была закрыта, при размещении блока добавьте callback-функцию onClose. Функция доступна для полноэкранного блока и блоков Top Ad, Floor Ad.

Вы можете задать действие, которое будет вызвано после закрытия баннера, в соответствии с вашей бизнес-логикой. Например, таким действием может быть вызов другого рекламного блока. Для этого впишите код с действием в onClose.

Пример кода вызова рекламы с функцией onClose
<!-- Yandex.RTB R-A-588461-68 -->
<script>window.yaContextCb.push(()=>{
  Ya.Context.AdvManager.render({
    type: 'тип рекламного блока', // fullscreen, topAd или floorAd
    blockId: 'R-A-588461-68',
    onClose: () => {
        // действие, выполняемое сайтом после закрытия баннера
    }
  })
})</script
onError

Callback-функция onError вызывается, если в ходе выполнения запроса произошла ошибка. При вызове передаются параметры:

  • type — тип ошибки. Может иметь значения:
    1. error — не получилось загрузить рекламный блок;
    2. warning — рекламный блок загружен, но с ошибкой.
  • code — код ошибки.
  • text — текстовое описание ошибки.
Коды возможных ошибок и их значения
Тип ошибки Код ошибки Что означает Как исправить
error DESKTOP_FULLSCREEN Произошла попытка загрузить мобильный блок с полноэкранным отображением на десктопной версии сайта. Рекламные блоки с полноэкранным отображением можно использовать только для мобильной версии сайта.
error CONTAINER_NOT_FOUND Не удалось найти контейнер для загрузки рекламы. Контейнер не найден или при загрузке кода, или после получения данных с рекламой от сервера. Такая ошибка обычно возникает на страницах с динамическим содержимым.
error BLOCK_NOT_FOUND Вызов рекламы произошел, но блок с указанным идентификатором не найден. Проверьте код вызова рекламы, полученный в интерфейсе Рекламной сети Яндекса. Убедитесь, что идентификатор блока указан верно.
error PAGE_NOT_FOUND Вызов рекламы произошел, но сайт с указанным идентификатором не найдена. Проверьте код вызова рекламы, полученный в интерфейсе Рекламной сети Яндекса. Убедитесь, что идентификатор блока указан верно.
error WRONG_DOMAIN Домен, с которого произошел вызов рекламы, не указан в настройках сайта.

Проверьте, что домен, на котором вы разместили рекламный блок, указан в настройках сайта.

Если домен не указан, добавьте новый сайт с этим доменом и создайте блок для этого сайта. Зеркала можно добавить к уже существующим сайтам.

error PAGE_DISABLED Вызов рекламы произошел, но указанный сайт не работает. Проверьте статус в сайта в интерфейсе Рекламной сети Яндекса. Сайт может быть остановлен, заархивирован или заблокирован за нарушение Правил участия в Рекламной сети Яндекса.
error UNKNOWN_BLOCK_TYPE Произошла попытка загрузить неизвестный тип блока. Проверьте код вызова рекламы в интерфейсе Рекламной сети Яндекса. Идентификатор блока должен начинаться с букв R, D или Y.
error TOO_SMALL_CONTAINER В контейнер для загрузки рекламы нельзя вписать ни один из форматов указанного блока. Проверьте размеры контейнера для загрузки рекламы. Минимальный размер контейнера — 160 х 50 пикселей.
error VIDEO_ERROR Ошибка при загрузке видеорекламы. Проверьте размеры контейнера для загрузки рекламы. Минимальный размер — 320 х 180 пикселей.
warning CONTAINER_IS_HIDDEN Произошла попытка загрузить рекламу в контейнер размером 0 x 0 пикселей (например, со стилем display:none). Скрытый контейнер замедляет загрузку рекламы. Рекомендуем вставлять рекламные блоки в видимые контейнеры.
Пример кода вызова рекламы с функцией onError
Ya.Context.AdvManager.render({
    blockId: 'R-I-106712-1',
    renderTo: 'block_container',
    onError: (data) => {
        console.log('type', data.type); // Тип ошибки: error или warning
        console.log('code', data.code); // Код ошибки (см. значение выше)
        console.log('text', data.text); // Текстовое описание ошибки
                                        
        // Обработка ошибки со стороны сайта
    }
});
onRender

Сallback-функция onRender позволяет получить информацию о том, произошла ли отрисовка рекламы на клиенте и какая именно реклама была отрисована. Функция принимает параметр data.product с одним из двух значений:

  • direct — в блоке были показаны объявления Директа;

  • rtb — в блоке была показана медийная реклама.

Сallback-функцию onRender нужно добавить в качестве последнего параметра функции Ya.Context.AdvManager.render.

Пример кода вызова рекламы с функцией onRender
Ya.Context.AdvManager.render({
    blockId: "R-A-123456-1",
    renderTo: "yandex_rtb_R-A-123456-1",
    onRender: (data) => { console.log(data.product); }
})

Показ своей рекламы в блоке

Если на аукционе для вашего блока не нашлось подходящего предложения, вы можете показывать в нем свою рекламу. Для этого добавьте код вызова своей рекламы к коду блока.
  1. Получите код блока в интерфейсе Рекламной сети Яндекса (в настройках блока нажмите Получить код → Скопировать в буфер обмена).
  2. Разместите код вызова рекламы и код блока на сайте.
  3. В код блока добавьте код своей рекламы в качестве последнего параметра в функции Ya.Context.AdvManager.render .
Пример кода со вставкой своей рекламы
Ya.Context.AdvManager.render({
    blockId: 'R-A-123456-1',
    renderTo: 'yandex_rtb_R-A-123456-1',
}, () => {
    // код вызова своей рекламы в блоке
})
Если на аукционе не нашлось подходящего предложения, выполнится альтернативный код, и своя реклама будет показана на месте рекламного блока (не через iframe). Показы своей рекламы не учитываются в статистике Рекламной сети Яндекса.
Примечание. У блоков Рекламной сети Яндекса, которые создаются из Adfox, не может быть кода вызова своей рекламы. Если в таком блоке не удалось подобрать рекламу от Рекламной сети Яндекса, запрос возвращается в Adfox и право показа переходит к другим монетизаторам или собственным промокампаниям. Подробнее о схеме подбора рекламы в Adfox.

Показ рекламы в лентах с бесконечной прокруткой

Для показа рекламы в лентах с бесконечной прокруткой можно использовать один и тот же рекламный блок, в котором изменяется название контейнера renderTo. Уникальный идентификатор блока blockId, полученный в конструкторе, остается неизменным.

Пример кода вызова для первого блока
<div id="yandex_rtb_R-A-123456-1-1"></div>
<script>window.yaContextCb.push(()=>{
    Ya.Context.AdvManager.render({
        blockId: "R-A-123456-1",
        renderTo: "yandex_rtb_R-A-123456-1-1", // в конце названия ставится 1
    })
})</script>
Пример кода вызова для второго блока
<div id="yandex_rtb_R-A-123456-1-2"></div>
<script>window.yaContextCb.push(()=>{
    Ya.Context.AdvManager.render({
        blockId: "R-A-123456-1",
        renderTo: "yandex_rtb_R-A-123456-1-2", // в конце названия ставится 2
    })
})</script>

Эксперименты над рекламой c Varioqub

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

Обратиться в службу поддержки

Если вы не нашли нужную информацию, проверьте список частых вопросов или напишите нам.

Я установил код, но объявления не показываются

Проблемы с показом объявлений могут возникнуть по нескольким причинам:

  • Рекламный код был только что установлен. Роботу Рекламной сети Яндекса требуется некоторое время, чтобы проиндексировать страницу и привязать рекламные объявления.

  • Код вызова рекламы установлен неправильно. Проверьте, что код JavaScript для вызова рекламных блоков установлен верно. Не изменяйте код при копировании. При копировании кода ваш текстовый редактор может прерывать и переносить длинные строки — JavaScript-код с такими строками может работать некорректно.

  • Неверный код для сайта. Убедитесь, что установленный код вызова рекламных блоков создан именно для этого сайта, а не для одного из других ваших сайтов.

  • Сайт запрещен для индексирования. Сайт должен быть доступен для индексирования роботом Рекламной сети Яндекса — YandexDirect. Если индексирование сайта или его отдельных страниц запрещено (например, в файле robots.txt), то робот не сможет проиндексировать содержимое страниц и подобрать для них релевантные объявления.

  • Текст закрыт тегом <noindex>. Убедитесь, что на странице есть текст и что он не закрыт тегом <noindex>. К страницам без текста не получится подобрать тематическую рекламу.

  • В кеше браузера старая информация. Обновите страницу — нажмите CTRL + F5 (Windows) или Command + R (Mac).