Manual talk:Hooks/SkinTemplateOutputPageBeforeExec
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?