Help:Templates/de

Wenn du Standardtexte hast, die du auf verschiedenen Seiten einbinden möchtest, kommt die Funktionalität von einem Template bei MediaWiki ins Spiel. Anders als Erweiterungen und Mediendateien gibt es keine zentrale Quelle für Templates. Templates können neu geschrieben oder, um doppelte Arbeit zu sparen, von einem anderen Wiki wie z.B. Wikipedia exportiert und dann im Zielwiki importiert werden.

Erstellen
Templates sind Standard-Wiki-Seiten, deren Inhalt so konzipiert ist, dass er in andere Seiten transkludiert (eingebunden) werden kann. Templates folgen einer Konvention, laut welcher dem Namen das Präfix " " vorangestellt wird, um sie diesem Namensraum zuzuweisen; abgesehen davon können sie wie jede andere Wiki-Seite erstellt werden.

Die einfachste Verwendung von Templates sieht folgendermaßen aus. Wenn du eine Seite mit dem Namen "Template:Welcome" erstellst, mit dem folgenden Inhalt:

Hallo! Willkommen in diesem Wiki.

hat man bereits die erste Vorlage erstellt! Wenn man nun den Code

in irgendeiner anderen Seite einfügt, wird auf dieser Seite der Text "Hallo! Willkommen in diesem Wiki." anstatt  erscheinen. Der Vorlageninhalt wurde somit in die andere Seite übernommen, d.h., er wird in diese Seite integriert.

Man kann nun  an einem beliebigen Punkt auf jeder Seite, wo man jemanden begrüßen möchte, einfügen. Nehmen wir an, die Vorlage wird auf 100 Seiten verwendet. Wenn man dann den Vorlageninhalt ändert zu:

Hallo! Willkommen in diesem wundervollen Wiki.

und eine der 100 Seiten, in der die Vorlage verwendet wurde, erneut besucht, wird man den neuen Text anstelle des ursprünglichen sehen. Auf diese Weise kann man die Inhalte von 100 Seiten ändern, ohne diese bearbeitet zu haben - und das nur, weil die Vorlage in diese Seiten eingebunden ist.

Dies ist die grundsätzliche Funktionsweise. Es gibt viele zusätzliche Funktionen, die diese Funktionsweise erweitern und die Verwendung von Vorlagen sehr nützlich machen.

Verwendung
Templates können in anderen Seiten auf diese Weise verwendet werden:


 * – wie oben beschrieben wird der Link automatisch durch den Inhalt von "Template:Name" zu dem Zeitpunkt ersetzt, an dem die Seite mit dem Template-Link aufgerufen wird. Der Link bleibt im Quellcode der Seite unverändert.
 * — wenn man diesen Template-Link verwendet, wird er ab dem Zeitpunkt, an dem die Seite mit dem Link gespeichert wird, endgültig durch den Inhalt von Template:Name ersetzt: eine Kopie des Inhalts von Template:Name wird durch den Template-Link ersetzt. Der Inhalt ist dann ein Teil der einschließenden Seite und kann normal, getrennt vom Original, bearbeitet werden. Hinweis: Spätere Änderungen am Ursprung der Template-Seite werden nicht auf die Seite mit dem Template-Link übertragen.
 * — dies wurde eingeführt, um das Ersetzen zu ermöglichen, ohne die Transklusion zu unterbrechen, siehe w:en:Help:Substitution.
 * wenn die Datei, die diese Anweisung enthält, aufgerufen wird, wird die Vorlage so eingefügt, dass ihr Inhalt als rohe Wikisyntax angezeigt wird, genauso, wie es tut.

Jede Wikiseite kann als Vorlage verwendet werden, einfach indem man den Namensbereich angibt, dem sie zugehört.


 * bindet  ein.
 * bindet  ein
 * schließt  ein
 * ersetzt sich selbst mit dem Inhalt von

Wenn kein solcher Namensbereich vorhanden ist, wird der vollständige Name als Vorlagenname angenommen.


 * bindet  ein

