Extensions FAQ
The Special:Version page on each wiki contains a list of extensions that have registered themselves with the MediaWiki software. All extensions can be installed without showing up on Special:Version, if the developer does not include the correct code to list it there.
For most extensions, copy the extension PHP file (or directory) to your extensions/
folder and add the following statement to your LocalSettings.php
, with ExtensionName
being the filename of your extension, such as MyExtension.php.
require_once "extensions/ExtensionName/ExtensionName.php";
Since 1.25 (2015), there is a new way of installing extensions, which works with extensions that support extension registration. The equivalent for the extension above would be:
wfLoadExtension('ExtensionName');
Some extensions, however, have additional steps and/or different installation procedures.
Some extensions will contain a text-file named README
(sometimes INSTALL
) that will have more detailed information about that extension.
If you're writing e.g. special page:
global $wgOut;
$wgOut->enableClientCache(false);
For parser tag hooks:
function wfSomeHookFunction( $parser, $foo, $bar ) {
$parser->getOutput()->updateCacheExpiry(0);
...
}
In case your extension output is only dependent on some option or user context and not time, you can still let it get cached by the parser cache but make sure it's marked as one output variant (of many possible). Use the PageRenderingHash hook to influence the cache hash accordingly.
$parser->disableCache()
to disable caching, but this was deprecated in MW 1.28 and removed altogether in MW 1.35.Special pages
editWhen rendering output that will not be subject to parser cache, such as on a special page
global $wgOut;
$wgOut->parse( $text );
where $text
is the wikitext to be parsed.
Parser hooks
editSee Manual:Tag extensions#How do I render wikitext in my extension?
You can't. Dynamic content can not be included in a static index.
See Manual:Tag extensions#How can I avoid modification of my extension's HTML output?
See Manual:Tag extensions#How can I pass XML-style parameters in my extension tag?
Your extension (or another one installed) might be using parse()
function instead of recursiveTagParse()
.
Then change it to recursiveTagParse
.
Use the Title class and the isProtected( ) method, e.g.
function extensionFunction() {
# Assume $title is the title object
if( $title->isProtected( 'edit' ) ) {
# Protected from editing, do things
} else {
# Not protected from editing
}
}
All the scripts in the /wiki structure need to be readable and executable by the user that PHP runs as. All perms are usually 755 and owner/group being a different user. The LocalSettings.php file is created by the script on setup and so will be an example to set the rest by.
See Manual:Developing extensions#Registering features with MediaWiki