Manual:Hooks/SkinTemplateNavigation::Universal

SkinTemplateNavigation::Universal
Available from version 1.18.0 (r79358, codereview)
Called on both content and special pages after variants have been added
Define function:
public static function onSkinTemplateNavigation_Universal( SkinTemplate $skinTemplate, array &$links ) { ... }
Attach hook: In extension.json:
{
	"Hooks": {
		"SkinTemplateNavigation::Universal": "MediaWiki\\Extension\\MyExtension\\Hooks::onSkinTemplateNavigationUniversal"
	}
}
Called from: File(s): SkinTemplate.php
Interface: SkinTemplateNavigation__UniversalHook.php

For more information about attaching hooks, see Manual:Hooks .
For examples of extensions using this hook, see Category:SkinTemplateNavigation::Universal extensions.


Details edit

  • $skinTemplate: SkinTemplate object
  • &$links: Structured array of navigation links

In 1.36 and 1.37 this hook was modified to allow modifications to the personal urls menu that traditionally would be modified by Manual:Hooks/PersonalUrls. If you are modifying the personal menus and support is needed for < 1.36, you will need to use PersonalUrls hook.

Examples edit

Add a link to a menu edit

$wgHooks['SkinTemplateNavigation::Universal'][] = function ( $skinTemplate, &$links ) {
	// add a new namespace tab
	$links['namespaces']['my_namespace'] = [
		'class' => '',
		'href' => '#/SkinTemplateNavigationLocalSettings.php',
		'text' => 'SkinTemplateNavigationTab',
	];

	// add a new action
	$links['actions']['my_action'] = [
		'class' => '',
		'href' => '#/SkinTemplateNavigationLocalSettings.php',
		'text' => 'SkinTemplateNavigation action',
	];

	// add a new view
	$links['views']['my_view'] = [
		'class' => '',
		'href' => '#/SkinTemplateNavigationLocalSettings.php',
		'text' => 'SkinTemplateNavigation view',
	];
};

Disable create account/login links on a fishbowl wiki edit

$wgHooks['SkinTemplateNavigation::Universal'][] = function ( $skinTemplate, &$links ) {
  unset( $links['user-menu']['createaccount'] );
  unset( $links['user-menu']['login'] );
  unset( $links['user-menu']['login-private'] );
  unset( $links['user-menu']['anoncontribs'] );
};

See also edit