Create adsense ads for mediawiki

From OpenTutorial
Revision as of 23:35, 9 June 2006 by Hapa (talk | contribs) (typos)
Jump to navigation Jump to search

How to Create a Google Adsense Extension for Mediawiki - kdm adsense is a Mediawiki Extension which adds a new <adsense> tag which allows you to add an adsense button to your wiki pages.

The Code

<?php
/* kdm adsense WikiMedia extension
** kdm (c) 2006
** Add the following line to LocalSettings.php
** require_once('extensions/kdm/kdm_adsense.php');  // kdm adsense Extension
*/

$wgExtensionFunctions[] = "wfadsenseExtension";

function wfadsenseExtension() {
   global $wgParser;
   global $kdm_adsense;
   # register the extension with the WikiText parser
   $wgParser->setHook( "adsense", "renderadsense" );

   $kdm_adsense = array();
   # CHANGE THE LINES BELOW TO REFLECT TO YOUR ADSENSE ADS!!! (there's no limit on the number of ads you define)
   $kdm_adsense[1] = '
<script type="text/javascript">
<!-- google_ad_client = "pub-4452383759975954";
google_ad_width = 468;
google_ad_height = 15;
google_ad_format = "468x15_0ads_al";
google_ad_channel ="6604887705";
google_color_border = "FFFFCC";
google_color_bg = "FFFFFF";
google_color_link = "000000";
google_color_url = "336699";
google_color_text = "333333";
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
';


   $kdm_adsense[2] = '
<script type="text/javascript"><!--
google_ad_client = "pub-4452383759975954";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="1172885669";
google_color_border = "C3D9FF";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
';
}

# The callback function for converting the input text to HTML output
function renderadsense( $input, $argv ) {
   global $kdm_adsense;
   global $wgAuth;
   $pos_space=strpos($input,' ');
   if (!$pos_space) {
       if (is_numeric($input)) {  // format <adsense>number</adsense>
           $part1 = $input;
           $part2 = '';
           if (!$kdm_adsense[$part1]) {
               print_r ('warning, specified adsense ad not found, defaulting to button 1');
               $part1 = 1;
               $part2 = $input;
           }
       } else {                   // format <adsense>text</adsense> & format <adsense></adsense>
           $part1 = 1;
           $part2 = $input;
       }
   } else {                       // format <adsense>number text</adsense>
       $part1=substr($input,0,$pos_space);
       $part2=substr($input,$pos_space+1);
       if (is_numeric($part1)) {
           if (!$kdm_adsense[$part1]) {
               print_r ('warning, specified adsense ad not found, defaulting to button 1');
               $part1 = 1;
           }
       } else {                 // format <adsense>text</adsense>
           $part1 = 1;
           $part2 = $input;
       }
   }
   $form=$kdm_adsense[$part1];
   // if the kdm interface is available, then use the clean function which is defined there, 
   // otherwise just clean the necessities...
   if (class_exists ('kdm')) {
       $input = $wgAuth->kdm->kdm->clean_value ($part2);
   } else {
       $part2 = str_replace( ">"            , ">"         , $part2 );
       $part2 = str_replace( "<"            , "<"         , $part2 );
       $part2 = str_replace( "\""           , """         , $part2 );
       $part2 = str_replace( "!"            , "!"         , $part2 );
       $part2 = str_replace( "'"            , "'"         , $part2 );
       $input = $part2;
   }
   $output = '<table border=0><tr><td>'.$form.'</td><td valign=center>'.$input.'</td></tr></table>';
   return $output;
}
?>


!!WARNING!!

If the text that you place between the single quotes in the $kdm_adsense[1] variable has any single quotes in it then you must escape them otherwise IT WILL NOT WORK.

You will get an error like similar to "Parse error: parse error, unexpected '}' in /home/content/O/p/e/OpenTutorial/html/extensions/kdm/kdm_adsense.php on line 21"

Example:

  • $kdm_adsense[2] = '<form action="https://... - it\'s fast, free and secure!"></form>'
    • works just fine
  • $kdm_adsense[2] = '<form action="https://... - it's fast, free and secure!"></form>'
    • will crash your wiki


Installation

  • create a directory kdm in the extensions directory
  • place kdm_adsense.php in the extensions/kdm directory (see code below)
  • open the file LocalSettings.php, search for:
?>

and change this to:

    require_once('extensions/kdm/kdm_adsense.php');  // kdm adsense Extension
?>
  • in the function wfadsenseExtension, place the code for your adsense-buttons in the variable $kdm_adsense.


Usage

  • the tag <adsense> is translated to the button defined in $kdm_adsense[1].
  • the tag <adsense>2</adsense> is translated to the button defined in $kdm_adsense[2].
  • the tag <adsense>2 description</adsense> is translated to the button defined in $kdm_adsense[2], additionaly the text 'description' is placed next to the adsense button.
  • the tag <adsense>description</adsense> is translated to the button defined in $kdm_adsense[1], additionaly the text 'description' is placed next to the adsense button.


If you find this extension usefull, then perhaps you can donate a few bucks? ;)

<paypal></paypal>


Example

<adsense></adsense> Produces (Note: Sometimes this doesn't always how up, I don't know why)

<adsense>2</adsense> Produces


Inspiration

This extension was inspired by the IpbWiki Paypal Extension


See also


Bibliography

  • (ISBN 0470043997) "Wikis For Dummies (For Dummies (Computer/Tech))" by Dan Woods
  • (ISBN 020171499X) "The Wiki Way: Quick Collaboration on the Web" by Bo Leuf, Ward Cunningham
  • (ISBN 3540259953) "Wiki : Web Collaboration" by Anja Ebersbach, Markus Glaser, Richard Heigl, G. Dueck (Foreword), Andrea Adelung (Translator)