Несколько блоков RTB Яндекс на сайтах с бесконечной лентой


Nicko_217
615

Добрый день!

Нашел на форуме такое решение от Дмитрия Громова:

<div id=»yandex_rtb_R-A-123456-1″></div>

<script type=»text/javascript»>

if (typeof pageNumber ==»undefined») var pageNumber = 1;

else pageNumber++;

document.getElementById(«yandex_rtb_R-A-123456-1»).id = «yandex_rtb_R-A-123456-1-» + pageNumber;

(function (w, d, n, s, t) {

w[n] = w[n] || [];

w[n].push(function() {

Ya.Context.AdvManager.render({

blockId: «R-A-123456-1»,

renderTo: «yandex_rtb_R-A-123456-1-» + pageNumber,

async: true,

pageNumber: pageNumber

});

});

t = d.getElementsByTagName(«script»)[0];

s = d.createElement(«script»);

s.type = «text/javascript»;

s.src = «https://an.yandex.ru/system/context.js»;

s.async = true;

t.parentNode.insertBefore(s, t);

})(this, this.document, «yandexContextAsyncCallbacks»);

</script>

Оно работает. Спасибо ему за это.

НО как реализовать несколько блоков с таким скриптом на одной странице?

Как я понял, это решение не работает если применить его к нескольким блокам на одной странице?

Помогите мне и многим владельцам сайтов, кто так же в поиске подобного.

———- Добавлено 20.02.2020 в 16:08 ———-

видимо кэш и CDN

все работает)


Дмитрий Громов



Nicko_217:
Добрый день!

Нашел на форуме такое решение от Дмитрия Громова:

<div id=»yandex_rtb_R-A-123456-1″></div>

<script type=»text/javascript»>

if (typeof pageNumber ==»undefined») var pageNumber = 1;

else pageNumber++;

document.getElementById(«yandex_rtb_R-A-123456-1»).id = «yandex_rtb_R-A-123456-1-» + pageNumber;

(function (w, d, n, s, t) {

w[n] = w[n] || [];

w[n].push(function() {

Ya.Context.AdvManager.render({

blockId: «R-A-123456-1»,

renderTo: «yandex_rtb_R-A-123456-1-» + pageNumber,

async: true,

pageNumber: pageNumber

});

});

t = d.getElementsByTagName(«script»)[0];

s = d.createElement(«script»);

s.type = «text/javascript»;

s.src = «https://an.yandex.ru/system/context.js»;

s.async = true;

t.parentNode.insertBefore(s, t);

})(this, this.document, «yandexContextAsyncCallbacks»);

</script>

Оно работает. Спасибо ему за это.

НО как реализовать несколько блоков с таким скриптом на одной странице?

Как я понял, это решение не работает если применить его к нескольким блокам на одной странице?

Помогите мне и многим владельцам сайтов, кто так же в поиске подобного.

———- Добавлено 20.02.2020 в 16:08 ———-

видимо кэш и CDN

все работает)

Добрый день! Если блоки устанавливаются в ленту с бесконечной выдачей, то в скрипте нужно следить за значениями параметра «pageNumber» (должен соответствовать номеру страницы) и «div id». Также ID контейнера должен быть уникальным и соответствовать параметру «renderTo» в script.


Nicko_217

Дмитрий, здравствуйте!

У меня получается так, что 3 блока (один в боковом виджете справа, второй в середине статьи и третий в конце статьи).

Все три имеют свои id RTB.

В остальном скрипт одинаковый.

И при просмотре страницы с пк срабатывает всегда боковой и иногда в конце статьи.

А с мобильного только в конце статьи.

Может быть так, что все три блока мешаю друг другу в скрипте:

<script type=»text/javascript»>

if (typeof pageNumber ==»undefined») var pageNumber = 1;

else pageNumber++;

document.getElementById(«yandex_rtb_R-A-123456-1»).id = «yandex_rtb_R-A-123456-1-» + pageNumber;

(function (w, d, n, s, t) {

w[n] = w[n] || [];

w[n].push(function() {

Ya.Context.AdvManager.render({

blockId: «R-A-123456-1»,

renderTo: «yandex_rtb_R-A-123456-1-» + pageNumber,

async: true,

pageNumber: pageNumber

});


Nicko_217

вся фишка в том, что если разместить один блок — то все работает, а два или более — отображается только один


Дмитрий Громов



Nicko_217:
Дмитрий, здравствуйте!

У меня получается так, что 3 блока (один в боковом виджете справа, второй в середине статьи и третий в конце статьи).

Все три имеют свои id RTB.

В остальном скрипт одинаковый.

И при просмотре страницы с пк срабатывает всегда боковой и иногда в конце статьи.

А с мобильного только в конце статьи.

Может быть так, что все три блока мешаю друг другу в скрипте:

<script type=»text/javascript»>

if (typeof pageNumber ==»undefined») var pageNumber = 1;

else pageNumber++;

document.getElementById(«yandex_rtb_R-A-123456-1»).id = «yandex_rtb_R-A-123456-1-» + pageNumber;

(function (w, d, n, s, t) {

w[n] = w[n] || [];

w[n].push(function() {

Ya.Context.AdvManager.render({

blockId: «R-A-123456-1»,

renderTo: «yandex_rtb_R-A-123456-1-» + pageNumber,

async: true,

pageNumber: pageNumber

});

Nicko_217:
вся фишка в том, что если разместить один блок — то все работает, а два или более — отображается только один

Добрый день! Нужно заменить ID в <div id=»yandex_rtb_R-A-123456-1″></div> и в renderTo: «yandex_rtb_R-A-123456-1-» + pageNumber, например, на <div id=»yandex_rtb1″></div> renderTo: «yandex_rtb1» + pageNumber.

В другом блоке — на другой, например: на <div id=»yandex_rtb2″></div> renderTo: «yandex_rtb2» + pageNumber.

У третьего — например, на <div id=»yandex_rtb3″></div> renderTo: «yandex_rtb3» + pageNumber.

То есть, ID контейнера — так же, как и ID RTB-блока должен быть уникальным на странице и в ленте.


Nicko_217
Дмитрий Громов:
Добрый день! Нужно заменить ID в <div id=»yandex_rtb_R-A-123456-1″></div> и в renderTo: «yandex_rtb_R-A-123456-1-» + pageNumber, например, на <div id=»yandex_rtb1″></div> renderTo: «yandex_rtb1» + pageNumber.

В другом блоке — на другой, например: на <div id=»yandex_rtb2″></div> renderTo: «yandex_rtb2» + pageNumber.

У третьего — например, на <div id=»yandex_rtb3″></div> renderTo: «yandex_rtb3» + pageNumber.

То есть, ID контейнера — так же, как и ID RTB-блока должен быть уникальным на странице и в ленте.

Дмитрий, так все и сделано, но ID каждого блока взяты из разных RTB баннеров. То есть yandex_rtb_R-A-123456-1 / yandex_rtb_R-A-123456-2 и yandex_rtb_R-A-123456-4 (к примеру)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *