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

Die Vorlage ist eine normale Wiki-Seite, die um Unterverzeichnis
`templates/` des Quellverzeichnisses des Wikis liegt. Der Inhalt der
[[templatebody]]-Anweisung wird als Vorlage verwendet. Alles außerhalb
dieser Anweisung ist nicht Teil der Vorlage und wird üblicherweise zu deren
Dokumentation genutzt.

Wenn die Vorlagenseite keine [[templatebody]]-Anweisung enthält, wird die
komplette Seite als Vorlage verwendet. Dies ist überholt, da es dazu führt,
dass der Vorlagen-Inhalt zusätzlich als normale Seite interpretiert wird,
während die Seite erzeugt wird.

Alternativ können Vorlagen außerhalb des Wikis gespeichert werden, als
Dateien
mit der der Erweiterung ".tmpl". Nach diesen wird standardmäßig unter
`/usr/share/ikiwiki/templates` gesucht, wobei mit der Einstellung
`templatedir`
ein zuvor zu durchsuchendes Verzeichnis angegeben werden kann. Wenn eine
Vorlage
außerhalb des Wiki-Quellverzeichnisses angegeben wird, wird der Parameter
`id`
nicht als pagespec interpretiert, sodass der vollständige Dateiname der
Vorlagenseite inklusive der Endung ".tmpl" angegeben werden muss. Außerdem
wird
in diesem Fall die templatebody-Anweisung nicht verwendet. Zum Beispiel:

    \[[!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 />
        Alter: <TMPL_VAR alter><br />
        <TMPL_IF color>
        Lieblingsfarbe: <TMPL_VAR farbe><br />
        <TMPL_ELSE>
        Keine Lieblingsfarbr.<br />
        </TMPL_IF>
        <TMPL_IF hinweise>
        <hr />
        <TMPL_VAR hinweise>
        </TMPL_IF>
        </span>
        ENDBODY]]

	Diese Vorlage beschreibt eine Person. Parameter: name, alter,
	farbe (Lieblingsfarbe, optional), hinweise (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"]]
