1. 程式人生 > >MediaWiki投放廣告代碼的幾種辦法

MediaWiki投放廣告代碼的幾種辦法

文本 政策 模板 最簡 lds ddc local 軟件 顯示

很多年前就用MediaWiki並投放Google AdSense廣告,中間也很多次修改過廣告代碼及投放方式,最近又在升級MediaWiki軟件,也對廣告投放進行了一些調整,現在小結一下我用過的幾種廣告代碼投放方式:

  • 最簡單直接的整站投放辦法是修改皮膚文件,例如MonoBook.php或者Vector.php等,把廣告代碼放在需要放置的位置代碼前後;
  • 只對某個頁面投放,可以把廣告代碼直接嵌入wiki文本中(需要在LocalSettings.php中打開raw html功能,在<html></html>之間放置廣告代碼);
  • 對某一部分使用共同模板的頁面投放,可以把廣告代碼放在模板頁面中,這樣調用該模板的所有頁面都可以看到廣告;
  • 只在網頁頂部投放,可以利用“網站通知(Site Notice)”功能,修改MediaWiki:Sitenotice,在<html></html>之間放置廣告代碼;
  • 在網頁底部投放,可以修改MediaWiki:Lastmodifiedat,放置廣告代碼就會顯示在頁面內容的下方;
  • 通過LocalSettings.php來投放,在其中設置$wgSiteNotice、$wgOut->prependHTML、$wgOut->addHTML、$wgOut->addScript等分別投放廣告到不同的位置。

  以前也一直想把廣告代碼投放在頁面下方(但在“隱私政策”等底部鏈接的上方)但沒有找到很合適的辦法,這次在網上搜索到一位老外寫的博客《Displaying Google Adsense in MediaWiki》可以解決這個問題:

  • 投放在頂部:
    $wgHooks[‘SiteNoticeAfter‘][] = function(&$siteNotice, $skin) { $siteNotice .= $adsense_code_top; return true; };
  • 投放在底部:
    $wgHooks[‘SkinAfterContent‘][] = function(&$data, $skin) { global $myAdCode; $data .= ‘<div style="text-align:center;">‘; $data .= $adsense_code_bottom; $data .= ‘</div>‘; return true;
  • 投放在側面菜單下:
    $wgHooks[‘SkinBuildSidebar‘][] = function($skin, &$bar) { $out = $adsense_code_sidebar; $out .= "<script>$(‘#p-Ads‘).addClass(‘persistent‘);</script>"; $bar[‘Ads‘] = $out; return true; };

  另外,還可以不把上面的函數放在LocalSettings.php中,而是專門寫一個小的第三方擴展程序,這樣顯得更專業,修改起來也更方便。

  上面的辦法不僅適用於投放Google AdSense廣告,其它的廣告代碼,例如百度聯盟等,也都可以,包括內部推薦頁面鏈接的代碼。

  我們在MonoBook, Vector中投放廣告都正常,但在WPtouch和MobileFrontend這樣的移動皮膚中遇到廣告位置錯誤或者部分廣告內容不顯示、遮蓋廣告位附近其它鏈接等問題,經過排查是css定義的問題,去掉main.css中對iframe的定義就可以恢復正常了。

MediaWiki投放廣告代碼的幾種辦法