Extension:Variables
From MediaWiki.org
|
Variables Release status: stable |
|
|---|---|
| Implementation | Example |
| Description | Shows how to add new built in variables |
| Author(s) | User:Nad |
| Version | 2007-05-19 |
| MediaWiki | 1.6.x and above |
| Download | no link |
This extension is a small example snippet of code which goes into the LocalSettings.php script, and allows the addition of new built in variables. The code snippet adds two example variables, {{CURRENTUSER}} and {{LOGO}}, which serve as examples to follow when adding others for your own use.
First we have to add all our new magic words to the MediaWiki environment. This code is based on the method described in Manual:Magic words. To add new magic words, add its name into the array on the first line, and add a case for it in the last function (wfGetCustomVariable) to calculate and return its value when it's requested.
$wgCustomVariables = array('CURRENTUSER','LOGO'); $wgHooks['MagicWordMagicWords'][] = 'wfAddCustomVariable'; $wgHooks['MagicWordwgVariableIDs'][] = 'wfAddCustomVariableID'; $wgHooks['LanguageGetMagic'][] = 'wfAddCustomVariableLang'; $wgHooks['ParserGetVariableValueSwitch'][] = 'wfGetCustomVariable'; function wfAddCustomVariable(&$magicWords) { foreach($GLOBALS['wgCustomVariables'] as $var) $magicWords[] = "MAG_$var"; return true; } function wfAddCustomVariableID(&$variables) { foreach($GLOBALS['wgCustomVariables'] as $var) $variables[] = constant("MAG_$var"); return true; } function wfAddCustomVariableLang(&$langMagic, $langCode = 0) { foreach($GLOBALS['wgCustomVariables'] as $var) { $magic = "MAG_$var"; $langMagic[defined($magic) ? constant($magic) : $magic] = array(0,$var); } return true; } function wfGetCustomVariable(&$parser,&$cache,&$index,&$ret) { switch ($index) { case MAG_CURRENTUSER: $parser->disableCache(); # Mark this content as uncacheable $ret = $GLOBALS['wgUser']->mName; break; case MAG_LOGO: $ret = $GLOBALS['wgLogo']; break; } return true; }
[edit] Notes
- This extension should not be confused with VariablesExtension, which allows the use of variables in the computer programming sense.
- Alternatively, it may be more orderly to put it in a separate extension file and include in LocalSettings.php, such as:
- require_once( "$IP/extensions/MyVariables/MyVariables.php" );

