Jump to content
MediaWiki

Taking over output in your special page

From mediawiki.org

Normally your Special page will queue up some HTML and/or wikitext output via $wgOut, which will take care of actual HTML output and skinning at the end of the request.

Sometimes though you want to output things directly, such as to export a custom XML type, data feed, or binary download. It's not too hard to do, but it's not super-obvious either... Here's some example bits snipped from Special:Export:

In your SpecialPage class's execute() method:

 // Disable the regular OutputPage stuff -- we're taking over output!
 $wgOut->disable();
 
 // Cancel output buffering and gzipping if set
 // You might need this if you're creating HUGE output, otherwise skip it
 //wfResetOutputBuffers();
 
 // Set your content type... this can XML or binary or whatever you need.
 header( "Content-type: application/xml; charset=utf-8" );
 
 // If you want to force browsers to download instead of showing XML inline you can do something like this:
 // Provide a sane filename suggestion
 $filename = urlencode( $wgSitename . '-' . wfTimestampNow() . '.xml' );
 header( "Content-disposition: attachment;filename={$filename}" );
 
 // Now you can output data directly with 'print', 'echo', etc.
 print "<xml><hello to='world'/></xml>";

AltStyle によって変換されたページ (->オリジナル) /