Jump to content

Extension:Genealogy

From mediawiki.org
MediaWiki extensions manual
Genealogy
Release status: stable
Implementation Parser function
Description Adds a parser function for easier linking between genealogical articles.
Author(s) Sam Wilson (samwilsontalk)
Latest version 2.4.0 (2023-03-09)
Compatibility policy Master maintains backward compatibility.
MediaWiki >= 1.39
Database changes No
Composer samwilson/mediawiki-extensions-genealogy
License GNU General Public License 3.0 or later
Download
README.md
Example Demo wiki on Toolforge
Quarterly downloads 8 (Ranked 125th)
Translate the Genealogy extension if it is available at translatewiki.net
Issues Open tasks · Report a bug

The Genealogy extension adds a parser function that makes it easy to link between genealogical articles. Basically, for any biographical article which links to other family members, the reverse link on those other articles can be created automatically.

You can experiment with it on Toolforge.

Installation

Note that you also need to install the Mermaid or Diagrams extension if you want to use the tree-drawing feature.

Install with Composer

The easiest way to install this extension is with Composer. Add this to your composer.local.json file:

{
  "require": {
    "samwilson/mediawiki-extensions-genealogy": "^2.0"
  }
}

Then run composer update.

After that, you can enable the extension by adding the following to your LocalSettings.php file:

wfLoadExtension( 'Genealogy' );

Normal installation method

  • Download and move the extracted Genealogy folder to your extensions/ directory.
    Developers and code contributors should install the extension from Git instead, using:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Genealogy
  • Add the following code at the bottom of your LocalSettings.php file:
    wfLoadExtension( 'Genealogy' );
    
  • Yes Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.

Usage

This extension creates one parser function: {{#genealogy: … }}. Its first first parameter is unnamed (i.e. doesn't have an equals sign) but all others are.

The following parameters are supported, three for defining data () and four for reporting data ():

  1. Define and output a link to a parent:
    {{#genealogy:parent|Page Name Here}}
  2. Define a partner (no output produced; use partners to list):
    {{#genealogy:partner|Page Name Here}}
  3. Define a page's description (see below for what that means):
    {{#genealogy:description|Some description}}
    A page's description is a date range or short phrase that will appear in places next to page titles to give them some more context. For example, under people's names in the tree output.
  4. List all siblings:
    {{#genealogy:siblings|exclude_self=yes}}
    Where exclude_self optionally excludes the current page from the resulting list.
  5. List all partners:
    {{#genealogy:partners}}
  6. List all children:
    {{#genealogy:children}}
  7. Display a tree (a connected graph):
    {{#genealogy:tree|ancestors=List|descendants=List|delimiter=char|format=formatname}}
    where each List is a delimiter-separated list of page titles, and formatname is 'graphviz' or 'mermaid' (not case sensitive). This requires the Mermaid , GraphViz , or Diagrams extension. The delimiter is a newline by default (i.e. each page title should appear on it's own line).

Templates

Example: For an example template that makes use of these parser functions, see person_template.wikitext.

Preload: When this extension creates a link to a page that doesn't yet exist, the text of [[Template:Person/preload]] is preloaded. The location of this preload text can be customised by modifying the genealogy-person-preload system message.

Person list-item: Three types of lists of people can be generated: siblings, partners, and children. The default behaviour is a simple bulleted list, but this can be overridden by a template, Template:Person/list-item (the template name is specified by the genealogy-person-list-item system message). For example, to get a comma-separated one-line list of people, the following template code could be used:

{{{link}}}{{#if: {{{description|}}} | ({{{description}}}) }}{{#ifeq:{{{index}}}|{{{count}}}|.|,}}

There are six parameters that are available for use in the list-item template:

  • link — A wikitext link.
  • title — The full page title, including namespace.
  • pagename — The page name, without namespace.
  • description — The page description.
  • index — The index of this list-item in the full list, starting from 1.
  • count — The total number of items in the full list.

Development

This extension was built by Sam Wilson and released under version 3 of the GPL (see LICENSE.txt for details).

Please report all bugs to the #Genealogy project on Phabricator.

See also