Parameter
Um die Funktionalität von Templates zu erweitern erlaubt es MediaWiki, Parameter an die Vorlage zu übergeben, wenn sie eingebunden wird. Parameter ermöglichen es dem Template, unterschiedliche Inhalte zu erzeugen oder sich unterschiedlich zu verhalten.

Angenommen, du möchtest auf der Talk-Seite anderer Benutzer ein kleines Dankeschön einfügen, wie z. B.:

Die Dankesnote wird einen Grund (in diesem Fall, für all deine Bemühungen) und eine Unterschrift (Ich) enthalten. Dein Ziel ist es, dass jeder Benutzer jedem anderen Benutzer danken kann, aus einem beliebigen Grund.

Damit die Notiz überall, wo sie verwendet wird, ähnlich aussieht, kann beispielsweise eine Vorlage namens definiert werden. Obwohl die Notiz überall, wo sie verwendet wird, ähnlich aussehen soll, wenn ein User einem anderen dankt, wird der genaue Inhalt (d.h. der Grund un die Signatur) unterschiedlich sein. Aus diesem Grund sollten diese als Parameter übergeben werden. Wenn wir die verbleibenden Elemente zur Formatierung der Box und zum Platzieren des Bildes ignorieren, lautet der Kerninhalt der Vorlage wie folgt:

Die Verwendung von  und   muss beachtet werden. Auf diese Weise können innerhalb von Vorlagen die Parameter identifiziert werden, die bei der Verwendung der Vorlage angegeben werden. Beachten Sie, dass jeder Parameter der Vorlage von drei Klammern umgeben ist:. Dies unterscheidet sich von der normalen Verwendung des Namens der Vorlage.

Bei der Verwendung einer Vorlage auf einer Seite werden die Parameterwerte durch ein "Pipe"-Zeichen getrennt. MediaWiki erlaubt Parameter auf drei Arten an Vorlagen zu übergeben: Anonym, nummeriert und benannt.

Anonyme Parameter
Um anonyme Parameter zu übergeben, müssen die Werte der Parameter der Reihe nach aufgelistet werden:

In diesem Fall erhält die Vorlage  die Parameter   und , was folgendes erzeugt:

Die Reihenfolge, in der anonyme Parameter übergeben werden, ist entscheidend für ihr Verhalten. Das Tauschen der Parameter wie folgendend:

würde dieses Ergebnis erzeugen:

Nummerierte Parameter
Um Parameter nummeriert zu übergeben, werden alle Parameter beim Übergeben identifiziert:

Dieses Mal erhält die Vorlage  die Parameter   und , was folgendes erzeugt, obwohl die Parameter in umgekehrter Reihenfolge übergeben wurden:

erzeugt
 * Beispiele:

Benannte Parameter
Der dritte Weg, um Parameter zu übergeben, ist mit Namen statt mit Nummern. In diesem Fall würde der Inhalt der Vorlage zu folgendem geändert werden:

Ein kleines Dankeschön... für. Grüße,

Innerhalb der Vorlage werden  und   statt Nummern verwendet, um jeden Parameter zu identifizieren. Um Parameter benannt zu übergeben, werden alle Parameter beim Übergeben identifiziert:

In diesem Fall erhält die Vorlage  die Parameter   und   und erzeugt:

Benannte Parameter beachten Groß- und Kleinschreibung, weswegen:

folgendes erzeugt:

Der Vorteil der Verwendung von benannten Namensräumen in einer Vorlage ist, neben der Flexibilität der Reihenfolge der Parameter bei der Übergabe, dass der Code der Vorlage leichter zu verstehen ist, wenn viele Parameter vorkommen.

Standardwerte
Beim Einsetzen einer Vorlage, die Parameter erwartet, ohne Argumente bereitzustellen, wie folgend:

würde bei nummerierten Parametern, wie im oberen Beispiel, folgendes Ergebnis erzeugt werden:

Da keine Argumente übergeben wurden präsentiert die Vorlage die bloßen Parameter statt der repräsentierten Werte. In diesem Fall wäre es hilfreich, Standardwerte für Parameter zu erzeugen, d.h. Werte, die benutzt werden, wenn keine Werte übergeben werden. Zum Beispiel, wenn die Werte der Vorlage zu folgendem geändert werden:

