Задать вопрос
ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как вставлять блок РСЯ в динамически подгружаемый контент?

Есть сайт с динамическим контентом (пагинацией), человек листает страницу вниз и ему подгружается необходимый контент.

Проблема заключается в следующем: на некоторых подгружаемых страницах хочется вставлять блок РСЯ, к примеру, через 5-6 подгруженных страниц.
Я проинициализировал скрипт (код рекламы) на данной странице и в нужных местах пытаюсь вставить идентификатор блока:

<div id="id блока"></div>

С первым блоком все в порядке, он отображается и никаких проблем нет, но последующие блоки пустые.

Вопросы:
  1. Вобще разрешено ли так делать? А то может яндекс запрещает такое проворачивать....
  2. Вставлять блок с идентификатором вместе с кодом? Как то нагромождено будет все это, может и работать даже не будет
  3. Удалять старый блок и вставлять новый в нужном месте?
  4. Может есть какое то API, что то вроде reload/refresh блока?
  • Вопрос задан
  • 695 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@zchepygov
Вопрос был задан давно, но все же отвечу да и сам хотел бы получить обратную связь от кого-нибудь, может кто увидит.

1. Вот тут точная документация как добавить рекламу в лентах с бесконечной прокруткой (добавить ссылку почему-то не могу, не дает хабра).
630e37149e693958009885.png

Но вот вопрос от меня: У кого-нибудь работает с новым кодом от яндекса? Сделал точно как в документации, но не работает реклама кроме первого блока. Ошибок нет, варнингов нет.

Если кто сталкивался, откликнитесь!
Ответ написан
alexTitakoff
@alexTitakoff
Фулстек js/php/node.js/python
Как в доке

<div id="yandex_rtb_R-A-1795515-4__2"></div>
    <script>

        setTimeout(()=>{
            window.yaContextCb.push(() => {
                Ya.Context.AdvManager.render({
                    renderTo: 'yandex_rtb_R-A-1795515-4__2',
                    blockId: 'R-A-1795515-4',
                    pageNumber: 1
                }, () => {
                    // код вызова своей рекламы в блоке
                    console.log('Баннер yandex_rtb_R-A-1795515-4 не показывает рекламу с аукциона')
                })
            })
        },3000)

    </script>


    <div id="yandex_rtb_R-A-1795515-4__3"></div>
    <script>

        setTimeout(()=>{
            window.yaContextCb.push(() => {
                Ya.Context.AdvManager.render({
                    renderTo: 'yandex_rtb_R-A-1795515-4__3',
                    blockId: 'R-A-1795515-4',
                    pageNumber: 2
                }, () => {
                    // код вызова своей рекламы в блоке
                    console.log('Баннер yandex_rtb_R-A-1795515-4 не показывает рекламу с аукциона')
                })
            })
        },5000)

    </script>
Ответ написан
@Timon1980
Рабочий код рекламы РСЯ на страницах с бесконечной прокруткой в 2023 году

<div id="yandex_rtb_R-A-XXXXXX-1"></div>

<script type="text/javascript">
  if (typeof pageNumber === "undefined") {
    var pageNumber = 1;
  } else {
    pageNumber++;
  }

  var adDiv = document.getElementById("yandex_rtb_R-A-XXXXXX-1");
  adDiv.id = "yandex_rtb_R-A-XXXXXX-1-" + pageNumber;

  (function(w, d, n, s, t) {
    w[n] = w[n] || [];
    w[n].push(function() {
      Ya.Context.AdvManager.render({
        blockId: "R-A-XXXXXX",
        renderTo: "yandex_rtb_R-A-XXXXXX-1-" + pageNumber,
        async: true,
        pageNumber: pageNumber
      });
    });
    t = d.getElementsByTagName("script")[0];
    s = d.createElement("script");
    s.type = "text/javascript";
    s.src = "//an.yandex.ru/system/context.js";
    s.async = true;
    t.parentNode.insertBefore(s, t);
  })(this, this.document, "yandexContextAsyncCallbacks");
</script>


источник: https://dugin.biz/cheat-sheets/kod-vyzova-reklamy-...

Пример на моем сайте на страницах категорий: https://tubtivi.com/games-online/ Прокручивайте в самый низ и подгрузите контент, реклама загрузится снова и это один и тот же блок. ХХХХ-замените на свои идентификаторы рекламного блока.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы