Extension:StyleByHeaderTree

MediaWiki extensions manual
OOjs UI icon advanced.svg
StyleBySection
Release status: unmaintained
Implementation Page action
Description Wraps sections according to header hierarchy. Gives class and id to the wrapping divs according to section title.
Author(s) François Moreau
Latest version 1.1 (2008-10-22)
MediaWiki 1.8+
Database changes No
License GNU General Public License 2.0
Download
Check usage and version matrix.

The StyleByHeaderTree extension does two things to rendered XHTML pages:

  • it wraps each section according to the nesting hierarchy of their respective headers;
  • it may give a class and/or an id to each wrapping div, depending on the header's content and the set of rules defined for the plugin.

UsageEdit

This is useful for styling, javascripting and adding semantics. This allows for a richer presentation without additional intervention from the authors, as long as certain conventions exist regarding section headers. In our organization, we have used this primarily as a mean to bring stronger semantics to wiki pages, which was then used to produce XML content with further extensions.

The directives associating headers with classes and id are written in a YAML file. Each rule specifies what class and id will be given to the created wrappers' header matching a regular expression or an exact string.

Your Wiki's MediaWiki:Monobook.css may then be edited to give style to the containers according to their classes and id.

ExampleEdit

 

Example of rules file

extensions/headerTree/example.yml:

intro:
  is: Introduction
  attr:
    class: intro

question:
  match: ^Question [0-9]+$
  attr:
    id: question-[COUNTER]
    class: question

answer:
  is: Answer
  attr:
    class: answer

code-color:
  match: ^Code\s+(.*)$
  attr:
    class: code-$1

InstallationEdit

  • Download, extract and place the file(s) in a directory called headerTree in your extensions/ folder.
  • Add the following code at the bottom of your LocalSettings.php:
    require_once "$IP/extensions/headerTree/headerTree.php";
    $wgHooks['OutputPageBeforeHTML'][] = array(
        new HeaderTree(),
        'apply',
        //change this string according to your new rules file's path
        "$IP/extensions/headerTree/example.yml"
    );
    
  • Create a new .yml rules file fitting your needs.
  • Edit your wiki's MediaWiki:Monobook.css to use the new classes and id.
  •   Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.