很多年前就用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的定義就可以恢複正常了。
评论1
謝謝分享!!
謝謝分享!!