Merge branch 'ready/templatebody'
[ikiwiki.git] / doc / ikiwiki / directive / edittemplate.mdwn
1 The `edittemplate` directive is supplied by the [[!iki plugins/edittemplate desc=edittemplate]] plugin.
2
3 This directive allows registering template pages, that provide default
4 content for new pages created using the web frontend. To register a
5 template, insert an [[ikiwiki/directive/edittemplate]] directive on some other
6 page.
7
8         \[[!edittemplate template="bugtemplate" match="bugs/*"]]
9  
10 A recommended place to put the directive is on the parent page
11 of the pages that will be created using the template. So the above
12 example would be put on the bugs page. (Do not put the directive on the
13 template page itself.)
14
15 In the above example, the page named "bugtemplate" is registered as a
16 template to be used when any page named "bugs/*" is created. To avoid
17 the directive displaying a note about the template being registered, add
18 "silent=yes".
19
20 Often the template page contains a simple skeleton for a particular type of
21 page, wrapped in a [[templatebody]] directive. For the bug report pages in
22 the above example, it might look something like:
23
24         \[[!templatebody <<ENDBODY
25         Package: 
26         Version: 
27         Reproducible: y/n
28         Details:
29         ENDBODY]]
30
31 The template page can also contain [[!cpan HTML::Template]] directives,
32 like other ikiwiki [[templates]].
33
34 These variables might be set:
35
36 * `<TMPL_VAR name>` is replaced with the name of the page being
37   created.
38   
39 * `<TMPL_VAR uuid>` is replaced with a version 4 (random) UUID
40   suitable for use in `\[[!meta guid="urn:uuid:<TMPL_VAR uuid>"]]`.
41   (Requires the `UUID::Tiny` Perl module if not running on Linux.)
42
43 * `<TMPL_VAR time>` is replaced with the current (template generation)
44   time using a fixed format (RFC 3339, `%Y-%m-%dT%H:%M:%SZ`),
45   suitable for use in `\[[!meta date="<TMPL_VAR time>"]]`
46   (see [[meta]]) or `\[[!date "<TMPL_VAR time>"]]` (see [[date]]).
47
48 Text outside the [[templatebody]] directive is not part of the template,
49 and can be used to document it.
50
51 If the template does not contain a [[templatebody]] directive, the entire
52 source of the page is used for the template. This is deprecated.
53
54 [[!meta robots="noindex, follow"]]