]> scripts.mit.edu Git - www/ikiwiki.git/blobdiff - doc/plugins/write.mdwn
web commit by joey
[www/ikiwiki.git] / doc / plugins / write.mdwn
index f9395eb5ea330805c047187ed72dc598585cd09b..04803f7778c9feb973203fb7838eeaf5aa1c672f 100644 (file)
@@ -22,29 +22,54 @@ ikiwiki's processing. The function uses named parameters, and use varies dependi
 
 ## Writing a [[PreProcessorDirective]]
 
+This is probably the most common use of a plugin.
+
         IkiWiki::hook(type => "preprocess", id => "foo", call => \&preprocess);
 
 Replace "foo" with the command name that will be used inside brackers for the preprocessor directive.
 
-Each time the directive is processed, the referenced subroutine (`preprocess` in the example above) is called, and is passed named parameters. A
+Each time the directive is processed, the referenced function (`preprocess` in the example above) is called, and is passed named parameters. A
 "page" parameter gives the name of the page that embedded the preprocessor directive. All parameters included in the directive are included
-as named parameters as well. Whatever the subroutine returns goes onto the
+as named parameters as well. Whatever the function returns goes onto the
 page in place of the directive.
 
-## Error handing in plugins
+### Error handing
 
 While a plugin can call ikiwiki's error routine for a fatal error, for
 errors that aren't intended to halt the entire wiki build, including bad
 parameters passed to a [[PreProcessorDirective]], etc, it's better to just
 return the error message as the output of the plugin.
 
-## Html issues
+### Html issues
 
 Note that if [[HTMLSanitization]] is enabled, html in 
 [[PreProcessorDirective]] output is sanitised, which may limit what your
 plugin can do. Also, the rest of the page content is not in html format at
 preprocessor time. Text output by a preprocessor directive will be passed through markdown along with the rest of the page.
 
+## Other types of hooks
+
+Beyond PreProcessorDirectives, Other types of hooks that can be used by plugins include:
+
+### checkconfig
+
+        IkiWiki::hook(type => "delete", 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. It's ok for
+the function to call IkiWiki::error if something isn't configured right.
+
+### delete
+
+        IkiWiki::hook(type => "delete", id => "foo", call => \&dele);
+
+Each time a page or pages is removed from the wiki, the referenced function is called, and passed the names of the source files that were removed.
+
+### render
+
+        IkiWiki::hook(type => "render", id => "foo", call => \&render);
+
+Each time ikiwiki renders a change or addition (but not deletion) of a page to the wiki, the referenced function is called, and passed the name of the source file that was rendered.
+
 ## Wiki configuration
 
 A plugin can access the wiki's configuration via the `%IkiWiki::config` hash.