Google AdSense w MediaWiki
Google AdSense to program reklamowy firmy Google pozwalający właścicielom stron WWW zamieszczać na nich reklamy w formie tekstowej, przy czym reklamy te są – przynajmniej teoretycznie – tematycznie powiązane z treścią witryny.
W przypadku MediaWiki są dostępne są dwie grupy rozwiązań: zastosowanie jednego z rozszerzeń do wyświetlania reklam bądź modyfikacja kodu MediaWiki.
Spis treści |
[edytuj] Rozszerzenia do AdSense
Dostępne są rozszerzenia umożliwiające wyświetlanie na stronach MediaWiki reklam Google Adsense. Poniżej opisano kilka z nich.
Rozszerzenia te działają w ten sposób, że w treści strony należy umieścić odpowiednie tagi i parametry dotyczące reklam. Ogranicza to możliwość wyboru miejsca, w którym będą wyświetlane reklamy oraz utrudnia automatyzację całego procesu. Ponadto stwarza ryzyko, że użytkownicy mogą majstrować przy reklamach.
[edytuj] Rozszerzenie AdSense
Rozszerzenie AdSense napisane przez Naoise Golden Santos wprowadza do parsera MediaWiki nowy tag: <adsense>, którym należy objąć parametry reklam, np.:
<adsense> google_ad_client = 'pub-XXXXXXXXXXXXXXXX'; google_ad_width = 728; google_ad_height = 90; google_ad_format = '728x90_as'; google_ad_type = 'text_image'; google_ad_channel = '3267063621'; google_color_border = 'FFFFFF'; google_color_bg = 'FFFFFF'; google_color_link = '3D81EE'; google_color_text = '000000'; google_color_url = '3D81EE'; </adsense>
Niestety, rozszerzenie w żaden sposób nie filtruje tekstu dostarczonego przez użytkownika, co pozwala na przykład na zainstalowanie złośliwego kodu w języku javascript. Można temu w pewnym stopniu zaradzić aplikując następującą łatę[1]:
--- adsense.php.orig 2007-02-25 22:41:20.585776165 +0100 +++ adsense.php 2007-02-25 22:40:27.506458917 +0100 @@ -65,7 +65,7 @@ function renderAdsense($input, $argv) { $output = '<script type="text/javascript">/* <![CDATA[ */'; - $output .= $input; + $output .= strip_tags($input); $output .= '/* ]]> */</script>'; $output .= '<script type="text/javascript"'; $output .= ' <nowiki>src="http://pagead2.googlesyndication.com/pagead/show_ads.js">'</nowiki>;
Dzięki temu tekst wprowadzony przez użytkownika zostanie przepuszczony przez funkcję strip_tags(), usuwającą znaczniki HTML i PHP.
[edytuj] Rozszerzenie AdSenseExt
Rozszerzenie AdSenseExt stworzone przez Luke'a Johnsona działa podobnie, jak wyżej opisane AdSense, przy czym używany przez nie tag to <AdSense>. Przykładowa wstawka obsługiwana przez AdSenseExt może wyglądać następująco:
<AdSense>google_ad_client = "pub-XXXXXXXXXXXXXXXX"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "text"; google_ad_channel = ""; google_color_border = "CCCCCC"; google_color_bg = "FFFFFF"; google_color_link = "000000"; google_color_url = "666666"; google_color_text = "333333";</AdSense>
AdSenseExt jest bezpieczniejszy od AdSense, bo używa funkcji strip_tags() do filtrowania tekstu wpisanego przez użytkownika. Z drugiej strony AdSenseExt jest bardziej wrażliwy na nadmiarowe spacje i znaki nowego wiersza; do wygenerowanego fragmentu kodu dostają się znaczniki <p>, jeśli wstawi się nowy wiersz po tagu <AdSense>. To sprawia, że jest mniej wygodne w użyciu.
[edytuj] Rozszerzenie AdSense Simona Moona
Rozszerzenie AdSense autorstwa Simona Moona również definiuje specjalny tag do wstawiania reklam: <adsense>. Inaczej niż w wyżej opisanych przypadkach, wprowadzony między znacznikami tekst nie jest ślepo kopiowany. Parametry reklam definiuje się za pomocą atrybutów tagu, co pozwala na ściślejszą kontrolę wprowadzanego tekstu. Może to wyglądać na przykład tak:
<adsense adclient="pub-XXXXXXXXXXXXXXXX" adwidth="728" adheight="90" adformat="728x90_as" adtype="text_image" adchannel="" colorborder="FFFFFF" colorbg="FFFFFF" colorlink="0000FF" colortext="000000" colorurl="008000" />
Dodatkowo istnieje możliwość ustawienia identyfikatora klienta na stałe; w pliku LocalSettings.php należy wpisać:
$wgAdSenseAdClient = "pub-XXXXXXXXXXXXXXXX";
co spowoduje, że atrybut adclient znacznika <adsense> będzie ignorowany. W ten sposób można się zabezpieczyć przed ewentualnymi użytkownikami, którzy chcieliby wstawić swoją reklamę.
[edytuj] Rozszerzenie GoogleAdSense
Kolejnym rozszerzeniem do obsługi reklam jest GoogleAdSense. Definiuje znacznik <google, pozwalający na wyświetlanie kilku elementów związanych z reklamami AdSense (wyszukiwarka, linki sponsorowane, refferal button). Nie sprawdzałem jeszcze, jak to działa.
[edytuj] Rozszerzenie HTMLets
Zamiast stosować specjalizowane rozszerzenia do wyświetlania reklam, można skorzystać z czegoś ogólniejszego. Rozszerzenie HTMLets pozwala na włączanie do stron MediaWiki treści plików HTML-owych, składowanych w odpowiednim miejscu na serwerze WWW.
Można więc stworzyć jeden bądź więcej takich plików, wkleić do nich kod HTML/javascript do wyświetlania reklam (dostarczany przez Google) a następnie włączyć taki plik/pliki do stron MediaWiki.
Przykładowo, tworząc na serwerze plik testowa_reklama.html o następującej treści:
<html> <body> <script type="text/javascript"><!-- google_ad_client = "pub-XXXXXXXXXXXXXXXX"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "text"; google_ad_channel =""; google_color_border = "CCCCCC"; google_color_bg = "FFFFFF"; google_color_link = "000000"; google_color_url = "666666"; google_color_text = "333333"; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </body> </html>
a następnie umieszczając na którejś stronie wstawkę:
<htmlet>testowa_reklama</htmlet>
spowodujemy wyświetlenie na tej stronie reklamy[2]:
| <htmlet nocache="yes">testowa_reklama</htmlet> |
Dobre i proste rozwiązanie.
[edytuj] Modyfikacja MediaWiki
Ingerencja w kod PHP/CSS MediaWiki pozwala uniknąć wad, które mają rozszerzenia, ułatwiają także zautomatyzowanie procesu wstawiania reklam na stronach. W sieci można znaleźć opis kilku rozwiązań tego rodzaju:
- modyfikacja standardowej skóry Monobook, umieszczająca reklamy w pasku bocznym (sidebar) i – opcjonalnie – u dołu strony: [1];
- inna metoda, pozwalająca też blokować wyświetlanie reklam poszczególnym użytkownikom: [2];
- modyfikacja kodu MediaWiki opisana na stronach serwisu how2setup: [3].
- adsense-top.php – przykładowa modyfikacja skóry Monobook, umieszczająca baner reklamowy na górze strony, nad tytułem
[edytuj] Przykład
Przykładowa reklama umieszczona z wykorzystaniem zmodyfikowanego rozszerzenia AdSense. Kod źródłowy wygląda następująco:
<center> <adsense> google_ad_client = 'pub-XXXXXXXXXXXXXXXX'; google_ad_width = 728; google_ad_height = 90; google_ad_format = '728x90_as'; google_ad_type = 'text_image'; google_ad_channel = '3267063621'; google_color_border = 'E0E0E0'; google_color_bg = 'FFFFFF'; google_color_link = '3D81EE'; google_color_text = '000000'; google_color_url = '3D81EE'; </adsense> </center>
co daje taki efekt[3]:
<adsense> google_ad_client = 'pub-XXXXXXXXXXXXXXXX'; google_ad_width = 728; google_ad_height = 90; google_ad_format = '728x90_as'; google_ad_type = 'text_image'; google_ad_channel = '3267063621'; google_color_border = 'E0E0E0'; google_color_bg = 'FFFFFF'; google_color_link = '3D81EE'; google_color_text = '000000'; google_color_url = '3D81EE'; </adsense>
- ↑ Oryginalny adsense.php ma końce wierszy w stylu MS-DOS (CR/LF), trzeba go przekonwertować np. przy pomocy dos2unix przed zaaplikowaniem patcha.
- ↑ Może być niewidoczna, jeśli rozszerzenie HTMLets nie jest zainstalowane na tej wiki.
- ↑ Reklama nie będzie widoczna, jeśli nie zainstalowano rozszerzenia MediaWiki. Może się też nie pokazać, jeśli na stronie jest więcej reklam.