Google DFP / Менеджер объявлений игнорирует "Показ объявлений: только один" и частоту на пользователя, когда рекламные блоки добавляются программно - PullRequest
0 голосов
/ 29 марта 2019

Мой код:

<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 объявление.Я хочу показывать каждое объявление только один раз.

1 Ответ

0 голосов
/ 01 апреля 2019

Согласно документации ( здесь ), функция push-сообщения объявляется в верхней части страницы и должна включать:

  • sizeMapping (при необходимости)
  • определение слотов
  • ключевые значения настроены
  • варианты тегов

Унифицируя все эти элементы, вы должны иметь возможность связывать креатив, применять кэппинг и т. Д. *

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

Вот что вы можете сделать (вам может понадобиться узнать, сколько рекламных блоков будет на странице в определении заголовка слота):

<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>

...