Wikibase/Extending

= Extending Wikibase = Wikibase is a powerful and extensible piece of software, and a large amount of what it can do lies beyond the fairly stripped-down state Wikibase is in when you run your Docker images for the first time.

On this page you can take a quick, link-heavy tour of the resources available to help you extend your instance and give it the functionality you want and need it to have.

Templates
MediaWiki templates work a bit like text macros in that they contain content meant to be transcluded into other wiki pages. But their functionality can extend far beyond simple text replacement when scripting comes into play (see Lua below).

To view the templates installed on your (or any) instance, navigate to.

While there is no single repository for MediaWiki templates, Wikipedia does offer a robust template resource page. You can find them easily by searching the web or by looking through what’s installed on any given instance of MediaWiki. When you find a template you want to use, follow these instructions to start using it on your instance.

A few templates that Wikibase users often find useful:
 * SPARQL: SPARQL query syntax highlighting
 * Q: creates a direct link to an item
 * Property: displays a localized label for a property

You can also check out this helpful third-party overview of templates: ryadel.com

Lua
Templates can call modules written in the Lua scripting language, making them more powerful. Check out the tutorial and see the scripting language section below.

Extensions
MediaWiki’s robust software ecosystem offers a wide range of extensions, pieces of code that modify how your installation looks and works. Extensions come in many shapes and sizes, from simple and useful tweaks to large modifications in functionality; as you probably know, Wikibase is itself an extension to MediaWiki. You can browse and download many of these extensions with the MediaWiki ExtensionDistributor. These install instructions should cover most cases, but some extensions have special instructions called out separately below.

To view the extensions you currently have installed, navigate to.

Note that the following list doesn’t include extensions meant for importing data into Wikibase, several options for which are covered in some detail over at Importing data.

General utility

 * Advanced Search: expands the search form with many additional options
 * Visual Editor: offers an optional rich-text editor (see also the project page)

Scripting

 * Scribunto: enables the embedding of scripting languages into MediaWiki, currently only Lua. This enables, among other powerful applications for scripting, the use of Lua modules in templates (see above).
 * Lua tutorial for MW/Scribunto
 * Detailed references for Lua in MW/Scribunto, and the Wikibase-specific Lua API and JSON format
 * Differences from standard Lua

Content management and spam protection

 * Abuse Filter: create filters for editing to forestall abusive activity
 * Nuke: enable mass deletion of pages
 * Confirm Edit: add CAPTCHA checks before an edit is confirmed
 * Tor Block: restrict access for Tor exit nodes

Wikibase-specific

 * OAuth: implements OAuth, required for some tools to work correctly with Wikibase
 * CLDR: contains and manages locale-specific information regarding the display of data in different languages and formats
 * Universal Language Selector: allows users to configure an interface language of their choice
 * Property Suggester: adds useful auto-suggestion of properties for manual edits

Data quality and constraints
You can manage the quality of your Wikibase data by imposing constraints (which are actually more like guidelines).

Wikibase Quality Constraints (install) is a powerful extension that helps you impose constraints on your data.

See also the constraints portal which offers many constraints-oriented resources and tips on how to implement them effectively.

Last but not least
The Gadgets extension enables the use of gadgets (see below). You may well find that this extension is already installed on your instance, but make sure: it needs to be installed and enabled before implementing anything listed in the next section!

Gadgets
Gadgets are small interface modifications that each user of an instance can choose to activate or deactivate for their own use. Some examples can be found in the MediaWiki gadget list and Wikidata’s installed gadgets. Here’s a guide to writing your own, and here’s how to install a gadget.

Other additions
As if templates, extensions and gadgets weren’t enough, there are many other ways you can customize your Wikibase installation. Here are some of the most commonly used.

Interface messages
As an administrator (with editInterface permissions), you can customize the messages displayed to the user by Wikibase. A complete list of them can be found on the Special:AllMessages page of your instance:

Consult the System message documentation for more information.

Sitelinks
Sitelinks allow Wikibase’s MediaWiki interface to link to other wikis in a more useful way than a simple hyperlink. A good example is the language selector on Wikipedia pages; it relies on sitelinks established to wikis in other languages.

Although the Docker images handle most of the config changes shown in the Wikibase install documentation, sitelinks are a notable exception.

To get sitelinks working, first work through the sitelinks section of the install doc. Then consult the sites table for further guidance.

Sorted properties and statements
By default, Wikibase displays content from queries and on entity/item pages in the order in which each item was added to the database. To make a change in the display order, you’ll need to use a sorted properties list.

Learn more about it on the Sorted Properties page, and check out Wikidata’s own Sorted Properties for inspiration.

Pywikibot
For more advanced users who seek tools to help them manage their data, there’s Pywikibot. It started life as a tool made for Wikipedia but was adapted to work on other Wikimedia projects, including Wikibase installations. Pywikibot amounts to a collection of scripts that can change and manipulate data programmatically, potentially saving large amounts of manual work.

Check out the third-party wiki quick start for Pywikibot to see if it might be right for your installation.