The special page file

The body file (in this example, named <tvar|SpecialMyExtension>SpecialMyExtension.php</>) should contain a subclass of SpecialPage (or one of its subclasses).</translate> <translate>It will be loaded automatically when the special page is requested.</translate> <translate>This example implements the subclass SpecialMyExtension:</translate>

class SpecialMyExtension extends SpecialPage {
	function __construct() {
		parent::__construct( 'MyExtension' );
	function execute( $par ) {
		$request = $this->getRequest();
		$output = $this->getOutput();
		# <translate>Get request data from, e.g.</translate>
		$param = $request->getText( 'param' );
		# <translate>Do stuff</translate>
		# ...
		$wikitext = 'Hello world!';
		$output->addWikiText( $wikitext );

<translate>You need the <tvar|conduct>__construct()</> constructor because its first parameter names your special page.

<tvar|execute>execute()</> is the main function that is called when a special page is accessed.</translate> <translate>The function overloads the function <tvar|SpecialPage>SpecialPage::execute()</>.</translate> <translate>It passes a single parameter <tvar|par>$par</>, the subpage component of the current title.</translate> <translate>For example, if someone follows a link to <tvar|blah>Template:Ll</>, <tvar|par1>$par</> will contain "blah".

Wikitext and HTML output should normally be run via $wgOut — do not use 'print' or 'echo' directly when working within the wiki's user interface.

However if you're using your special page as an access point to custom XML or binary output, see <tvar|takingoveroutput>Template:Ll</>.</translate>