3

我试图弄清楚如何将我的 DFP 广告添加到我的即阅文中。有没有人有这方面的经验?Facebook 提到这是可能的,但我在 DFP 或其他任何地方都看不到任何文档

4

3 回答 3

2

根据他们的文档有两种方法。https://developers.facebook.com/docs/instant-articles/ads-analytics。我们使用了自动展示位置,我们的方法是为广告创建一条显示广告(完整文档)的路径,然后通过所需的 iframe src 使用该 url。

在您必须使用的文件的开头:

<head>
    <meta property="fb:use_automatic_ad_placement" content="true">
</head>

在身体里:

<header>    
    <figure class="op-ad">
        <iframe src="your src" height="250" width="300"></iframe>
    </figure>
</header>
于 2016-04-12T13:09:42.143 回答
1

这是一个放入即时文章正文的GPT标签示例:(我尝试了Facebook帮助上的示例,并且有很多错误)

  <figure class="op-ad">
    <iframe height="250" width="300">
        <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.defineSlot('/XXXXXX/FB_Articles_300x250', [300, 250], 'div-gpt-ad-XXXXXXXXX-0').addService(googletag.pubads());
                googletag.enableServices();
            });
        </script>
        <!-- /133801272/FB_Articles_300x250 -->
        <div id='div-gpt-ad-XXXXXXXXX-0'>
            <script>
                googletag.cmd.push(function() { googletag.display('div-gpt-ad-XXXXXXXXX-0'); });
            </script>
        </div>
    </iframe>
  </figure>

不要忘记将这一行放在即时文章的标题中:

带有一些上下文的示例:

<!doctype html>
    <html lang="pt-br" prefix="op: http://media.facebook.com/op#">
    <head>
      <meta charset="utf-8">
      <link rel="canonical" href="https://yoursite/your-article/">
     <meta property="fb:use_automatic_ad_placement" content="true">

       <meta property="fb:article_style" content="default">

       <meta property="op:markup_version" content="v1.0">
    </head>
    <body>

        <article>
            <header>
                <!-- cover -->
                    <figure class="op-ad">
    <iframe height="250" width="300">
      <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.defineSlot('/XXXXXX/FB_Articles_300x250', [300, 250], 'div-gpt-ad-XXXXXXXXX-0').addService(googletag.pubads());
          googletag.enableServices();
        });
      </script>
      <!-- /133801272/FB_Articles_300x250 -->
      <div id='div-gpt-ad-XXXXXXXXX-0'>
        <script>
          googletag.cmd.push(function() { googletag.display('div-gpt-ad-XXXXXXXXX-0'); });
        </script>
      </div>
    </iframe>
  </figure>
                                <figure>
                        <img src="https://yoursite/your-article/image.jpg" />

                                        </figure>

                <!-- The title and subtitle shown in your Instant Article -->
                <h1>Title;</h1>

                <!-- author(s) -->
                <address>
                    Writen by <a>Author</a>
                                </address>

                <!-- publication date/time -->
                <time class="op-published" datetime="2016-08-16T17:47:42+00:00">16 ago 2016</time>

                <!-- modification date/time -->
                <time class="op-modified" datetime="2016-08-16T17:47:42+00:00">16 ago 2016</time>

            </header>

 <!-- Article body goes here (CONTINUE LIKE A NORMAL INSTANT ARTICLE) -->
于 2016-08-17T20:12:17.513 回答
0

我已在数据库中保存了 DFP 代码和即阅文请求。

每当我发出 POST 请求以将文章与 Instant Articles 同步时,我们都会将 DFP 标记即时嵌入到发送到 IA 的 HTML 文档中。

在开发和测试时,我们已经设置了'development_mode' => 'true',您可以在开发文章部分看到文章。

您可以编写代码以动态生成 DFP 广告代码

/**
 * Returns Array of <figure> tags enclosing <iframe> tags inside it.
 *
 * @param $adData
 * @param $slug - Used to set targeting for restricting ads to a specific article
 * @param $isInHouseArticle - Set targeting for avoiding ads for self-company article
 *
 * @return array
 */
private function getDFPAdCode($adData, $slug, $isInHouseArticle)
{
    $DFPAds = [];
    $adData = isset($adData['config']) ? $adData['config'] : [];
    foreach ($adData as $ad) {
        $mappings = isset($ad['mapping']) ? $ad['mapping'] : [];
        $DFPAds [] = '<figure class="op-ad">
              <iframe>
                <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">
                var targetting = {
                  "self-company": "' . ($isInHouseArticle ? "TRUE" : "FALSE") . '"
                };
                  googletag.cmd.push(function() {
                    var googleMapping = googletag.sizeMapping();
                    var mappingsArray = ' . json_encode($mappings) . ';
                    for (var i = 0; i < mappingsArray.length; i++) {
                        var mapping = mappingsArray[i];
                        var viewport_size = JSON.parse(mapping.viewport_size);
                        var slot_size = JSON.parse(mapping.slot_size);
                        googleMapping.addSize(viewport_size, slot_size);
                    }

                    var mappings = googleMapping.build();

                    googletag.defineSlot("'. $ad['name'] . '", ' . $ad['sizes'] . ', "' . $ad['div'] . '").setCollapseEmptyDiv(false, false).defineSizeMapping(mappings).addService(googletag.pubads());

                    var url = "' . '/article/' . $slug . '";
                    url = url.toLowerCase();
                    url = url.replace(\'=\', \'_\');
                    url = url.substring(0,40);
                    googletag.pubads().setTargeting("url", url);

                    for (var targetKey in targetting) {
                        var targetValue = targetting[targetKey];
                        googletag.pubads().setTargeting(targetKey, targetValue.toString());
                    }
                    googletag.enableServices();
                  });
                </script>
                <div id = "' . $ad['div'] . '" style = "padding: 0px !important;">
                    <script type="text/javascript">
                      googletag.cmd.push(function() { googletag.display("' . $ad['div'] . '"); });
                    </script>
                </div>
                <div id="facebook-ad"></div>
              </iframe>
            </figure>';
    }

    $insertConfig = !empty($adData[0]['properties']) ? $adData[0]['properties']: [];

    return [$DFPAds, $insertConfig];
}

您可以在为 Instant Articles API 的 POST 请求创建 HTML 文档时获取 DFP 广告代码。

于 2018-07-27T06:53:37.493 回答