hook(type => "pagetemplate", id => "foo", call => \&pagetemplate);
-Each time a page (or part of a blog page, or an rss feed) is rendered, a
-[[template|templates]] is filled out. This hook allows modifying that
-template. The function is passed named parameters. The "page" and
-"destpage" parameters are the same as for a preprocess hook. The "template"
-parameter is a `HTML::Template` object that is the template that will be
-used to generate the page. The function can manipulate that template
-object.
+[[Templates]] are filled out for many different things in ikiwiki,
+like generating a page, or part of a blog page, or an rss feed, or a cgi.
+This hook allows modifying those templates. The function is passed named
+parameters. The "page" and "destpage" parameters are the same as for a
+preprocess hook. The "template" parameter is a `HTML::Template` object that
+is the template that will be used to generate the page. The function can
+manipulate that template object.
The most common thing to do is probably to call $template->param() to add
a new custom parameter to the template.
To import the ikiwiki plugin interface:
- use IkiWiki;
+ use IkiWiki '1.00';
This will import several variables and functions into your plugin's
namespace. These variables and functions are the ones most plugins need,
* `%links` lists the names of each page that a page links to, in an array
reference.
-* `%renderedfiles` contains the name of the file rendered by a page.
+* `%renderedfiles` lists names of the files rendered by a page, in an array
+ reference.
* `%pagesources` contains the name of the source file for a page.
+Also, the %IkiWiki::version variable contains the version number for the
+ikiwiki program.
+
### Library functions
#### `hook(@)`
Hook into ikiwiki's processing. See the discussion of hooks above.
+Note that in addition to the named parameters described above, a parameter
+named no_override is supported, If it's set to a true value, then this hook
+will not override any existing hook with the same id. This is useful if
+the id can be controled by the user.
+
#### `debug($)`
Logs a debugging message. These are supressed unless verbose mode is turned
If the destination directory doesn't exist, it will first be created.
+### `will_render($$)`
+
+Given a page name and a destination file name (not including the base
+destination directory), register that the page will result in that file
+being rendered. It's important to call this before writing to any file in
+the destination directory.
+
#### `pagetype($)`
Given the name of a source file, returns the type of page it is, if it's