今天收到過來自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> '; }
這樣就可以屏蔽紅色鍊接頁面中的廣告了。
评论