Ember模板和Google AdSense

uyhoqukh  于 2023-05-06  发布在  Go
关注(0)|答案(1)|浏览(127)

在Ember(Handlebars)模板中包含Google AdSense横幅的适当方式是什么?假设我有一个视图的模板,看起来像这样:

<script type="text/x-handlebars" data-template-name="myPageWithBanner">
  <div id="mainContent"> 
    Lorem ipsum main content
  </div>
  <div id="banner">
    //Normally I would insert a script tag here, but that is not possible
  </div>
</script>

我是否需要使用预编译模板从代码中完成此操作,或者是否有一种我不知道的方法?

vc6uscn9

vc6uscn91#

我没有Google AdSense帐户,所以无法测试此功能。但这里有几个主要问题:
1.不能在Handlebars模板中包含<script>标记,即使使用CDATA也不行。

  1. Google AdSense要求AdSense JavaScript在您的页面中逐字显示,否则即违反TOS。
    1.根据this StackOverflow answer, AJAX 网站上的AdSense支持很差。
  2. Google AdSense爬虫将无法看到您页面上的任何内容,因此我怀疑广告定位是否有效。但看看下面的一些事情,可能会帮助爬虫。
    但为了简单起见,我假设您可以直接与Google讨论TOS问题,我将尝试解决技术问题。首先,基于this StackOverflow answer,这里有一个可能的解决方案,允许您逐字提供Google的脚本:
<script type="text/x-handlebars">
    <h1>Ember AdSense</h1>
    {{outlet}}
    <div id="ads"></div>
</script>

<script type="text/x-handlebars" data-template-name="index">
    <p>Hello, world!</p>
</script>

<div id="ads-load" style="display: none">

<!--
  Apparently this needs to appear verbatim, exactly as Google gave it to
  you, or it's a TOS violation.
-->

<script type="text/javascript"><!--
google_ad_client = "ca-pub-XXXXXXXXXX";
/* Test Ad */
google_ad_slot = "XXXXXX";
google_ad_width = 250;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

</div>

然后,当我们的主模板加载时,我们使用jQuery将广告移动到我们的应用程序模板中:

window.App = Ember.Application.create();

// Explicitly declare the view class for our application view.
App.ApplicationView = Ember.View.extend({
    // Called once the view is rendered.
    didInsertElement: function () {
        $('#ads-load').appendTo("#ads").css("display", "block");
    }
});

至于允许谷歌爬虫看到你的内容,谷歌有official advice for AJAX applications,但我不知道是否与AdSense爬虫工程。或者,如果您使用pushState更新显示的URL,则需要确保当爬虫请求时,服务器可以呈现这些URL中的每一个。(Discourse论坛软件does exactly this。)
请让我知道如果它让你更接近。

相关问题