AdSense для адаптивного и отзывчатого дизайна

Можно ли использовать display: none;?

Правилами запрещено скрывать блоки посредством display: none;, даже при применении @Media (официальные данные).

Можно ли изменять код Эдсенс?

Да (официальные данные).

Адсенс для адаптивного дизайна

Скрипт, предложенный сотрудниками Google (или такой вариант с участием CSS):

<script type="text/javascript">
     google_ad_client = "ca-publisher-id";
     width = document.documentElement.clientWidth;
     google_ad_slot = "1234567890";
     google_ad_width = 320;
     google_ad_height = 50;
     if (width > 500) {
        google_ad_slot = "3456789012";
        google_ad_width = 468;
        google_ad_height = 60;
     }
     if (width > 800) {
        google_ad_slot = "2345678901";
        google_ad_width = 728;
        google_ad_height = 90;
     }

    </script>
    <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>

Его главный минус: не решает задачи не отображать объявление на маленьких экранах монитора. Скажем, когда из трёх блоков нужно показать только одно, или как у меня — когда боковая колонка "уплывает" в поле над статьёй и контекстная реклама будет явно лишней.

Решение я увидела тут. Там есть более гибкий вариант, чем опубликованный мной, и подходит для резинового сайта. Мне же вполне достаточно адаптивного варианта. Код будем брать асинхронный, поскольку он обеспечивает более быструю загрузку HTML-страницы. Его нужно вытянуть в одну строку и заменить " на '

<script><!--
var width = window.innerWidth || document.documentElement.clientWidth;
            
if (width >= 1185) {
document.write("<script async src='http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'></script> <ins class='adsbygoogle' style='display:inline-block;width:970px;height:90px' data-ad-client='ca-pub-0000000000000000' data-ad-slot='0000000000'></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>");
}

else if ((width < 1185) && (width > 945)) {
document.write("<script async src='http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'></script> <ins class='adsbygoogle' style='display:inline-block;width:728px;height:90px' data-ad-client='ca-pub-0000000000000000' data-ad-slot='0000000000'></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>");
}

else if ((width <= 945) && (width > 540)) {
document.write("<script async src='http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'></script> <ins class='adsbygoogle' style='display:inline-block;width:320px;height:50px' data-ad-client='ca-pub-0000000000000000' data-ad-slot='0000000000'></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>");
}
//-->
</script>

То есть размер объявления будет скачками уменьшаться до достижения 540px экрана, а далее не будет загружаться.

Показать AdSense только вновь прибывшим на сайт, но не постоянным читателям

Я никогда не горела желанием "завалить" блог из-за навалившейся со всех сторон рекламы. Поэтому если человек повторно будет возвращаться на ресурс, то правый блок не будет виден (теория о локальном хранилище).

<script type="text/javascript"><!--
google_ad_client = "ca-pub-0000000000000000";
var width = window.innerWidth || document.documentElement.clientWidth;

if ((!localStorage.getItem('adsense300'))) {
document.write("<script async src='http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'></script> <ins class='adsbygoogle' style='display:inline-block;width:300px;height:600px' data-ad-client='ca-pub-0000000000000000' data-ad-slot='0000000000'></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>");
localStorage.setItem('adsense300', 'adsense');
}

//-->
</script>

P.S. сейчас последний скрипт не использую, хочу протестировать рекламу, собрать статистику кликов. Проверить какова доля переходов новых и возвратившихся людей. Будет ли вообще увеличен доход после внедрения нового блока. Через пару месяцев нужно будет вновь вернуться к этому вопросу. Если есть потребность в статье про анализ, напомните, мне, пожалуйста. Расскажу что да где посмотреть.