我希望使用Google DFP广告管理系统在无限卷轴上通过ajax加载的每个页面中展示广告。我每页有四个不同的插槽。我按照常规Google DFP代码进行操作,在我的情况下:
<script type='text/javascript'>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
(function() {
var gads = document.createElement('script');
gads.async = true;
gads.type = 'text/javascript';
var useSSL = 'https:' == document.location.protocol;
gads.src = (useSSL ? 'https:' : 'http:') +
'//www.googletagservices.com/tag/js/gpt.js';
var node = document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(gads, node);
})();
</script>
<script type='text/javascript'>
googletag.cmd.push(function() {
googletag.defineSlot('/XXXXXXX/ROS_DHTML', [600, 600], 'div-gpt-ad-5').addService(googletag.pubads());
googletag.defineSlot('/XXXXXXX/ROS_Horizontal', [960, 250], 'div-gpt-ad-6').addService(googletag.pubads());
googletag.defineSlot('/XXXXXXX/ROS_Interstitial', [1920, 1080], 'div-gpt-ad-7').addService(googletag.pubads());
googletag.defineSlot('/XXXXXXX/ROS_Txt', [[300, 250], [300, 600]], 'div-gpt-ad-8').addService(googletag.pubads());
googletag.pubads().collapseEmptyDivs();
googletag.enableServices();
});
</script>
然后,我再次定期拨打广告。
<div id='div-gpt-ad-8'>
<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-8'); });
</script>
</div>
我的无限滚动脚本(WordPress的Ajax Load More插件)为我提供了每次成功查询后调度的回调函数。例如,我使用它来添加AddThis,Facebook和Twitter按钮代码。
$(function() {
$.fn.almComplete = function(alm){
console.log("Ajax Load More Complete!");
};
})(jQuery);
如何让DFP广告管理系统和此回调功能协同工作?我知道Advanced Google Publisher Tag,但我不是世界上最狡猾的代码,我根本无法适应我的需求(特别是因为我使用了很多插槽)。所以,我认为这将是更容易的方式......
答案 0 :(得分:2)
解决问题的关键是为每个插槽使用新的ID(div-gpt-ad-randomNumber),然后将该ID用于要添加横幅的右侧元素。
对于滚动期间的每个“常规”加载,您必须使用新的随机ID再次定义所需的插槽:
function getRandomId() {
return "ad-" + Date.now();
}
var ad1 = getRandomId(),
ad2 = getRandomId(),
ad3 = getRandomId();
googletag.cmd.push(function() {
googletag.defineSlot('/XXXXXXX/ROS_DHTML', [600, 600], ad1).addService(googletag.pubads());
googletag.defineSlot('/XXXXXXX/ROS_Horizontal', [960, 250], ad2).addService(googletag.pubads());
googletag.defineSlot('/XXXXXXX/ROS_Interstitial', [1920, 1080], getRandomId()).addService(googletag.pubads());
googletag.defineSlot('/XXXXXXX/ROS_Txt', [[300, 250], [300, 600]], ad3).addService(googletag.pubads());
googletag.pubads().collapseEmptyDivs();
googletag.enableServices();
});
//You can do a cleaner version with a loop but I think this example it's better to understand the idea
var adContainer = document.createElement("div");
div.id = ad1;
document.body.appendChild(adContainer); // Append it where you need
googletag.cmd.push(function() { googletag.display(ad1);});
//Repeat it for ad2 and ad3
如果还不够,请告诉我,我会用小提琴编辑帖子,并附上真实的例子。