Manual talk:Hooks/SkinTemplateOutputPageBeforeExec

From MediaWiki.org
Jump to: navigation, search

When I try to use this hook in an extension, the MediaWiki page shows lots of warnings like this:

Warning: Cannot modify header information - headers already sent by (output started at (myexteion).php:14) in includes/WebResponse.php on line 1

Is this hook not suited for use in an extension? How can these warnings be suprssed?

[edit] Example: suppress "User contributions" link in the toolbox for non-sysops

Add in LocalSettings.php to suppress "User contributions" link in the toolbox for non-sysops (tested with MediaWiki 1.15.1 --Wikinaut 17:29, 7 January 2010 (UTC)).

$wgGroupPermissions['*']['listcontributions'] = false;
$wgGroupPermissions['sysop']['listcontributions'] = true;
 
// disable "User contributions" in the toolbox, if the user is not allowed to use it 
function StripContributions( &$templateengine, &$template ) { 
        global $wgUser;
        if ( !$wgUser->isAllowed( 'listcontributions' ) ) {
                unset( $template->data['nav_urls']['contributions'] );
        }
    return true;
}
$wgHooks['SkinTemplateOutputPageBeforeExec'][] = 'StripContributions';

Note:
This code suppresses only the link in the toolbox. Read here, how disable the Special:Contribution page as such.

[edit] signature

The call in SkinTemplate.php is wfRunHooks( 'SkinTemplateOutputPageBeforeExec', array( &$this, &$tpl ), so the first argument is a SkinTemplate object, and the second is a "template" object, apparently usually (always?) a subclass of QuickTemplate. I'm not sure what kinds of objects are supposed to be referred to by $template and $templateEngine in the current page's text, so I haven't changed it. Does anyone know how veteran MW hackers would naturally interpret variables named $template and $templateEngine?

Personal tools
Namespaces
Variants
Actions
Site
Support
Download
Development
Communication
Print/export
Toolbox