#php #google-dfp #google-ad-manager
#php #google-dfp #google-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() {
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:
Согласно документации (здесь), функция push объявлена в заголовке страницы, и она должна включать :
- Сопоставление размеров (при необходимости)
- определение слотов
- настройка ключевых значений
- параметры тегов
При объединении всех этих элементов вы должны иметь возможность связать креатив, применить ограничение и т.д…
В вашей текущей реализации вы создаете определение слота для каждого рекламного слота. Выглядит удобно, но вы не отправляете запросы на рекламу одновременно, поэтому менеджер рекламы не может поддерживать одинаковую корреляцию между вашими запросами на слоты.
Вот что вы могли бы сделать (возможно, вам потребуется узнать, сколько рекламных мест будет на странице в определении заголовка) :
<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>