X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/939885d5563129b69d9019f11e931a65141f01f8..73c7c4ebf71ab7d2e91197250b5025a9b085098c:/doc/plugins/write.mdwn diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 508dd83dc..4fd102bfd 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -211,8 +211,8 @@ want to change the default ("page.tmpl"). Template files are looked for in Use this to implement html sanitization or anything else that needs to modify the body of a page after it has been fully converted to html. -The function is passed named parameters: "page" and "content", and -should return the sanitized content. +The function is passed named parameters: "page", "destpage", and "content", +and should return the sanitized content. ### format @@ -220,7 +220,9 @@ should return the sanitized content. The difference between format and sanitize is that sanitize only acts on the page body, while format can modify the entire html page including the -header and footer inserted by ikiwiki, the html document type, etc. +header and footer inserted by ikiwiki, the html document type, etc. (It +should not rely on always being passed the entire page, as it won't be +when the page is being previewed.) The function is passed named parameters: "page" and "content", and should return the formatted content. @@ -361,10 +363,11 @@ next time ikiwiki is run. The hash holds per-page state, so to set a value, use `%pagestate{$page}{$id}{$key}=$value`, and to retrieve the value, use `%pagestate{$page}{$id}{$key}`. -`$key` can be any string you like, but `$id` must be the same as the "id" -parameter passed to `hook()` when registering the plugin. This is so -ikiwiki can know when to delete pagestate for plugins that are no longer -used. +The `$value` can be anything that perl's Storable module is capable of +serializing. `$key` can be any string you like, but `$id` must be the same +as the "id" parameter passed to `hook()` when registering the plugin. This +is so ikiwiki can know when to delete pagestate for plugins that are no +longer used. When pages are deleted, ikiwiki automatically deletes their pagestate too. @@ -567,7 +570,9 @@ destination file, as registered by `will_render`. Passed a page and an extension, returns the filename that page will be rendered to. -## Internal use pages +## Miscellaneous + +### Internal use pages Sometimes it's useful to put pages in the wiki without the overhead of having them be rendered to individual html files. Such internal use pages @@ -580,7 +585,7 @@ either on them with extreme caution), and are not matched by regular PageSpecs glob patterns, but instead only by a special `internal()` [[ikiwiki/PageSpec]]. -## RCS plugins +### RCS plugins ikiwiki's support for [[revision_control_systems|rcs]] also uses pluggable perl modules. These are in the `IkiWiki::RCS` namespace, for example @@ -592,7 +597,7 @@ See IkiWiki::RCS::Stub for the full list of functions. It's ok if See [[RCS_details|rcs/details]] for some more info. -## PageSpec plugins +### PageSpec plugins It's also possible to write plugins that add new functions to [[PageSpecs|ikiwiki/PageSpec]]. Such a plugin should add a function to the @@ -602,3 +607,18 @@ two parameters: The name of the page being matched, and the thing to match against. It may also be passed additional, named parameters. It should return a IkiWiki::SuccessReason object if the match succeeds, or an IkiWiki::FailReason object if the match fails. + +### Setup plugins + +The ikiwiki setup file is loaded using a pluggable mechanism. If you +look at the top of [[ikiwiki.setup]], it starts with +'use IkiWiki::Setup::Standard', and the rest of the file is passed to +that module's import method. + +It's possible to write other modules in the `IkiWiki::Setup::` namespace that +can be used to configure ikiwiki in different ways. These modules should, +when imported, populate `$IkiWiki::Setup::raw_setup` with a reference +to a hash containing all the config items. + +By the way, to parse a ikiwiki setup file, a program just needs to +do something like `use IkiWiki::Setup; my %setup=IkiWiki::Setup::load($filename)`