(max-device-width: 728px) надо заменить на (max-width: 728px) , тогда на ПК и смартфоне показывает разные блоки
Как я уже писал чуть раньше:
Ставил код Адсенс в качестве заглушки блока РТБ и выставлял порог СРМ. В статистике Адсенс появился у меня новый сайт yandex.ru. Статистика по блокам показывала, что доход по блоку заглушки Адсенс начислен. Но в общей статистике площадки этот доход не учитывался. Думаю, что статистика Адсенса считала, что мой код заглушки блока Адсенс стоит на чужом сайте yandex.ru. Почитал здесь на форуме о запрете установки Адсенса в iframe РТБ и убрал Адсенс из РТБ. От греха подальше.
То есть, статистика Адсенс видит мой код заглушки РТБ стоящим на другом сайте yandex.ru. Что, как Вы правильно указали, строго запрещено!
<div id="yandex_ad" style="margin:0 auto;"></div><script type="text/javascript">(function(w, d, n, s, t) {if (window.matchMedia("only screen and (max-device-width: 728px)").matches){var m= "R-12345-1"; document.getElementById("yandex_ad").style.width = "300px";}else{var m= "R-12345-2"; document.getElementById("yandex_ad").style.width = "728px";}w[n] = w[n] || [];w[n].push(function() {Ya.Context.AdvManager.render({blockId: m,renderTo: "yandex_ad",async: true});});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>
Попробовал у себя этот код. Показывает на смартфоне и ПК один и тот же блок. Что в нем не так?
Для реализации адаптивности в RTB блоках можно использовать два RTB блока. В одном из них нужно выбрать форматы 300х300 и 300х250, а в другом 728х90.
В смартфонах будет отображаться блок размером 300х300 или 300х250, а для планшетов и ПК блок размером 728х90.
<div id="yandex_ad" style="margin:0 auto;"></div> <script type="text/javascript"> (function(w, d, n, s, t) { if (window.matchMedia("only screen and (max-device-width: 728px)").matches){var m= "R-12345-1"; document.getElementById("yandex_ad").style.width = "300px";} else{var m= "R-12345-2"; document.getElementById("yandex_ad").style.width = "728px";} w[n] = w[n] || []; w[n].push(function() { Ya.Context.AdvManager.render({ blockId: m, renderTo: "yandex_ad", async: true }); }); 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>
Для переменной m нужно указать id блока (в данном примере m= "R-12345-1" и m= "R-12345-2").
Я использую скрипты для обычного блока РСЯ и для RTB, пример на форуме в этой ветке /ru/forum/944288 . Если display:none; то объявления все равно будут загружаться, а это плохо.
Спасибо! Скрипт работает с обычным блоком RTB. Но не работает с асинхронным. Может подскажете скрипт для асинхронного RTB