2012-04-02 1 views
2

Я читал web и искал вещи в течение нескольких дней, чтобы найти рекламу Google Adsense через мобильные переходы jQuery, не нарушая ToS. Я немного застрял, поэтому обратился к мудрейшему сообществу.Загрузите объявления AdSense с помощью перехода на страницу с помощью jQuery mobile

Тег Adsense состоит из трех сценариев (i) общего, (ii) списка слотов и (iii) самого дисплея. Первые два идут в <head>, последний в <body>.

Я могу показывать объявления на первой странице просто отлично. Проблема связана с переходом страницы.

Поскольку jQuery Mobile не перезагружает <head>, необходимо подготовить googletag при загрузке <head> в первый раз. Это устанавливает ограничение на максимум три объявления на страницу, что на всем сайте не много. Кроме того, это значит, что вам нужно будет передвинуть объявление <div>, что тоже не так здорово. Наконец, это означает, что вы можете загружать объявления и не отображать их до тех пор, пока пользователь не перейдет на страницу, где она принадлежит. Это тоже не совместимо с ToS.

Есть ли способ загрузить новое новое объявление на каждом переходе? Если да, где я могу поместить скрипты Google, чтобы они правильно загрузились?

ответ

6

Я нашел способ заставить его работать в Google DFP с помощью Adsense, подключенного к DFP. DFP более гибкая, так что это было проще.

Вот что я использовал:

  • В <head>: я поставил скрипты Google и определил все Рекламные места для всего сайта (вы получите его с «созданием тегов»).
  • На каждой странице вы помещаете часть скрипта <body>, как и в любом другом месте.

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

Для этого вы можете использовать googletag.pubads().refresh(). Однако вы хотите обновлять слоты, которые находятся на загружаемой странице, иначе вы нарушите некоторые условия. Кроме того, вы не можете слоты refresh, которые еще не были отображены, поэтому он будет терпеть неудачу, если вы определили слоты для всего веб-сайта, но все страницы еще не загружены, что вполне вероятно.

Но вы можете передать слоты, находящиеся на текущей странице, в функцию refresh(). Вот как я это сделал:

function refreshAds() { 
    // Get all the slots 
    var allSlots = googletag.pubads().getSlots(); 
    var slotsToRefresh = Array(); 
    // Select the slots that are on the current page based on their dom Id 
    for (var i=0; i<allslots.length; ++i) 
    if (isSlotIdOnTheCurrentPage(allSlots[i].getSlotId().getDomId())) 
     slotsToRefresh.push(allSlots[i]); // I let you implement the logic behind naming ids slots and divs 
    if (slotsToRefresh.length > 0) 
    googletag.pubads().refresh(slotsToRefresh); 
} 

$(document).on("pagechange", function() {refreshAds();}) 

Там вы идете, каждый раз, когда вы вернетесь на страницу, слоты обновляется, каждый раз, когда вы идете на новую страницу, новый слот создается (при условии, что он был определен в <head>).

Надеюсь, это поможет! Возможно, есть способ заставить его работать без проблем в Adsense, но я не пробовал.

+0

Значит, вам нужно было определить уникальный рекламный щит для каждого объявления, показанного на сайте? Должно быть, это довольно маленький сайт? – Kevin

+0

Да, это webapp, поэтому очень мало страниц, которые обрабатываются много раз. Обновление рекламы - это спасатель. –

+0

Это отлично. Раньше я даже не знал о DFP. Придется сделать несколько модов, чтобы заставить его работать для меня. googletag.display нужно вызывать один раз перед googletag.pubads(). –

0

Возможно, использование метода getScript() jQuery поможет в этой ситуации. Я предлагаю вам включить это внутри функции pageinit. Позвольте мне привести вам краткий пример.

$(document).delegate('[data-role=page]','pageinit',function(){ // this would get executed on page init of every JQM page 
    $.getScript('path/to/yourlib.js',function(){ // using getScript should help you be able to load scripts since the head doesn't get loaded again 
     Demo(); //This would be code that your lib uses 
    }); 
}); 
+0

Спасибо за ваш повтор. Ваше решение работает для выполнения скрипта, но вставка тега '