Die `template`-Anweisung wird durch die [[!iki plugins/template
desc=template]]-Erweiterung bereitgestellt.

Die `template`-Anweisung erlaubt es, Wiki-Seiten als Vorlagen zu verwenden.
Diese Vorlagen können mit dieser Anweisung in anderen Seiten verwendet und
ausgefüllt werden. Auf der [[Vorlagen|templates]]-Seite werden die Vorlagen
aufgelistet, die mit dieser Anweisung verwendet werden können.

Die Anweisung nutzt den Parameter `id`, um die zu verwendende Vorlage
auszuwählen. Die übrigen Parameter werden verwendet, um die Vorlage
auszufüllen.

## Beispiel

	\[[!template id=note text="""Hier ist der Text, der in meine Notiz eingefügt werden soll."""]]

Dies füllt die Vorlage `note` aus, wobei das Feld `text` mit dem angegebenen
Wert gefüllt wird, und fügt das Ergebnis in die Seite ein.

## Eine Vorlage verwenden

Ein Wert kann im allgemeinen alle Hervorhebungen enthalten, die auf der
Wiki-Seite außerhalb der Vorlage zulässig ist. Wenn der Wert in dreifache
Anführungszeichen gesetzt wird, dürfen sogar Anführungszeichen verwendet
werden.
In Kombination mit mehrzeiligen Werten können so größere Textabschnitte mit
Hervorhebungen in die Vorlage eingebettet werden:

        \[[!template id=foo name="Sally" color="grün" age=8 notes="""
        * \[[Charley]]s Schwester.
        * Wenn ich groß bin, möchte ich Astronaut werden.
        * Eigentlich 8 1/2.
        """]]

## Eine Vorlage anlegen

The template is in a regular wiki page, located in the `templates/`
subdirectory inside the source directory of the wiki.  The contents of the
[[templatebody]] directive are used as the template. Anything outside that
directive is not included in the template, and is usually used as
documentation describing the template.

If the template does not contain a [[templatebody]] directive, the entire
source of the page is used for the template. This is deprecated, because it
leads to the template markup being interpreted as ordinary page source when
the page is built, as well as being used as the template.

Alternatively, templates can be stored in a directory outside the wiki, as
files with the extension ".tmpl".  By default, these are searched for in
`/usr/share/ikiwiki/templates`, the `templatedir` setting can be used to
make another directory be searched first.  When referring to templates
outside the wiki source directory, the "id" parameter is not interpreted as
a pagespec, you must include the full filename of the template page
including the ".tmpl" extension, and the templatebody directive is not
used. E.g.:

    \[[!template id=blogpost.tmpl]]

Die Vorlage nutzt die Syntax des Perl-Moduls [[!cpan HTML::Template]], mit
der
sich recht komplexe Dinge realisieren lassen. Die vollständige Syntax ist in
der
Dokumentation des Perl-Moduls zu finden, aber es genügt ein paar wenige
Dinge zu
wissen:

* Jeder Parameter, welcher der Vorlage übergeben wird, erzeugt eine
  Vorlagenvariable. Es gibt auch einige vordefinierte Variable wie `PAGE`
  und
  `BASENAME`.
* Der Wert einer Variablen kann mit `<TMPL_VAR Variable>` eingefügt werden.
  Wiki-Hervorhebungen im Wert werden zuvor nach HTML umgewandelt.
* Der wörtliche Wert einer Variable kann mit `<TMPL_VAR raw_Variable>`
  eingefügt
  werden; dabei werden Wiki-Hervorhebungen nicht nach HTML umgewandelt.
* Mit `<TMPL_IF Variable>Block</TMPL_IF>` wird ein Block nur dann eingefügt,
  wenn
  eine Variable gesetzt ist.
* Mit `<TMPL_IF Variable>Block<TMPL_ELSE>anderer Block</TMPL_IF>` wird je
  nachdem
  ob eine Variable gesetzt ist ein Block oder ein anderer Block eingefügt.

Hier ist eine Beispiel-Vorlage:

        \[[!templatebody <<ENDBODY
        <span class="infobox">
        Name: \[[<TMPL_VAR raw_name>]]<br />
        Age: <TMPL_VAR age><br />
        <TMPL_IF color>
        Favorite color: <TMPL_VAR color><br />
        <TMPL_ELSE>
        No favorite color.<br />
        </TMPL_IF>
        <TMPL_IF notes>
        <hr />
        <TMPL_VAR notes>
        </TMPL_IF>
        </span>
        ENDBODY]]

	This template describes a person. Parameters: name, age,
	color (favorite color, optional), notes (optional).

Die ausgefüllte Vorlage wird auf die gleiche Weise formatiert wie die
Wiki-Seite, welche die Vorlage enthält. Es ist also möglich, in der Vorlage
WikiLinks und sonstige Wiki-Anweisungen zu verwenden. Solche WikiLinks
tauchen
allerdings nicht als Backlinks der Seite auf, welche die Vorlage verwendet.

Zu beachten ist die Verwendung von "raw_Name" im
[[ikiwiki/WikiLink]]-Generator
im Beispiel oben. Falls der Name etwas enthält, das für eine
Wiki-Hervorhebung
gehalten werden könnte, wird das nicht nach HTML umgewandelt, bevor es als
WikiLink verarbeitet wird.


[[!meta robots="noindex, follow"]]