dann definiert, dass, wenn keine Argumente übergeben werden, für den Parameter  , der Wert   verwendet. Genauso definiert  den Standardwert des Parameters   als den Wert. Wenn jetzt die Vorlage eingesetzt wird, ohne Argumente zu übergeben, wird folgendes Ergebnis erzeugt:

Often default values are used to specify alternate names of parameters. For example, if you have, the template will first look for a parameter named "a". If it is not set, it will use the parameter named "b". If neither "a" nor "b" is set, it will output nothing.

Evaluation
Generally speaking, template parameters are substituted into the template after tokenization, but as is. They are not evaluated until they are used.

This has a few consequences. First of all, if you have a  containing , and a   containing  , and put   on a page, mytemplate isn't transcluded, because tokens like "|" cannot be added by a template and keep their special meaning in templates. You can still use templates to control the name of a parameter or template, but you cannot split a template call amongst multiple templates.

The second consequence of this is dead-code elimination. If you make a template call like, and Template:Foo does not contain  , then the displaytitle is not used, since it is only evaluated when needed, and it there is no parameter to substitute it into, so it is never evaluated. This usually comes into play when using Extension:ParserFunctions, and can be especially noticed when used in combination with the  magic word that varies by user language.

Template calls starting with the magic word  or   are evaluated in a separate first pass that only happens at save time, along with ~ and links using the pipe trick. If they cannot be evaluated during the first pass, subst: calls are ignored, and safesubst: are treated as if a normal template.

Many but not all parser functions, parser tags and trancluded special pages are not directly included like templates but instead are replaced by a "strip marker". This means you cannot manipulate the results with parser functions like padleft: or similar functions from extensions, as they see the strip marker instead of the result of the parser function.

Rekursion in Vorlagen
Wenn eine Vorlage in sich selbst eingebunden wird, wirft das Mediawiki nicht in eine endlose Rekursion. MediaWiki stoppt die Einbindung, indem der Name der Vorlage in fetter Schrift erscheint. Wenn der Inhalt von Template:Aaaa zum Beispiel  ist, wird „a a Template loop detected:  Template:Aaaa z z“ angezeigt.

Forbidden idiom
This safeguard precludes a potentially useful template idiom where a template self-normalizes its own calling arguments. In this forbidden example template:d can either be called  or. If called in the first manner, it recurses into itself with the second argument structure (obtained using string parser functions), which then follows a unified processing path.



If template:d is modified to recurse into template:d/2 and template:d/2 is an identical manual copy of template:d this idiom works fine as the self-recursion safeguard operates dynamically and not statically.

A feasible way for the MediaWiki software to loosen the self-recursion rule would be to require that each recursive call have a distinct argument count from all previous active calls, at most once recursing with the argument count non-decreasing. That would provide a strong guarantee against infinite self-recursion while enabling useful idioms such as the one described here in a flexible manner.

If the processing path is of low complexity, a simple solution using only one template is to handle each calling convention on a separate if/else branch, duplicating the logic of the processing path within each case. If the processing path is more complex, each call-structure case can delegate to an implementation template with a unified call structure which provides the final template behaviour.

Steuern der Vorlageneinbindung
Standardmäßig wird der Inhalt einer Vorlage vollständig angezeigt, sowohl bei direkter Betrachtung, als auch wenn sie in einer anderen Seite inkludiert wird. Du kannst das Einbinden der Vorlagen jedoch durch die Verwendung von -, - und -Tags steuern.

Alles zwischen und  wird nur verarbeitet und angezeigt, wenn die Seite direkt angesehen wird und nicht, wenn sie in einer anderen Seite eingefügt ist. Das ist nützlich, wenn man Text oder Code in einer Vorlage einbinden will, diesen jedoch nicht für alle Seiten übernehmen will, die die Vorlage verwenden, zum Beispiel:


 * Kategorisierung von Vorlagen
 * Sprachübergreifende Verweise zu ähnlichen Vorlagen in anderen Sprachen
 * Erläuternde Texte, wie eine Vorlage zu verwenden ist

