Как вывести разные баннеры РСЯ для Mob и для ПК

12
Евгений
На сайте с 02.08.2015
Offline
43
#11
Toyvo Glumov:
Обернуть скрипт рекламы в условие, например чтобы срабатывал только на мобилках:
if (window.matchMedia("(max-width: 540px)").matches) {
ваш код блока
}

планшеты и ПК:
if (window.matchMedia("(min-width: 728px)").matches) {
ваш код блока
}

Спасибо! Только что попробовал ваш код. Не работает.

TG
На сайте с 07.11.2016
Offline
124
#12
Webmaster0404:
Не работает.

Все там работает, в тег скрипта все это обернуть не забыли, а у рся убрать?

В итоге должно получиться так примерно:

<script type='text/javascript'>

if (window.matchMedia('(max-width: 520px)').matches) {

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

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

w[n].push(function() {

Ya.Context.AdvManager.render({

blockId: "айди вашего блока",

renderTo: "айди контейнера куда будет вставляться реклама",

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>

Вставлять лучше перед </body>

NCom
На сайте с 07.03.2008
Offline
291
#13
Webmaster0404:
Спасибо! Только что попробовал ваш код. Не работает.

Вам же рабочий вариант выложила уже давно. Вот, если конкретно под ваши цели

<div id="rtbBlock"></div>

<script type="text/javascript">

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

if ( bvw <= 800 ){rtbBlockID = "СВОЙ БЛОК ДЛЯ МОБИЛ";}

if ( bvw >= 800 ){rtbBlockID = "СВОЙ БЛОК ДЛЯ ПК";}

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

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

w[n].push(function() {

Ya.Context.AdvManager.render({

blockId: rtbBlockID,

renderTo: "rtbBlock",

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>

</div>

Этот код при ширине меньше 800 выдает мобильный блок. При ширине от 800 выдает рекламу на ПК.

Можно сделать 2 разных кода. Удаляется первую строчку - не будет рекламы на мобилах. Удаляете вторую - не будет рекламы на ПК.

Евгений
На сайте с 02.08.2015
Offline
43
#14
NCom:
Вам же рабочий вариант выложила уже давно. Вот, если конкретно под ваши цели

<div id="rtbBlock"></div>

<script type="text/javascript">

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

if ( bvw <= 800 ){rtbBlockID = "СВОЙ БЛОК ДЛЯ МОБИЛ";}
if ( bvw >= 800 ){rtbBlockID = "СВОЙ БЛОК ДЛЯ ПК";}


(function(w, d, n, s, t) {
w[n] = w[n] || [];
w[n].push(function() {
Ya.Context.AdvManager.render({
blockId: rtbBlockID,
renderTo: "rtbBlock",
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>
</div>

Этот код при ширине меньше 800 выдает мобильный блок. При ширине от 800 выдает рекламу на ПК.
Можно сделать 2 разных кода. Удаляется первую строчку - не будет рекламы на мобилах. Удаляете вторую - не будет рекламы на ПК.

Ваш код реально помог! Все заработало)

Bilan_Zhiv
На сайте с 07.06.2018
Offline
35
#15

Намного точней, корректней и быстрей в плане загрузки баннеров будет определение USER_AGENT и вывод для мобилы одного, а если нет, то другого.

Собственно, так и сделал еще лет 5 назад.

Достаточно смотреть есть ли в юзер агенте Android, iPhone, iPad, webOS и, если да, то выводить им мобильный баннер через РНР, и, если нет, то выводить десктопный.

J1
На сайте с 11.01.2017
Offline
176
#16
Bilan_Zhiv:
Намного точней, корректней и быстрей в плане загрузки баннеров будет определение USER_AGENT и вывод для мобилы одного, а если нет, то другого.

Чем это будет быстрее?

Вы думаете это выполняется дольше чем определение USER_AGENT на PHP?

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

if ( bvw <= 800 )

TG
На сайте с 07.11.2016
Offline
124
#17

Реклама все равно на стороне клиента только грузится, поэтому то же определение юзерагента лучше на ЖС делать, чтобы лишние запросы на сервер не отправлять

NCom
На сайте с 07.03.2008
Offline
291
#18
jonny1960:
Чем это будет быстрее?

Ну да. а еще вопрос... почему "Точней"?)))

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий