今天收到过来自Google AdSense的警告信,某系列网站中有部分违规页面,我查看了一下,批量导入的内容中确实有一些不适合放置AdSense广告,查了一下以前遇到类似情况,一般都是删除Google信中指定的页面,但这次类似页面很多,有几百个吧,只删除一个不行,都删除起来比较麻烦,于是就想办法来让这一批页面都不显示Google提供的广告。
以前在MediaWiki网站中也做过类似工作,因为广告代码是通过LocalSettings.php文件来加入,所以是修改LocalSettings.php来实现,对$_SERVER['REQUEST_URI']进行判断,符合某些条件就不投放广告。
这次涉及到的是Drupal网站,广告代码是通过网页模板page.tpl.php和node.tpl.php分别投放的,于是就需要修改这两个模板文件,代码示范如下:
page.tpl.php中加入:
<?php $allow_ad = TRUE;//默认允许广告投放 if (isset($node->field_sic['und'][0]['value'])) {//是否有要判断的字段 $field_sic = $node->field_sic['und'][0]['value']; if ($field_sic == '123 - XXX') {//该字段是否符合屏蔽条件 $allow_ad = FALSE;//符合则不允许投放广告 } } ?> ...其它显示内容代码... <?php if ($allow_ad) {//如果允许投放广告才加入广告代码,否则无广告代码 print ' <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> ...广告代码... (adsbygoogle = window.adsbygoogle || []).push({}); </script> '; } ?>
node.tpl.php中加入:
<?php $allow_ad = TRUE;//默认允许投放广告 if (isset($field_sic[0]['value'])) {//是否有要判断的字段 $sic=$field_sic[0]['value']; if ($sic == '123 - XXX') {//该字段是否符合屏蔽条件 $allow_ad = FALSE;//符合则不允许投放广告 } } else { $sic=NULL; } ?> ...其它显示内容代码... <?php if ($allow_ad) {//如果允许投放广告才加入广告代码 $ad = ' <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> ...广告代码... (adsbygoogle = window.adsbygoogle || []).push({}); </script> '; } else {//否则广告代码为空 $ad = ''; } print $ad;//显示广告代码 ?>
如果是html.tpl.php或者其它什么页面、其它什么模板中有广告代码,也都是去这些地方加判断来决定是否投放广告。
补充一个在MediaWiki中屏蔽不存在页面的例子:
收到Google警告邮件:
您需要采取行动,确保您的 AdSense 帐户符合 AdSense 合作规范。请在三个工作日之内对以上网站作出更改。我们可能会在此期限后再次抽检该网站。在完成必要的更改后,请点击下面的“标记为已解决”按钮,并填写随后显示的简表。请注意,如果您不进行更改以使网站符合要求,我们可能会针对以上所列网站停止广告投放服务。了解详情 示例网址: http://... 为了确保提供高质量的用户体验和恰当定位的广告,Google 广告只能展示在便于用户导航且信息丰富的原创内容上。 广告不应成为网页的主要焦点,也/或不应比内容本身更醒目。此处所指的网页包括用户访问后可能会退出某个域的网页(即“退出页”或“非常感谢”页)、404 错误页以及一些登录页面。由于我们的广告是根据内容定位的,因此包含文字很少的图库也不是展示广告的最佳位置。 网站应该拥有合理的结构,可让用户轻松点击转到您的网页,找到他们所需的信息。我们建议网站建立清晰的层次并提供文字链接,以便能从至少一个静态文字链接到达每个网页。 有关详情,请参阅以下资源: 关于制作高质量网站的提示(第 1 部分) 关于制作高质量网站的提示(第 2 部分) 网站站长质量指南 AdSense 合作规范
检查发现是MediaWiki中有一些红色的链接,是为了让用户更方便创建还不存在的词条,可以找出规律:网址中都带有&action=edit&redlink=1,所以可以把网址是否包含redlink这个词来作为判断,存在这个词就禁止投放广告代码,我以在LocalSettings.php中投放广告代码为示范,具体程序如下:
$request_uri = $_SERVER['REQUEST_URI']; if (strpos($request_uri,'redlink') != FALSE) { $ad_code = ''; } else { $ad_code = ' <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> ...广告代码... (adsbygoogle = window.adsbygoogle || []).push({}); </script> '; }
这样就可以屏蔽红色链接页面中的广告了。
评论