Das Gegenteil ist. Text zwischen und  wird nur verarbeitet und angezeigt, wenn die Seite eingefügt wird. Der offensichtliche Anwendungsfall ist das Hinzufügen aller Seiten, die eine vorgegebene Vorlage beinhalten, zu einer Kategorie.


 * Kategorisierung-Seiten, die die Vorlage enthalten. Hinweis: Wenn die Kategorien, die von einer Vorlage angewendet werden, auf diese Weise geändert werden, wird die Kategorisierung der Seiten, die diese Vorlage enthalten, möglicherweise erst einige Zeit später aktualisiert: Dies wird von der erledigt. Um die Neukategorisierung einer bestimmten Seite zu erzwingen, öffnen Sie diese Seite zur Bearbeitung und speichern Sie sie ohne Änderungen.
 * Stelle sicher, dass der Code der Vorlage beim Anzeigen der Vorlagenseite selbst nicht ausgeführt wird. Typischerweise liegt dies daran, dass er Parameter erwartet, und seine Ausführung ohne Parameter hat ein unerwünschtes Ergebnis.

Alles außerhalb von und  wird normal verarbeitet und angezeigt, d.h. sowohl, wenn die Vorlagenseite direkt angezeigt wird, als auch, wenn die Vorlage in eine andere Seite eingebunden wird. Der Schwerpunkt liegt auf dem, was sich innerhalb dieser beiden Tags befindet.

Alles außerhalb der -Tags wird bei der Einbindung verworfen. Sogar Abschnitte, die nur als includeonly gekennzeichnet sind, werden bei der Einbeziehung verworfen, es sei denn, sie sind ebenfalls als onlyinclude gekennzeichnet. Der Schwerpunkt liegt auf dem, was außerhalb dieses Tags steht.

Eine Verschachtelung dieser Tags ist ebenfalls möglich.

Die drei Tags für partielle Transklusion ermöglichen alle möglichen Kombinationen dessen, was verarbeitet und gerendert wird. Auch Kommentare spielen eine Rolle.

Organisation von Vorlagen
Damit Vorlagen effektiv sein können, müssen Nutzer sie schnell finden können und dazu in der Lage sein, sie zu nutzen.

Um Vorlagen zu finden können Benutzer:
 * 1) auf ' > ' klicken.
 * 2) in der '-Liste Vorlage auswählen und auf ' klicken.

Eine einfache Technik ist die Integration eines Beispiels auf der Vorlagenseite. Zum Beispiel:

Verwendung
Benutzer begrüßen:

Ein Redakteur kann einfach das Beispiel kopieren und einfügen, um eine ähnliche Seite zu erzeugen. Das Beispiel ist trivial, doch ein funktionstüchtiges Beispiel, das demonstriert, wie Vorlagen verwendet werden können, spart in aufwändigen Umgebungen zu speziellen Themen leichter Zeit.

Verlinkung zu einer Vorlage
Eine Vorlagenseite kann wie jede andere Wiki-Seite verlinkt werden. Zum Beispiel wird der Link mit dem Wikicode   erzeugt.

In vielen Wikis kann Template:Tl verwendet werden, um einen Link zu einer Vorlage bereitzustellen, die so formatiert ist, dass der Wikicode „double curly-braces” angezeigt wird, der erforderlich ist, um die Vorlage zu transkludieren, ohne den Tranklusionsvorgang tatsächlich durchzuführen. Zum Beispiel kann der Code  verwendet werden, um den Link Navbar zu erstellen.

This construct is commonly used in template documentation, on help pages, and on talk pages when referring to templates. The same effect can be achieved by using, but the tl approach involves much less typing. On any given wiki the Tl template, if it exists, may or may not render the text in a "code" element, as shown here. If not, another similarly named template may do so. See, for example, the "See also" section of the documentation of en:Template:Tl at the English Wikipedia.

Kopie von einem Wiki zu einem anderen
Templates often require CSS or other templates, so users frequently have trouble copying templates from one wiki to another. The steps below should work for most templates.

