Показване на едни и същи dfp реклами в уеб приложение на една страница

Имам уеб приложение с една страница, което съдържа dfp реклами. Имам две dfp рекламни единици, които стартирам и те са поставени между съдържанието, което е списък със статии за определена категория.

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

Рекламите не се показват втори път и това е така, защото не можете да използвате едни и същи рекламни единици на една и съща страница.

Тъй като не мога да използвам функцията за опресняване, предоставена от dfp, тъй като моят DOM се реконструира всеки път, има ли някакъв начин да направя това?


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


Отговори (3)


Ако използвате jQuery, разгледайте плъгина, който направих, който обвива DFP и ви позволява за да го използвате доста лесно в приложения с една страница.

Това е демонстрация, използваща turbolinks, която ще бъде подобна на вашето едностранично приложение:

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 (с turbolinks), за да показвам реклами от AdSense чрез dfp. Оплакване относно правилата ли е или безопасно за използване? - person lightsaber; 11.09.2014
comment
@StarWars да, можете да го използвате по този начин без никакви проблеми. - person Matt Cooper; 12.09.2014

Има няколко извода от този въпрос. Приставката dfp, както и нормалното внедряване на googletag трябва да работят за едностранично приложение, само че трябва да бъдат изпълнени две изисквания

  1. enableSingleRequest НЕ трябва да се задава на true. В случай на dfp плъгин от Matt трябва да подадете 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(); });
}

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

person depoulo    schedule 12.06.2014