我正在为多个网站设置DFP,我们有一组订单项,对于每个广告素材,当前的点击进入example.com
(我们自己的.com
网站),但由于我们运行多个TLD,我们还希望点击URL相应地更改。例如,当广告在.jp
中显示时,点击应该转到.jp
。
在DFP API参考中,有一项功能可以更改点击后到达网址:http://support.google.com/dfp_premium/bin/answer.py?hl=en&answer=1650154&expand=adslot_details#setClickUrl
但是为了更改我们的点击后到达网址,我们还需要知道当前的网址是什么。示例案例:我们需要从DFP http://www.example.com/products/1
获取adSlot
,以便将其更改为http://www.example.jp/products/1
。
我使用chrome web JS控制台进行了试验和错误,并在getClickUrl()
类中找到了adSlot
函数,但它一直返回空字符串,例如:
googletag.defineSlot("/1234/Test_300x250", [300, 250], 'div-1').getClickUrl();
googletag.defineSlot("/1234/Test_300x250", [300, 250], 'div-1').addService(googletag.pubads()).getClickUrl();
任何人都有这方面的经验吗?
答案 0 :(得分:2)
如果您可以控制广告素材,我认为通过传递自定义变量会更容易。您可以使用 setTargeting 方法传递自定义变量。因此,显示广告的客户端代码如下所示:
googletag.defineSlot("/1234/Test_300x250", [300, 250], 'div-1').setTargeting('region','jp');
然后在您的HTML广告素材中,您使用模式宏来替换部分点击后到达网址。
<a href="http://www.example.%%PATTERN:region%%">
<img src="http://www.example.%%PATTERN:region%%/image.jpeg">
</a>
DFP将使用 setTargeting 传递的任何值替换宏。
答案 1 :(得分:0)
我还没有找到一种超级简单的方法 - 但它有可能。
基本上,您可以覆盖DFP广告管理系统中的内部功能,并通过进入iframe的DOM来捕获广告内容(和网址)。
以下是一个应该提醒广告网址的示例(我只是在Chrome中对此进行了测试,因此可能需要调整才能在多个浏览器中使用)
<html>
<head>
<title>DFP test</title>
<script type='text/javascript'>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
(function() {
var gads = document.createElement('script');
gads.async = true;
gads.type = 'text/javascript';
var useSSL = 'https:' == document.location.protocol;
gads.src = (useSSL ? 'https:' : 'http:') +
'//www.googletagservices.com/tag/js/gpt.js';
var node = document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(gads, node);
})();
</script>
<script type="text/javascript">
googletag.cmd.push(function() {
var slot1 = googletag.defineSlot('/12345678/Test_300x250', [300, 250], 'div-gpt-ad-1340819095858-0').addService(googletag.pubads());
slot1.oldRenderEnded = slot1.renderEnded;
slot1.renderEnded = function(){
alert(document.getElementById('div-gpt-ad-1340819095858-0').getElementsByTagName('iframe')[0].contentWindow.document.getElementsByTagName('a')[0].href.replace(/^.*&adurl=/,''));
slot1.oldRenderEnded();
};
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
</head>
<body>
<div id='div-gpt-ad-1340819095858-0' style='width:266px; height:115px;'>
<script type='text/javascript'>
googletag.cmd.push(function() {
googletag.display('div-gpt-ad-1340819095858-0');
});
</script>
</div>
</body>
</html>
如果你使用jQuery,那么使用类似的东西会更好:
$(adUnit).find('iframe:first').contents().find('a')
有任何问题让我知道。