The `template` directive is supplied by the [[!iki plugins/template desc=template]] plugin.
-[[Templates]] are files that can be filled out and inserted into pages in the
-wiki, by using the template directive. The directive has an `id` parameter
+The template directive allows wiki pages to be used as templates.
+These templates can be filled out and inserted into other pages in the
+wiki using the directive. The [[templates]] page lists templates
+that can be used with this directive.
+
+The directive has an `id` parameter
that identifies the template to use. The remaining parameters are used to
fill out the template.
The template is a regular wiki page, located in the `templates/`
subdirectory inside the source directory of the wiki.
-(Alternatively, templates can be stored in a directory outside the wiki,
+Alternatively, templates can be stored in a directory outside the wiki,
as files with the extension ".tmpl".
-By default, these are searched for in `/usr/share/ikiwiki/templates`;
+By default, these are searched for in `/usr/share/ikiwiki/templates`,
the `templatedir` setting can be used to make another directory be searched
-first.)
+first. When referring to templates outside the wiki source directory, the "id"
+parameter is not interpreted as a pagespec, and you must include the full filename
+of the template page, including the ".tmpl" extension. E.g.:
+
+ \[[!template id=blogpost.tmpl]]
The template uses the syntax used by the [[!cpan HTML::Template]] perl
module, which allows for some fairly complex things to be done. Consult its
* To insert the raw value of a variable, with wiki markup not yet converted
to html, use `<TMPL_VAR raw_variable>`.
* To make a block of text conditional on a variable being set use
- `<TMPL_IF NAME="variable">text</TMPL_IF>`.
+ `<TMPL_IF variable>text</TMPL_IF>`.
* To use one block of text if a variable is set and a second if it's not,
- use `<TMPL_IF NAME="variable">text<TMPL_ELSE>other text</TMPL_IF>`
+ use `<TMPL_IF variable>text<TMPL_ELSE>other text</TMPL_IF>`
Here's a sample template:
<span class="infobox">
Name: \[[<TMPL_VAR raw_name>]]<br />
Age: <TMPL_VAR age><br />
- <TMPL_IF NAME="color">
+ <TMPL_IF color>
Favorite color: <TMPL_VAR color><br />
<TMPL_ELSE>
No favorite color.<br />
</TMPL_IF>
- <TMPL_IF NAME="notes">
+ <TMPL_IF notes>
<hr />
<TMPL_VAR notes>
</TMPL_IF>