Отображение одних и тех же объявлений DFP в одностраничном веб-приложении

У меня есть одностраничное веб-приложение, содержащее рекламу dfp. У меня есть два adunit dfp, которые я запускаю, и они размещены между контентом, который представляет собой список статей для определенной категории.

Когда я нажимаю на другую категорию, он просто загружает статьи для другой категории (не меняет URL-адрес в адресной строке) и запускает ту же рекламу. Так что это похоже на запуск рекламы на той же странице.

Объявления не отображаются во второй раз, потому что вы не можете использовать одни и те же адуниты на одной странице.

Поскольку я не могу использовать функцию обновления, предоставляемую dfp, поскольку мой DOM реконструируется каждый раз, могу ли я это сделать?


person agaase    schedule 11.11.2013    source источник


Ответы (3)


Если вы используете jQuery, взгляните на созданный мной плагин, который обертывает DFP и позволяет вам использовать его довольно легко в одностраничных приложениях.

Это демонстрация с использованием турбоссылок, которая будет похожа на ваше одностраничное приложение:

http://coop182.github.io/jquery.dfp.js/dfptests/demo1.html

Есть еще вопросы, просто дайте мне знать.

Изменить: вот еще один пример одной страницы - http://coop182.github.io/jquery.dfp.js/dfptests/spa.html

person Matt Cooper    schedule 11.11.2013
comment
Как приведенная выше демонстрация представляет собой одностраничное приложение?. Нажав на ссылку, вы попадете на другую страницу. Проверьте модифицированную версию приведенной выше демонстрации. app.genwi.com/resources/44132/misc/ad_single_page.html. Когда вы нажимаете «Обновить» здесь; он пытается создать такое же объявление; но не показывает рекламу. - person agaase; 13.11.2013
comment
Первоначальная демонстрация определенно представляет собой одностраничное приложение... turbolinks обрабатывает щелчок и отправляет изменение URL-адреса в браузер... так что даже если кажется, что оно меняет страницы, это не так. В любом случае... Я добавил еще одну демонстрацию, которая должна служить лучшим примером... тот, который вы сделали, не работает, потому что вы меняете идентификатор и очищаете div... - person Matt Cooper; 14.11.2013
comment
Спасибо за демонстрацию. У меня еще есть одна путаница. Когда я удаляю enableSingleRequest:false из демонстрации, новые объявления не появляются. Можете ли вы сказать мне, почему используется enableSingleRequest? - person agaase; 19.11.2013
comment
DFP использует параметр enableSingleRequest для одновременного получения всех объявлений для текущей страницы... при использовании этого параметра невозможно получить дополнительные объявления для той же страницы... мой плагин устанавливает для параметра enableSingleRequest значение true по умолчанию, поскольку в большинстве случаев это более эффективно, но для одностраничных приложений, в которых вы создаете и получаете новые объявления на одной и той же странице, вам всегда нужно будет устанавливать для параметра enableSingleRequest значение false. - person Matt Cooper; 19.11.2013
comment
Еще одна путаница; вы сказали, что моя демонстрация выше не работает, потому что я очищаю div и меняю идентификатор. Является ли это ограничением самой реализации googletag, и мы не можем использовать его таким образом? - person agaase; 20.11.2013
comment
Честно говоря, я не уверен... У меня такое ощущение, что DFP работает внутри... но это можно исправить в коде моего плагина... Я просто не исследовал это дальше, так как есть простые обходные пути. . - person Matt Cooper; 21.11.2013
comment
@MattCooper, могу ли я использовать эту библиотеку в своем приложении rails (с турбоссылками) для показа рекламы AdSense через dfp. Является ли это нарушением правил или безопасным для использования? - person lightsaber; 11.09.2014
comment
@StarWars да, вы можете использовать его таким образом без каких-либо проблем. - person Matt Cooper; 12.09.2014

Есть несколько выводов из этого вопроса. Плагин dfp, а также обычная реализация googletag должны работать для одностраничного приложения, но должны быть выполнены два требования.

  1. Для параметра enableSingleRequest НЕ следует устанавливать значение true. В случае плагина dfp от Мэтта вы должны передать enableSingleRequest:false, чтобы он не установил для него значение true. Это связано с тем, что если вы установите для него значение true, вы не сможете создать больше запросов на той же странице для получения рекламы. Также enableSingleRequest(false) также не работает.

  2. Когда вы запускаете рекламу динамически, т.е. без перезагрузки страницы; обязательно начните с свежих контейнеров, в которых будет размещаться реклама. Точная причина этого до сих пор не подтверждена, но, похоже, так работает googletag внутри.

Пожалуйста, добавьте, если у вас есть дополнительные комментарии.

person agaase    schedule 21.11.2013

Сделайте это сложным способом:

function myGoogleTagLoaderFn(callback) {
    // reset googletag lib
    window.googletag = null;

    // we're using requirejs, so we have to do this as well
    window.requirejs.undef('http://www.googletagservices.com/tag/js/gpt.js');

    myRequireOr$getScriptFn('http://www.googletagservices.com/tag/js/gpt.js', function success() { callback(); });
}

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

person depoulo    schedule 12.06.2014