我的代码:
<head>
...
<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
</script>
<script>
googletag.cmd.push(function() {
googletag.pubads().enableSingleRequest();
googletag.pubads().collapseEmptyDivs();
googletag.pubads().disableInitialLoad();
googletag.enableServices();
});
</script>
...
</head>
<body>
...
<div id='ad-id-<?php echo $adcount ?>' style='height:600px; width:300px;'>
<script>
googletag.cmd.push(function() {
var slotname = "ad-id-<?php echo $adcount ?>;
var slot = googletag.defineSlot('/22#####/ad_300_600', [300, 600], slotname).addService(googletag.pubads());
googletag.display(slotname);
googletag.pubads().refresh([slot]);
});
</script>
</div>
...
</body>
这是循环的一部分,当行数未知时,每X行放置一次广告。
我遇到的问题是,即使将Display creatives:
设置为Only one
并且将Per-user frequency
设置为1 per 1 minute
,我仍然在页面上看到重复的广告。
有多个订单项,每个订单项都有1个广告素材。我只希望每个广告展示一次。
答案 0 :(得分:0)
根据文档(here),push函数在页面的顶部声明,并且必须包括:
统一所有这些元素时,您应该能够链接广告素材,应用上限等...
使用当前的实现,您将为每个广告位生成一个广告位定义。看起来很方便,但是您不能同时提取广告请求,因此Ad Manager无法在广告位请求之间保留相同的相关器。
这是您可以做的(您可能需要在顶部广告位定义中知道页面上有多少个广告位):
<head>
...
<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
</script>
<script>
googletag.cmd.push(function() {
//slots definitions
googletag.defineSlot('/22#####/ad_300_600', [300, 600], 'ad-id-<?php echo $adcount ?>').addService(googletag.pubads());
//tag options
googletag.pubads().enableSingleRequest();
googletag.pubads().collapseEmptyDivs();
googletag.pubads().disableInitialLoad();
googletag.enableServices();
});
</script>
...
</head>
<body>
...
<div id='ad-id-<?php echo $adcount ?>' style='height:600px; width:300px;'>
</div>
...
<script>
//your loop to generate the ad calls on each "ad-id-" placements
googletag.cmd.push(function() {
var adunits = document.querySelectorAll('div[id^="ad-id-"]');
for (var i = 0; i < adunits.length; i++) { googletag.cmd.push(function() {
googletag.display(adunits[i].getAttribute('id')); }); }
});
</script>
</body>