Согласно документации ( здесь ), функция 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>