2010-01-13 03:36:28 +01:00
|
|
|
[[!template id=plugin name=ftemplate author="[[rubykat]]"]]
|
|
|
|
[[!tag type/meta type/format]]
|
|
|
|
[[!toc]]
|
|
|
|
## NAME
|
|
|
|
|
|
|
|
IkiWiki::Plugin::ftemplate - field-aware structured template plugin
|
|
|
|
|
|
|
|
## SYNOPSIS
|
|
|
|
|
|
|
|
# activate the plugin
|
|
|
|
add_plugins => [qw{goodstuff ftemplate ....}],
|
|
|
|
|
|
|
|
## DESCRIPTION
|
|
|
|
|
|
|
|
This plugin provides the **ftemplate** directive. This is like
|
|
|
|
the [[ikiwiki/directive/template]] directive, with the addition that one does not
|
|
|
|
have to provide all the values in the call to the template,
|
|
|
|
because ftemplate can query structured data ("fields") using
|
|
|
|
the [[field]] plugin.
|
|
|
|
|
|
|
|
Templates are files that can be filled out and inserted into pages in
|
|
|
|
the wiki, by using the ftemplate directive. The directive has an id
|
|
|
|
parameter that identifies the template to use.
|
|
|
|
|
|
|
|
Additional parameters can be used to fill out the template, in
|
|
|
|
addition to the "field" values. Passed-in values override the
|
|
|
|
"field" values.
|
|
|
|
|
|
|
|
There are two places where template files can live. One is, as with the
|
|
|
|
[[plugins/template]] plugin, in the /templates directory on the wiki. These
|
|
|
|
templates are wiki pages, and can be edited from the web like other wiki
|
|
|
|
pages.
|
|
|
|
|
|
|
|
The second place where template files can live is in the global
|
|
|
|
templates directory (the same place where the page.tmpl template lives).
|
|
|
|
This is a useful place to put template files if you want to prevent
|
|
|
|
them being edited from the web, and you don't want to have to make
|
|
|
|
them work as wiki pages.
|
|
|
|
|
|
|
|
### EXAMPLES
|
|
|
|
|
|
|
|
#### Example 1
|
|
|
|
|
|
|
|
PageA:
|
|
|
|
|
2010-01-13 03:37:27 +01:00
|
|
|
\[[!meta title="I Am Page A"]]
|
|
|
|
\[[!meta description="A is for Apple."]]
|
|
|
|
\[[!meta author="Fred Nurk"]]
|
|
|
|
\[[!ftemplate id="mytemplate"]]
|
2010-01-13 03:36:28 +01:00
|
|
|
|
|
|
|
Template "mytemplate":
|
|
|
|
|
|
|
|
# <TMPL_VAR NAME="TITLE">
|
|
|
|
by <TMPL_VAR NAME="AUTHOR">
|
|
|
|
|
|
|
|
**Summary:** <TMPL_VAR NAME="DESCRIPTION">
|
|
|
|
|
|
|
|
This will give:
|
|
|
|
|
|
|
|
<h1>I Am Page A</h1>
|
|
|
|
<p>by Fred Nurk</p>
|
|
|
|
<p><strong>Summary:</strong> A is for Apple.
|
|
|
|
|
|
|
|
#### Example 2: Overriding values
|
|
|
|
|
|
|
|
PageB:
|
|
|
|
|
2010-01-13 03:37:27 +01:00
|
|
|
\[[!meta title="I Am Page B"]]
|
|
|
|
\[[!meta description="B is for Banana."]]
|
|
|
|
\[[!meta author="Fred Nurk"]]
|
|
|
|
\[[!ftemplate id="mytemplate" title="Bananananananas"]]
|
2010-01-13 03:36:28 +01:00
|
|
|
|
|
|
|
This will give:
|
|
|
|
|
|
|
|
<h1>Bananananananas</h1>
|
|
|
|
<p>by Fred Nurk</p>
|
|
|
|
<p><strong>Summary:</strong> B is for Banana.
|
|
|
|
|
|
|
|
### LIMITATIONS
|
|
|
|
|
|
|
|
One cannot query the values of fields on pages other than the current
|
|
|
|
page.
|
|
|
|
|
|
|
|
## PREREQUISITES
|
|
|
|
|
|
|
|
IkiWiki
|
|
|
|
IkiWiki::Plugin::field
|
|
|
|
HTML::Template
|
|
|
|
Encode
|
|
|
|
|
|
|
|
## DOWNLOAD
|
|
|
|
|
|
|
|
* browse at GitHub: <http://github.com/rubykat/ikiplugins/blob/master/IkiWiki/Plugin/ftemplate.pm>
|
|
|
|
* git repo at git://github.com/rubykat/ikiplugins.git
|