MediaWiki Code
Falls man Importrechte im neuen Wiki hat:


 * 1) Gehe im Urspungs-Wiki/im originalen Wiki auf Special:Export und downloade .xml-Datein mit den gesamten Versionsgeschichten aller notwendigen Vorlagen. Verfahre dazu wie folgt:
 * 1) * Enter the name of the template in the big text box, e.g. "Template:Welcome". Pay special attention to capitalization and special characters — if the template name isn't exactly correct, the export may still occur but the .xml file will not have the expected data.
 * 1) * Kontrolliere das Kästchen "".
 * 2) * Entferne das Häkchen in dem Kästchen "".
 * 3) * Klicke auf.
 * 4) Gehe im neuen Wiki auf Special:Import und lade dort die .xml-Datei hoch.

Falls man keine Importrechte auf dem neuen Wiki hat:


 * 1) Go to the template you want to copy from the original wiki. Go to the edit page, and copy all the wikitext
 * 2) On the new wiki, go to the page with the same name as the template you copied. Hit create/edit and paste the wikitext you copied. In the edit summary of each template, link to the original page for attribution.
 * 3) Back in the original wiki at the edit window, below the edit box, look at the list of "Templates used on this page". For each template listed follow these instructions. Also do that for any template used by any of these templates, and so on.

Dadurch wird der gesamte erforderliche Code kopiert, was für einige Vorlagen ausreicht. Note that only page elements parsed in rendering the page get exported, so, for example, documentation subpages are not exported as part of this process. Wenn es nicht funktioniert, suchen Sie auch nach roten Links, die unter "In die aktuelle Version dieser Seite übernommene Seiten:" unterhalb des Bearbeitungsfeldes aufgeführt sind. Wenn es welche gibt, wiederholen Sie die obigen Schritte auch für diese und kopieren Sie auch den Code in die Module.

After successfully importing the template and all its linked templates from the other wiki, edit it to change customisations to suit your wiki. For example to change a logo, remove redundant categories or red links.

Erweiterungen
Eine häufig in Vorlagen verwendete Erweiterung ist ParserFunctions. Besuche die Seite und prüfe, ob eine der dort aufgeführten Funktionen in den von Ihnen kopierten Vorlagen verwendet wird. Wenn ja, musst du die -Erweiterung installieren. Um es zu installieren, benötigst du Systemadministrator-Zugriff auf den Server deiner MediaWiki-Installation.

Another dependency that may be used in templates, especially those on Wikipedia, is Lua. Having   in template code is a good sign for it. In case it's used, you need to install the extension and system admin access is required too. See that page for more instructions about installing and using the extension.

CSS und JavaScript-Code
Besides MediaWiki code, many templates make use of CSS and some rely on JavaScript to work fully. If the copied templates are not behaving as expected, this may be the cause. To copy the required CSS and JavaScript to your wiki you'll normally need to have admin privileges, because you'll be editing system messages in the "MediaWiki:" namespace.


 * 1) Look for the use of CSS classes (text like  ) in the template text. If those classes appear in "MediaWiki:Common.css" or "MediaWiki:Monobook.css" on the original wiki, copy those classes to "MediaWiki:Common.css" on the new wiki and check if the template is now fine.
 * 1) If the copied template is still not working as expected, check if there is code in "MediaWiki:Common.js" or "MediaWiki:Monobook.js" on the original wiki. If so, you can try copying it to "MediaWiki:Common.js" on the new wiki. Normally, it is a good idea to only copy code from trusted sources, and first browsing the code to identify and select the parts that are relevant. You may find comments that can serve as clues to identify the functionality of each part.

Siehe auch

 * w:Help:Table - the easiest instructions to use.
 * – a template special use case example
 * – fancy stuff you may find in some templates
 * – additional fancy control functions such as #if and #switch
 * – guidance on using parser functions in templates
 * – guidance on using parser functions in templates
 * m:Help:Template – contains a much more thorough manual on how exactly templates function
 * m:Help:Advanced templates – describes even more advanced techniques such as dynamic template calls and variable parameter names
 * m:Help:Embed page – embedding pages from namespaces other than.
 * – Using templates as the starting text of a page
 * – Using templates as the starting text of a page
 * – Using templates as the starting text of a page
 * – Using templates as the starting text of a page