ftemplate: field-aware structured template plugin

master
http://kerravonsen.dreamwidth.org/ 2010-01-13 02:36:28 +00:00 committed by Joey Hess
parent ccc8e88682
commit 7d997f1007
1 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,94 @@
[[!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:
[[!meta title="I Am Page A"]]
[[!meta description="A is for Apple."]]
[[!meta author="Fred Nurk"]]
[[!ftemplate id="mytemplate"]]
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:
[[!meta title="I Am Page B"]]
[[!meta description="B is for Banana."]]
[[!meta author="Fred Nurk"]]
[[!ftemplate id="mytemplate" title="Bananananananas"]]
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