DFP:获取当前的点击后到达网址

时间:2012-09-12 02:45:54

标签: google-dfp

我正在为多个网站设置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();

任何人都有这方面的经验吗?

2 个答案:

答案 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')

有任何问题让我知道。