Table of Contents
DokuWiki has a flexible plugin API which allows developers to extend its functionality, be it additional syntax modes, custom action modes, new export formats, and a lot more. Depending on the plugin's purpose, a plugin can either consist of one, or more, components of the following plugin types.
At the moment DokuWiki features seven different plugin types.
- Admin Plugins can provide administration functionality for DokuWiki - these plugins are accessible to superusers and managers via the Admin button.
- Helper Plugins can be used to provide functionality to many other plugins, so each plugin doesn't have to re-implement a certain function over and over again.
- Remote Plugins allow to add webservices to your plugin.
- Auth Plugins add additional authentication backend to the DokuWiki, which could be activated via configuration manager.
- CLI Plugins add command line tools to your plugin
A simple plugin like color plugin may only consist of a single file,
syntax.php. More advanced plugins consist of several components, for example the structured data plugin have the syntax handling split in “data entry” and “table view” components, an action component for the special edit button attached to every data entry and an admin interface for database maintenance.
There are a number of sources especially for plugin development:
- There are some common plugin functions, available in all plugins types. Adds localisation, configuration and interspection.
- These security guidelines give some deeper understanding of common issues and presents some protection measures.
- Some general plugin programming tips are available, mostly good practices and pointers to handsome tools in DokuWiki.
A valid plugin name:
- Should only contain the characters a-z and 0-9.
- Underscore is NOT allowed as:
- This is used to separate
- Using underscore will also give a popularity rating of zero.
- If the same name is used by two different plugins
- they are mutually excluding and inherently incompatible,
- furthermore only one of them can have a plugin homepage on dokuwiki.org.
A Wizard to create the basic skeleton for a DokuWiki plugin can be found at http://pluginwizard.dokuwiki.org/ and is recommended to be used for starting the development. Alternatively use the dev Plugin.
If you later need to extend your plugin refer to the plugin file structure on how files are arranged in a plugin.
Publishing a Plugin on dokuwiki.org
If you created a plugin, please share it with the community. Just create a page named after your plugin in the plugin namespace. E.g. if your pluginfolder is named
sample create a page
plugin:sample here in the wiki.
The page should contain all needed documentation on how to install and use the plugin and give users a pretty good idea what it does before installing the plugin. Adding screenshots might be a good idea as well1). The plugin homepage template contains more tips on how to make a user friendly page.
At the top of the plugin page a few metadata fields have to be filled. A description of each field can be found on Repository Plugin page.
From version Ponder Stibbons up an automated update signalling is possible. For the update process to work properly it is necessary that the date “Last updated on” at the Plugin wiki page equals the date in the file plugin.info.txt in the source tarball/zipfile. If this is not the case: the update will not take place or the “Update” signal persists.
Uploads are not allowed on dokuwiki.org, so you need to host your plugin files somewhere else. We recommend to manage your source with a Revision Control System like git. If you do, it's easiest to use a public repository host like GitHub, GitLab or Bitbucket which offers also a bug tracker for your repository.
Overview of Plugin Survey
Plugin Survey is a developers overview of all plugins present in the plugin namespace of www.dokuwiki.org. Data was collected by an automated script 2010-09-05 with some additional manual data download and mining. A total of 697 plugin pages containing 672 plugins was examined and source code for 647 plugins (96%) downloaded and parsed.