Beyond PreProcessorDirectives, Other types of hooks that can be used by
plugins include:
+## getopt
+
+ IkiWiki::hook(type => "getopt", id => "foo", call => \&getopt);
+
+This allows for plugins to perform their own processing of command-line
+options and so add options to the ikiwiki command line. It's called during
+command line processing, with @ARGV full of any options that ikiwiki was
+not able to process on its own. The function should process any options it
+can, removing them from @ARGV, and probably recording the configuration
+settings in %IkiWiki::config. It should take care not to abort if it sees
+an option it cannot process, and should just skip over those options and
+leave them in @ARGV.
+
## checkconfig
IkiWiki::hook(type => "checkconfig", id => "foo", call => \&checkconfig);
-This is useful if the plugin needs to check for, or modify ikiwiki's
-configuration. It's called early in the ikiwiki startup process. The
+This is useful if the plugin needs to check for or modify ikiwiki's
+configuration. It's called early in the startup process. The
function is passed no values. It's ok for the function to call
IkiWiki::error if something isn't configured right.
IkiWiki::hook(type => "pagetemplate", id => "foo", call => \&pagetemplate);
-Each time a page 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.
+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.
The most common thing to do is probably to call $template->param() to add
a new custom parameter to the template. Note that in order to be robust,
# A note on generating html links
Many plugins need to generate html links and add them to a page. This is
-done by using the htmllink() function in ikiwiki. The usual way to call
-htmlllink is: `htmllink($page, $page, $link)`
+done by using the `IkiWiki::htmllink` function. The usual way to call
+htmlllink is:
+
+ htmllink($page, $page, $link)
Why is $page repeated? Because if a page is inlined inside another, and a
link is placed on it, the right way to make that link is actually:
-`htmllink($page, $destpage, $link)`
+
+ htmllink($page, $destpage, $link)
Here $destpage is the inlining page. A destpage parameter is passed to some
of the hook functions above; the ones that are not passed it are not used