Возможности кода рекламного блока
Вы можете использовать дополнительные функции и изменять некоторые настройки, работая непосредственно с кодом рекламного блока.
За вызов рекламы в коде отвечает функция 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
"platform": "touch"
})
})
window.yaContextCb.push(() => {
Ya.Context.AdvManager.render({
"blockId": "R-A-588461-109",
"type": "тип рекламного блока", // topAd или floorAd
"platform": "desktop"
})
})
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'
}), // blockId для мобильной версии
Ya.Context.AdvManager.destroy({
blockId: 'R-A-588461-109'
}); // blockId для десктопной версии
}
});
};
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
— тип ошибки. Может иметь значения:- error — не получилось загрузить рекламный блок;
- 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); } })
-
Показ своей рекламы в блоке
Если на аукционе для вашего блока не нашлось подходящего предложения, вы можете показывать в нем свою рекламу. Для этого добавьте код вызова своей рекламы к коду блока.
-
Получите код блока в интерфейсе Рекламной сети Яндекса (в настройках блока нажмите Получить код → Скопировать в буфер обмена).
-
Разместите код вызова рекламы и код блока на сайте.
-
В код блока добавьте код своей рекламы в качестве последнего параметра в функции
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).