Dokuwiki supports scaffolding. Sometimes you might want to have every page in a certain namespace based on a common skeleton. For example, in the address
namespace you could have an already prepared table, which only needs to be filled with data. This can be easily achieved with so called “namespace templates”.
When a page is created, DokuWiki looks up whether a template file exists and it shows it within the editor window. The templates therefore are .txt files and should contain wiki markup.
Two kinds of template files can be used:
_template.txt
, which will be used in the current namespace (but not below).__template.txt
(note the two leading underscores), will cover the current namespace and all namespaces below as well (thus this kind of template will be inherited).
If both (normal and inherited) templates are present in the same namespace, the normal _template.txt
will take precedence when a new page is created. This allows the pages of the top namespace to be differentiated from all pages of any sub-namespaces inherited below, which could become quite handy.
NOTE: Any changes to a.m. template files will only effect newly created pages and existing pages are always left untouched.
One way to create the template file is to:
However, one should prefer the TemplatePagename Plugin if possible (see explanations below).
The content of the file is just standard wiki markup.
Inside of the file, you may also use some replacement patterns to make the template a little more dynamic.
@ID@ | full ID of the page |
---|---|
@NS@ | namespace of the page |
@CURNS@ | last part of the namespace of the page |
@!CURNS@ | same as above but with the first character uppercased |
@!!CURNS@ | same as above but with the first character of all words uppercased |
@!CURNS!@ | same as above but with all characters uppercased |
@PAGE@ | page name (ID without namespace and underscores replaced by spaces) |
@!PAGE@ | same as above but with the first character uppercased |
@!!PAGE@ | same as above but with the first character of all words uppercased |
@!PAGE!@ | same as above but with all characters uppercased |
@FILE@ | page name (ID without namespace, underscores kept as is) |
@!FILE@ | same as above but with the first character uppercased |
@!FILE!@ | same as above but with all characters uppercased |
@USER@ | ID of user who is creating the page |
@NAME@ | name of user who is creating the page |
@MAIL@ | mail address of user who is creating the page |
@DATE@ | date and time when edit session started |
%a %d-%m-%y etc. | e.g. Thu 06-12-12. strftime placeholders are replaced by page creation time |
%% | a literal % character appears in your template |
You can't edit the _template.txt
through DokuWiki (only someone who can edit the files inside the filesystem folders (usually an administrator using FTP or WebDAV) can modify these files). There are three ways to accomplish this, though:
_template
and __template
into another name. E.g. c_template
and i_template
. These files are considered normal editable wikipages because they don't start with an underscore.NOTE: This section contains instructions for use on a Linux server and will not work on a Windows system.
This way, you can store your templates in a special namespace, and make symlinks for DokuWiki to find them. You can also choose to make a specific template non-editable by removing its particular symlink.
Another way is to create symlinks in the folder itself. Thus you create a template.txt
which is a symbolic link to the _template.txt
, in it's own namespace.
cd /var/www/html/dokuwiki/data/pages/namespace/something ln -s _template.txt template.txt
For these softlinks to work, you might need the FollowSymLinks option set for this directory in your webserver's configuration.
NOTE: This section contains instructions for use on a Windows server and will not work on a Linux system.
Open up command prompt (cmd.exe) on the server, and browse to the location you with there to be a template. Use the MKLINK command to create a symbolic link.
cd c:\inetpub\wiki\data\pages\namespace\something mklink template.txt _template.txt
Additional template features are implemented by plugins.
_template
and __template
in your choice via configuration manager. Has as defaults respectively c_template
and i_template
. This plugin will let you choose normal wiki pages as template so that they are editable via the wiki interface.~yourpagename.txt
for the page named yourpagename
in the current namespace ~yournamespace.txt
for all pages in the subnamespace named yournamespace
start
pages.All these plugins are only editable via the file system.
snippets
.
Problem: An unexpected error occurs “no timestamp” when server (Linux Ubuntu) cannot write the directory /dokuwiki/data/pages/namespace
. This might happen, when the namespace directory is created by the admin as <root>
in order to put the namespace template file in /dokuwiki/data/pages/namespace/
, before creating the first page.
1. Solution: Before establishing the hidden template file, first create a dummy page via the DokuWiki GUI, like so: yourserver/doku.php?id=namespace:dummy&do=edit
. This allows DokuWiki to create the namespace directory under own control and assures full write permissions for DokuWiki on the created directory.
2. Solution: The admin <root>
should be able to change owner and group settings through the chown command (e.g., chown www-data:www-data /dokuwiki/data/pages/namespace/
on CLI) and in the first place should establish new directories and files with owner:group
settings applicable to the DokuWiki installation anyway.