Перемещение загрузки документа публикации объявлений DFP

У нас есть адаптивный сайт с областью контента и боковой панелью. Боковая панель опускается ниже области содержимого, когда сайт отвечает или загружается на мобильный телефон. Проблема в том, что mrec в верхней части боковой панели теперь находится слишком низко на странице, и нам нужно сделать его выше в dom.

Итак, перед рендерингом я вставляю несколько div вот так

<div class="ad-inject-ad ad-mrec2"></div>

Это может быть от mrec1 до 3 в зависимости от страницы, позиции и т. Д.

Я также оборачиваю свои mrecs боковой панели в идентифицируемые классы, например ad-medrec2, чтобы затем я мог перемещать их на мобильном устройстве.

$('.sidebar .ad-medrec2').appendTo('.ad-inject-ad.ad-mrec2')

Это работает очаровательно.

НО, в 60-70% случаев реклама исчезает. Структура остается, вы можете видеть, что контейнер div имеет высоту 300+ пикселей, где должно быть, но реклама исчезла.

Я пробовал использовать метод refresh() в DFP, а также метод display(). Кажется, что реклама отображается, но не отображается. Я теряю видимость объявления, но не самого объявления.

Я читал, что это может быть вызвано iframe и их неспособностью сбросить состояние. Но я не уверен, что состояние нужно обновлять.

И почему все это работает в трети случаев?

Что я могу здесь сделать?

ИЗМЕНИТЬ

Я также посмотрел на подключаемый модуль DFP jQuery, но предпочел бы не загружать другой скрипт, если этого можно избежать.


person Christian    schedule 14.08.2015    source источник


Ответы (3)


Почему бы вам просто не создать второй рекламный блок на своей странице? Вы можете использовать функцию DFP defineSizeMapping для отображения правильного объявления в зависимости от размера окна.

person Mathieu Ho Thanh    schedule 19.08.2015
comment
Отлично! Я попробую и доложу. У вас есть примеры кода? Документы Google ужасны. - person Christian; 20.08.2015
comment
Вот документ Google по этой теме. Вы найдете пример того, что ищете. - person Mathieu Ho Thanh; 20.08.2015
comment
Отлично, спасибо. Я попробую и отчитаюсь - person Christian; 21.08.2015

Так что сейчас у меня это работает с довольно большим успехом.

Во-первых, я перемещаю рекламу.

$('.sidebar .ad-medrec2').appendTo('.ad-inject-ad.ad-mrec2');

Затем я выясняю, что вызывается идентификатором и слотом рекламного контейнера, удаляю содержимое div и снова вызываю функцию googletag для повторного заполнения.

mrec2_id = $('.ad-medrec2').attr('id');
mrec2_slot_name = mrec2_id.substr(0, mrec2_id.indexOf('-wrapper'))
$('#' + mrec2_slot_name).children().remove();
googletag.cmd.push(function() {
  googletag.display(mrec2_slot_name);
});

Это хорошо работает. НО, я боюсь, что это дважды загрузит рекламу. Пока я не найду лучший вариант, я буду продолжать это делать.

person Christian    schedule 14.08.2015
comment
Внимание: перемещение iframe (DFP использует iframe в асинхронном режиме) приводит к обновлению iframe. Это означает второй запрос к серверу объявлений. - person Umut KIRGÖZ; 31.05.2016

Вы можете использовать changeCorrelator (ссылки на GPT), чтобы перезагрузить объявление без получения нового количества показов.

// This call to refresh fetches a new ad for slot1, without changing the
// correlator.
googletag.pubads().refresh([slot1], {changeCorrelator: false});

// This call to refresh fetches a new ad for each slot, without changing
// the correlator.
googletag.pubads().refresh(null, {changeCorrelator: false});

Ссылка: https://developers.google.com/doubleclick-gpt/reference

person Martin Kristiansson    schedule 11.09.2018