0

我的代码:

<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:set toOnly onePer-user frequencyset to 1 per 1 minute,我仍然会在页面上看到重复的广告。

有多个订单项,每个订单项都有 1 个广告素材。我希望每个广告只显示一次。

4

1 回答 1

0

根据文档(此处),推送功能在页面头部声明,它必须包括:

  • 尺寸映射(如果需要)
  • 插槽定义
  • 键值设置
  • 标签选项

统一所有这些元素时,您应该能够链接创意、应用上限等...

通过您当前的实施,您可以为每个广告位生成一个广告位定义。看起来很方便,但您不会同时拉取广告请求,因此 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>

于 2019-04-01T08:33:12.080 回答