Представлены способы размещения рекламных блоков РСЯ и Google Adsense на своём сайте.

Если нужно разместить несколько рекламных блоков РСЯ на одной странице, то необходимо создать в личном кабинете несколько RTB блоков. С Google Adsense проще, мы можем создать один блок и показывать его в нужных местах. Следует понимать, размеры каких блоков нужны в том или ином месте на сайте.

Рекламные блоки Google Adsense можно легко добавить с помощью JavaScript (jQuery).

Google Adsense после нужного заголовка

// После второго заголовка H2
$(document).ready(function(){
  $("h2:eq(2)").after('<div class="my_class"><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxxxxxxxxx" data-ad-slot="xxxxxxxxxx" data-ad-format="auto" data-full-width-responsive="true"></ins></div>');
  (adsbygoogle = window.adsbygoogle || []).push({});
});

Несколько блоков Google Adsense на странице

Выводим несколько блоков после N-го заголовка H2:

// После 6, 13, 20 заголовка H2
$(document).ready(function(){
  $('article').find('h2').each(function(i,e) {
    if (((i + 1) % 7) == 0) {
      $(this).after('<div class="my_class"><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxxxxxxxxx" data-ad-slot="xxxxxxxxxx" data-ad-format="auto" data-full-width-responsive="true"></ins></div>');
      (adsbygoogle = window.adsbygoogle || []).push({});
    }
  });
});

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

// Если загововков H2 меньше 7, показываеи перед 2
$(document).ready(function(){
  var h2 = $('article.post').find('h2');
  var countH2 = h2.length;
  if (countH2 < 7) {
    $("article h2:eq(2)").before('<div class="my_class"><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxxxxxxxxx" data-ad-slot="xxxxxxxxxx" data-ad-format="auto" data-full-width-responsive="true"></ins></div>');
    (adsbygoogle = window.adsbygoogle || []).push({});
  }
  // Перед 6, 13, 20 заголовком H2
  h2.each(function(i,e){
    if (((i + 1) % 7) == 0) {
      $(this).before('<div class="my_class"><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxxxxxxxxx" data-ad-slot="xxxxxxxxxx" data-ad-format="auto" data-full-width-responsive="true"></ins></div>');
      (adsbygoogle = window.adsbygoogle || []).push({});
    }
  });
});

Рекламный блок Google Adsense в нужном диве

Ищем все дивы с классом adg и показываем в них блоки Google Adsense. Желательно, чтобы эти дивы были одинаковые по размерам:

$(document).ready(function(){
  $('div.adg').each(function(){
    $(this).html('<div class="my_class"><ins class="adsbygoogle" style="display:inline-block;width:300px;height:250px" data-ad-client="ca-pub-xxxxxxxxxxxxxxxx" data-ad-slot="xxxxxxxxxx"></ins></div>');
    (adsbygoogle = window.adsbygoogle || []).push({});
  });
});

Добавляем рекламные блоки Google Adsense с помощью PHP

Показываем рекламные блоки Google Adsense после определённого абзаца (абзацев):

// Один блок на странице (после 1-го абзаца)
function ad_content( $content ) {
  $paragraphAfter = 1; //Введите номер абзаца, после которого вставляем.
  $content = explode ( "</p>", $content );
  $new_content = '';
  for ( $i = 0; $i < count ( $content ); $i ++ ) {
    if ( $i == $paragraphAfter ) {
      $new_content .= ' здесь ваш код ';
    }
    $new_content .= $content[$i] . "</p>";
  }
  return $new_content;
}

echo ad_content($content);

// Несколько блоков на странице (после 1-го и 15-го и 30-го абзаца)
function ad_content( $content ) {
  $paragraphAfter = [1, 15, 30]; //Введите номер абзаца, после которого вставляем.
  $content = explode ( "</p>", $content );
  $new_content = '';
  for ( $i = 0; $i < count ( $content ); $i ++ ) {
    foreach ($paragraphAfter as $p){
      if ( $i == $p ) {
        $new_content .= 'здесь ваш код';
      }
    }
    $new_content .= $content[$i] . "</p>";
  }
  return $new_content;
}

Рекламные блоки РСЯ и Google Adsense вместе

В личном кабинете РСЯ (вкладка "Стратегия") устанавливается минимальный порог. Если стоимость рекламного блока выше установленного порога, то показываем рекламу РСЯ, иначе показываем рекламу Google Adsense. Можно показывать альтернативный блок (свою рекламу, например). Можно установить стиль блока для телефонов. Рекламный блок показывается в диве с id="rtb".

var bvw = document.getElementsByTagName("body")[0].offsetWidth;

if ( bvw >= 800 ){ rtbBlock = "X-X-XXXXXX-X";
document.getElementById("rtb").style.maxWidth = "800px";}
// Если разрешение монитора меньше 800px, то устанавливаем блоку maxWidth
if ( bvw < 800 ){ rtbBlock = "X-X-XXXXXX-X";
document.getElementById("rtb").style.maxWidth = "350px";}

(function(w, d, n, s, t) {
  w[n] = w[n] || [];
  w[n].push(function() {
    Ya.Context.AdvManager.render({
      blockId: rtbBlock,
      renderTo: "rtb",
      async: true
    }, function() {
      var g = document.createElement("ins");
      g.className = "adsbygoogle";
      g.style.display = "block";
      //g.setAttribute("data-alternate-ad-url", ""); своя реклама
      g.setAttribute("data-ad-client", "ca-pub-XXXXXXXXXXXXXXXX");
      g.setAttribute("data-ad-slot", "XXXXXXXXXX");
      g.setAttribute("data-ad-format", "auto");
      g.setAttribute("data-full-width-responsive", "true");
      document.getElementById("rtb").appendChild(g);
      (adsbygoogle = window.adsbygoogle || []).push({});
    });
  });
  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");