Skip to content

wikivisor/mediawiki-pages-DynamicMenu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mediawiki-pages-DynamicMenu

An installable collection of pages for easy menu insertion into Mediawiki sidebar.

Usage

Global menu

A multilevel collapsible menu (the first level is always expanded). Served via Mediawiki:Sitenotice using Template:Global menu.

Advantage: Appears on all pages.

Navigate to Mediawiki:Global-menu and plan your menu in format:

* [[RootPageName]]
** [[RootPageName/SubpageName1|SubpageName1]]
** [[RootPageName/SubpageName2|SubpageName2]]
*** [[RootPageName/SubpageName2/SubSub1|SubSub1]]
*** [[RootPageName/SubpageName2/SubSub2|SubSub2]]
** [[RootPageName/SubpageName3|SubpageName3]]
...

Category menu

A flat menu block with the title. Menu is shown if the current page belongs to the given category. Create a page Mediawiki:Sidebar/Category:NameOfYourCategory and plan your menu in format:

* MenuBlockTitle
** PageName1|LinkText1
** PageName2|LinkText2
** PageName3|LinkText3
...

For details refer to the extension documentation

Project menu

A multilevel collapsible menu.

"Project" means hierarchy of subpages derived from the root page. Menu is shown if there is a page in Menu: namespace matching the name of the root page of the current page / subpage. It means the menu will be shown on the root page and on all subpages.

Manual menu

Advantage: You can manage the order and level of pages.

Create a page in Menu: namespace matching the name of the root page of the current page / subpage and plan your menu in format:

* [[RootPageName]]
** [[RootPageName/SubpageName1|SubpageName1]]
** [[RootPageName/SubpageName2|SubpageName2]]
*** [[RootPageName/SubpageName2/SubSub1|SubSub1]]
*** [[RootPageName/SubpageName2/SubSub2|SubSub2]]
** [[RootPageName/SubpageName3|SubpageName3]]
...

Automatic menu

Advantage: Menu is auto updating as new subpages are added.

Create a page in Menu: namespace matching the name of the root page of the current page / subpage and put a call to the Template:Automenu:

{{automenu|1}}

where 1 is the level menu should be started at (for nested menus). For details refer to the extension documentation

Display title

To simplify the display title of the subpages, please, use Template:Subpage title, like this:

{{subpage title}}

Category tree

Using a category tree in the sidebar for site navigation is not recommended. We just provide a link to the Special:CategoryTree via Mediawiki:Sidebar. In the Category namespace the link is changing to View as a tree and takes visitors to a category tree built from the current category.

Other features

User and Group menus

The User- and the Group-specific menus are also available as a part of DynamicSidebar extension:

  • Group menus must be created under MediaWiki:Sidebar/Group:<group>.
  • Users are able to create their own custom sidebar blocks under User:<username>/Sidebar.

SemanticMediawiki

Not included. Needs additional development

Adding semantic annotations to pages will make it possible to generate hierarchical/nesting trees with logical sorting (eg. using SemanticResultFormats. etc), which can be injected into the infrastructure created: just replace manually created menus with the semantic query code.

Requirements

  • SemanticMediaWiki Provides Modification date
  • DynamicSidebar Provides CATEGORY-SIDEBAR
  • Gadgets Loads JS
  • PageNotice Provides Mediawiki:Bottom-notice-ns-0
  • ParserFunctions (with $wgPFEnableStringFunctions = true;)
  • SubpageFun Provides useful magic words (incl. TOPLEVELPAGE)
  • SubPageList Provides a parser function for menu content auto creation
  • TreeAndMenu Provides expandable multilevel menus
  • UserFunctions Provides {{#ifsysop: ... }}
  • PageExchange for importing content

The package is designed to work with the Vector sidebar. The work with other skins featuring a sidebar may require ajustments to the package CSS, JS and/or HTML.

Setup

Create a custom namespace

We'll store TreeAndMenu menus in a custom namespace. A menu for the page SomePage will be stored as Menu:SomePage.

Add this to LocalSettings.php:

define("NS_MENU", 3000); // This MUST be even.
define("NS_MENU_TALK", 3001); // This MUST be the following odd integer.

$wgExtraNamespaces[NS_MENU] = "Menu";
$wgExtraNamespaces[NS_MENU_TALK] = "Menu_talk";
$wgNamespacesWithSubpages[NS_MENU] = true;
$smwgNamespacesWithSemanticLinks[NS_MENU] = true;

Install and configure required extensions

Composer

Run from Mediawiki install directory:

COMPOSER=composer.local.json composer require --no-update mediawiki/semantic-media-wiki
COMPOSER=composer.local.json composer require --no-update mediawiki/sub-page-list
composer update --no-dev -o

Then enable SMW in LocalSettings.php:

enableSemantics( 'parasol' ); #SemanticMediawiki

Running update.php is required:

php maintenance/update.php --quick

Git

Clone repos into extensions directory and enable the extensions in LocalSettings.php:

wfLoadExtension( 'DynamicSidebar' );
wfLoadExtension( 'Gadgets' );
wfLoadExtension( 'PageExchange' );
wfLoadExtension( 'PageNotice' );
wfLoadExtension( 'ParserFunctions' );
wfLoadExtension( 'SubpageFun' );
wfLoadExtension( 'SubPageList' );
wfLoadExtension( 'TreeAndMenu' );
wfLoadExtension( 'UserFunctions' );

Variables

Set in LocalSettings.php:

$wgAllowSiteCSSOnRestrictedPages = true;
$wgRestrictDisplayTitle = false;
$wgNamespacesWithSubpages[NS_MAIN] = true;
$wgDynamicSidebarUsePageCategories = true;
$wgUFAllowedNamespaces = array_fill( 0, 4000, true );
$wgPFEnableStringFunctions = true;
$wgEnableSidebarCache = false;
$GLOBALS['egSPLAutorefresh'] = true;

Optional

Optionally install and enable:

wfLoadExtension( 'VisualEditor' );

Import the package

PageExchange

  • add the following to the bottom of your LocalSettings.php:
$wgPageExchangePackageFiles[] = 'https://raw.githubusercontent.com/wikivisor/mediawiki-pages-DynamicMenu/master/page-exchange.json';
  • navigate to Special:Packages and install the package
  • (optional) from the wiki root, run php maintenance/runJobs.php

Apply styles

Import styles by adding the following into MediaWiki:Vector.css:

@import url("/w/index.php?action=raw&ctype=text/css&title=MediaWiki:DynamicMenu.css");

Note: Adjust the URL according to your paths/rewrite rules.

About

A pack of pages for easy sidebar menu insertion.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published