Hilfe:Templates (Vorlagen)
| Hinweis: Wenn Du diese Seite bearbeitest, stimmst Du zu, dass Dein Beitrag unter der [CC0] veröffentlicht wird. Mehr Informationen findest du auf der Public Domain Hilfeseite. |
Wenn du Standardtexte verwendest, die auf mehreren Seiten erscheinen sollen, kommt die MediaWiki-Funktion Template 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 ins Zielwiki importiert werden.
Grundlagen
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 „Template:“ vorangestellt wird, um sie diesem Namensraum zuzuweisen; abgesehen davon können sie wie jede andere Wiki-Seite erstellt werden.
Um ein Template einzufügen, verwende doppelte geschweifte Klammern, um den {{Template-Namen}} herum.
Die einfachste Verwendung von Templates ist die folgende: Erstelle eine Seite mit dem Namen Template:Welcome und folgendem Inhalt:
Hallo! Willkommen im Wiki.
Du hast dein erstes Template erstellt! Füge nun den unten stehenden Code in eine neue Seite ein:
{{Welcome}}
Wenn die neue Seite aufgerufen wird, erscheint der Text „Hallo! Willkommen im Wiki“ anstelle von {{Welcome}}. Der Inhalt des Templates wird in die andere Seite transkludiert, d.h. er wird in die Seite integriert.
Du kannst dann {{Welcome}} an jeder beliebigen Stelle einer Seite einfügen, auf der du jemanden begrüßen möchtest. Nehmen wir an, es wird auf 100 Seiten verwendet. Wenn dann der Inhalt des Templates in geändert wird:
Hallo zusammen! Willkommen in diesem wundervollen Wiki.
und man eine der 100 Seiten, in der die Vorlage verwendet wurde, erneut besucht, wirst du 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.
Wie man eine Vorlage aufruft
Templates können in anderen Seiten auf diese Weise verwendet werden:
{{Name}}– Wie oben beschrieben, wird dieser Text (allgemein als „Template-Call“ bezeichnet) dynamisch durch den Inhalt der Seite mit dem Titel Template:Name ersetzt (ein Prozess, der "Transklusion" genannt wird), jedes Mal, wenn die Seite mit dem Template-Call geladen wird (d.h. aus Sicht eines Lesers des Wikis). Da der Template-Call im Quelltext der Seiten verbleibt, wird jede spätere Änderung an Template:Name auf der Seite sichtbar, die den Template-Call enthält. Außerdem wird die Seite unter den Seiten aufgelistet, die auf das Template „verweisen“.{{subst:Name}}— wenn diese Art des Aufrufs einer Vorlage verwendet wird, wird sie durch eine statische Kopie des Inhalts von Vorlage:Name ab dem Zeitpunkt ersetzt, an dem die Seite, die den Vorlagenaufruf enthält, gespeichert wird. Das heißt, eine Kopie des Inhalts von Vorlage:Name wird für den Aufruf der Vorlage ersetzt. Es gibt keine Verknüpfung zwischen der Seite und dem Template, sodass beide unabhänig voneinander bearbeitet werden können. Tatsächlich besteht deshalb kaum ein Unterschied zwischen dieser Vorgehensweise und dem üblichen Weg, also den Text "manuell" in den Quelltext einzugeben. Für weitere Informationen siehe Hilfe:Substitution.{{safesubst:Name}}— Dies wurde eingeführt, um rekursive Ersetzungen in Fällen zu ermöglichen, in denen Vorlagen Aufrufe anderer Vorlagen oder Parser-Funktionen enthalten. Für weitere Informationen siehe Hilfe:Substitution.{{msgnw:Name}}— Dadurch wird der Inhalt der Vorlage als reine Wiki-Syntax (wie bei<nowiki>) angezeigt, wenn die Seite, die sie enthält, angezeigt wird. Zum Beispiel zeigt{{msgnw:Template:Thankyou}}:
<noinclude> <languages/> </noinclude> '''Ein kleines Dankeschön...''' für {{{reason|{{{1}}}}}}. Grüße, {{{signature|{{{2}}}}}} <noinclude> [[Category:Template examples{{#translation:}}|{{PAGENAME}}]] </noinclude>
Jede Wikiseite kann als Vorlage verwendet werden. Einfach, indem man den Namensbereich angibt, dem sie angehört.
{{Template:Pagename}}bindet[[Template:Pagename]]ein (identisch zu{{Pagename}}){{Talk:Pagename}}bindetTalk:Pagenameein{{:Pagename}}bindet die SeitePagenameein (im Hauptnamensraum){{subst::Pagename}}ersetzt den Inhalt der Seite mit dem Titel Pagename
Wenn kein solcher Namensraum vorhanden ist, wird angenommen, dass der vollständige Titel der Vorlagenname ist.
{{Foo:Bar}}transkludiert Template:Foo:Bar
Unabhängig davon, welche Syntax verwendet wird, kann der Name der Vorlage relativ zur aktuellen Seite sein
Wenn z.B. {{/bar}} auf Seite foo aufgerufen wird, wird die Seite foo/bar transkludiert.
Sie kann auch dynamisch erzeugt werden.
Zum Beispiel ruft {{ {{foo}} }} Template:foo auf und interpretiert das Ergebnis als den Namen einer anderen aufzurufenden Vorlage.
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.:
Ein kleines Dankeschön...
für für all deine Bemühungen.
Grüße, Ich
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 Template:Thankyou 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:
'''Ein kleines Dankeschön...'''
für {{{1}}}.
Grüße, {{{2}}}
Die Verwendung von {{{1}}} und {{{2}}} muss beachtet werden. Auf diese Weise können innerhalb von Vorlagen die Parameter identifiziert werden, die bei der Verwendung der Vorlage angegeben werden. Beachte, 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:
{{Thankyou/de|deine Bemühungen|Ich}}
In diesem Fall erhält die Vorlage {{Thankyou/de}} die Parameter {{{1}}}=deine Bemühungen und {{{2}}}=Ich, was folgendes erzeugt:
Ein kleines Dankeschön...
für deine Bemühungen.
Grüße, Ich
Die Reihenfolge, in der anonyme Parameter übergeben werden, ist entscheidend für ihr Verhalten. Das Tauschen der Parameter wie folgendend:
{{Thankyou/de|Ich|deine Bemühungen}}
würde dieses Ergebnis erzeugen:
Ein kleines Dankeschön...
für Ich.
Grüße, deine Bemühungen
{{{1}}} usw.) funktioniert nur mit anonymen Parametern. Alle namentlich identifizierten Parameter, wie unten gezeigt, sind für die Vorlage nicht über Ordnungszahlen zugänglich.
Nummerierte Parameter
Um Parameter nummeriert zu übergeben, werden alle Parameter beim Übergeben identifiziert:
{{Thankyou/de|2=Ich|1=deine Freundschaft}}
Dieses Mal erhält die Vorlage {{Thankyou/de}} die Parameter {{{1}}}=deine Freundschaft und {{{2}}}=Ich, was folgendes erzeugt, obwohl die Parameter in umgekehrter Reihenfolge übergeben wurden:
Ein kleines Dankeschön...
für deine Freundschaft.
Grüße, Ich
- Beispiele
{{Thankyou|1=Hinzufügen von „=“|2=Ich}}
erzeugt:
Ein kleines Dankeschön...
für hinzufügen von "=".
Grüße, Ich
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...'''
for {{{reason}}}.
hugs, {{{signature}}}
Innerhalb der Vorlage werden {{{reason}}} und {{{signature}}} statt Nummern verwendet, um jeden Parameter zu identifizieren. Um Parameter benannt zu übergeben, werden alle Parameter beim Übergeben identifiziert:
{{Thankyou/de|signature=Ich|reason=sein, wer du bist}}
In diesem Fall erhält die Vorlage {{Thankyou/de}} die Parameter {{{reason}}}=sein, wer du bist und {{{signature}}}=Ich und erzeugt:
Ein kleines Dankeschön...
für sein, wer du bist.
Grüße, Ich
Benannte Parameter beachten Groß- und Kleinschreibung, weswegen:
{{Thankyou/de|signature=Ich|Reason=sein, wer du bist|reason=Beachtung der Groß- und Kleinschreibung}}
folgendes erzeugt:
Ein kleines Dankeschön...
für Beachtung der Groß- und Kleinschreibung.
Grüße, Ich
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.
Leerzeichen und Zeilenumbrüche werden automatisch am Anfang und Ende von benannten Parameternamen und -werten entfernt, bleiben aber bei unbenannten Parametern erhalten.
Benannte und unbenannte Parameter mischen
Falls die Vorlage dies unterstützt, können beide Arten von Parametern in einem Aufruf verwendet werden. The template contents would be changed to:
'''A little thank you...'''
for {{{reason|{{{1}}}}}}.
Hugs, {{{signature|{{{2}}}}}}
Dann führt {{Thankyou|die Unterstützung beider Parametertypen|signature=Ich}} zu:
Ein kleines Dankeschön...
für die Unterstützung beider Parametertypen.
Grüße, Ich
Gehen Sie dabei vorsichtig vor, da dies zu kontraintuitiven Ergebnissen führen kann, da die Anzahl der unbenannten Parameter nur auf den unbenannten Parametern und nicht auf den benannten Parametern basiert.
Zum Beispiel führt {{Thankyou|Ich|reason=die Unterstützung beider Parametertypen}} zu:
Ein kleines Dankeschön...
für die Unterstützung beider Parametertypen.
Grüße, {{{2}}}
Die Vorlage ist so codiert, dass aus diesem Grund der benannte Parameter dem unbenannten Parameter vorgezogen wird, was dazu führt, dass das „Ich“ verloren geht und keine Signatur angegeben wird.
Dies führt dazu, dass ein Standardwert von {{{2}}} angezeigt wird, wie unten erläutert.
Ebenso ergibt {{Thankyou|reason=die Unterstützung beider Parametertypen|Ich}}:
Ein kleines Dankeschön...
für die Unterstützung beider Parametertypen.
Grüße, {{{2}}}
Obwohl „ich“ der zweite Parameter ist, ist es der erste „unbenannte“ Parameter und wird daher {{{1}}} zugewiesen, während {{{2}}} nicht zugewiesen wird.
Standardwerte
Beim Einsetzen einer Vorlage, die Parameter erwartet, ohne Argumente bereitzustellen, wie folgend:
{{Thankyou/de}}
würde bei nummerierten Parametern, wie im oberen Beispiel, folgendes Ergebnis erzeugt werden:
Ein kleines Dankeschön...
für {{{1}}}.
Grüße, {{{2}}}
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:
'''Ein kleines Dankeschön...'''
für {{{reason|alles}}}.
Grüße, {{{signature|Ich}}}
dann definiert {{{reason|alles}}}, dass, wenn keine Argumente übergeben werden, für den Parameter {{{reason}}}, der Wert alles verwendet. Genauso definiert {{{signature|Ich}}} den Standardwert des Parameters {{{signature}}} als den Wert Ich. Wenn jetzt die Vorlage eingesetzt wird, ohne Argumente zu übergeben, wird folgendes Ergebnis erzeugt:
Ein kleines Dankeschön...
für alles.
Grüße, Ich
foo in {{foo|bar=}} oder {{foo|bar=|baz=qux}} den Parameter bar als "". Dies ist etwas anderes als das Weglassen des Parameters, wodurch er undefiniert bleibt und der oben beschriebene Mechanismus des Standardwerts ausgelöst wird.{{#if:{{{1|}}}|{{{1|}}}|undefined}} „undefined“ zurück, wenn der Parameter entweder undefiniert oder leer ist, während {{{1|undefined}}} dies nur tut, wenn der Parameter undefiniert ist.Häufig werden Standardwerte verwendet, um alternative Namen von Parametern anzugeben.
Wenn du beispielsweise {{{a|{{{b|}}} }}} hast, sucht die Vorlage zuerst nach einem Parameter namens "a".
Wenn es nicht gesetzt ist, wird es den Parameter namens "b" verwenden.
Wenn weder "a" noch "b" gesetzt ist, wird nichts ausgegeben.
Parameter an andere Vorlagen übergeben
Wenn durch den obigen Vorlagenaufruf eine unformatierte Parametersyntax generiert und anschließend an eine andere Vorlage übergeben wird, wird diese nicht als Parameter interpretiert. Dies bedeutet, dass {{Thankyou2}}, das lediglich {{Thankyou}} ohne Parameter aufruft, nicht funktioniert: {{thankyou2|everything|me}} → Ein kleines Dankeschön... für {{{1}}}. Grüße, {{{2}}}
Sie müssen stattdessen den Parameter explizit an die andere Vorlage übertragen, d. h. wenn {{Thankyou3}} enthält
{{thankyou|{{{1}}}|{{{2}}}}}
dann funktioniert es ordnungsgemäß: {{thankyou3|everything|me}} → Ein kleines Dankeschön... für everything. Grüße, me
In diesem Beispiel wird die Leere vs. Undefiniertheit in Parameterwerten nicht beibehalten – dazu wäre eine kompliziertere Syntax erforderlich.
Leere vs. undefinierte Parameter
Das {{t2demo|| a }} (siehe {{T2demo}} ) mit einem doppelten Pipe setzt den ersten Parameter auf eine leere Zeichenkette, anstatt ihn undefiniert zu lassen.
Es erzeugt die Ausgabe von start--middle- a -end, ähnlich wie {{t2demo|1=|2= a }} in start--middle- a -end.
Wenn Sie hingegen den Parameter „2“ explizit auf „a“ setzen, bleibt der erste unbenannte Parameter „undefined“ (undefiniert):
{{t2demo|2= a }} ergibt start-{{{1}}}-middle- a -end
Wenn der zweite Parameter nicht getrimmt werden soll, muss er unbenannt sein.
Daher können Sie dem ersten Parameter eine leere Zeichenfolge zuweisen, ihn jedoch nicht undefiniert lassen.
Leere und Unbestimmtheit gleichsetzen
Gute Programmierpraktiken für Vorlagen führen dazu, dass eine leere Zeichenfolge an einen Parameter übergeben wird, was genauso funktioniert, als würde kein Wert zugewiesen werden. Dies vereinfacht die Handhabung und sorgt für mehr Konsistenz.
Beispielsweise kann die Verwendung von p= zeigen, dass ein Vorlage einen Parameter "p" hat, der noch keinen Wert hat.
Um eine leere Zeichenfolge und ein unbestimmtes Wertäquivalent zu erstellen, verwenden Sie folgende Ansätze:
- Verwenden Sie
{{{p|}}}ausschließlich anstelle von{{{p}}}oderq, wo "q" ein nicht leerer Wert ist. - Verwenden Sie bedingte Prüfungen wie
{{#if:{{{p|}}}|..{{{p}}}..|..}}, um sicherzustellen, dass{{{p}}}nur verwendet wird, wenn es einen Wert hat.
Wenn Sie aus irgendeinem Grund unbestimmte Parameter anders als leere Parameter oder einen anderen möglichen Wert behandeln möchten, können Sie den gleichen Parameter zweimal mit verschiedenen Standardwerte vergleichen, d.h. {{#ifeq:{{{foo|bar}}}|{{{foo|baz}}}|parameter is defined|parameter is undefined}}.
Verwendung von Gleichheitszeichen in unbenannten Parametern
Unbenannte Parameter können Gleichheitszeichen enthalten, dies muss jedoch indirekt erfolgen. Hier sind einige Methoden, bei denen template:T1demo verwendet wird:
- Standardwert für einen nicht definierten Parameter
Weisen Sie einem undefinierten Parameter einen Standardwert zu:
{{T1demo|{{{1| a=b }}}}}
Dies wird wie folgt dargestellt: start a=b end.
- Verwendung der
{{=}}-Parser-Funktion
Verwenden Sie eine Parser-Funktion, die ein Gleichheitszeichen sicher einfügt:
{{T1demo| a{{=}}b }}
Dies wird wie folgt dargestellt: start a=b end.
- HTML-Entitäten
Ersetzen Sie das Gleichheitszeichen durch eine HTML-Entität für die Anzeige:
{{T1demo| a=b }}
Dies wird wie folgt dargestellt: start a=b end.
Dies wird korrekt gerendert, ohne die anderen Parameter zu beeinflussen.
Umgang mit nicht geschlossenen geschweiften und eckigen Klammern
Nicht geschlossene geschweifte Klammern ({{, }}) oder eckige Klammern ([[, ]]) müssen innerhalb von nowiki-Tags stehen oder HTML-Entitäten verwenden:
- Für die Darstellung von geschweiften Klammern gibt es zwei Optionen:
- 1 $ oder 2 $ für 3 $ verwenden
- Verwende
<nowiki>}}</nowiki>oder}für}.
- Verwende
[für[und]für].
Hier sind einige Beispiele:
- Nicht geschlossene geschweifte Klammern
{{T1demo| <nowiki>{{</nowiki>content<nowiki>}}</nowiki> }}
Dadurch werden die geschweiften Klammern korrekt dargestellt, ohne die Vorlage zu zerstören.
- Nicht geschlossene eckige Klammern
{{T1demo| text [link] more text }}
Dadurch werden die Klammern korrekt dargestellt, ohne die Vorlage zu zerstören.
Dies wird wie folgt dargestellt:
start text [link] more text end
Nicht in nowiki-Tags gesetzte ungleiche Paare verhindern entweder die Erweiterung der Vorlage oder werden als schließende Klammern für den Vorlagenaufruf genommen.
Hier sind einige Beispiele:
{{T1demo|abc]]def[[ghi}}
Das wird wegen nicht geschlossener Klammern nicht richtig funktionieren.
Die richtige Verwendung:
{{T1demo|abc<nowiki>]]</nowiki>def<nowiki>[[</nowiki>ghi}}
Dies wird wie folgt dargestellt:
startabc]]def[[ghiend
Mit Vorlagen erstellte Klammern
Eine andere Möglichkeit, Argumente mit nicht zusammenpassenden Klammern zu übergeben, besteht darin, sie in eine andere Vorlage zu setzen. In diesem Fall (was bei {{((}} und {{))}}) in diesem Wiki der Fall ist) werden die nicht zusammengehörigen Klammern einfach so angezeigt und nicht als weiterer Vorlagenaufruf entschlüsselt. Zum Beispiel:
{{t1demo|{{((}}t1demo{{))}}}}
ergibt: start{{t1demo}}end
Beim Ersetzen einer Vorlage werden Vorlagen einmal beim Ersetzen (mit den oben genannten Einschränkungen) und dann noch mal beim Rendern des resultierenden Wikitextes analysiert. Zum Beispiel:
{{subst:((}}t1demo|foo}}
wird beim Speichern erweitert zu:
{{t1demo|foo}}
was wird dann so angezeigt wird:
startfooend
Wenn der durch das erste subst erzeugte Wikitext selbst die Syntax „subst:“ enthält, wird er beim Speichern nicht verarbeitet, aber vielleicht beim nächsten Speichern. Diese Technik kann verwendet werden, um rekursive Ersetzungen zu implementieren, deren Evaluation mehrere Speichervorgänge erfordert.
Pipes in Parameterwerten verwenden
Ein Parameterwert darf kein Pipe-Zeichen (|) enthalten, weil es sonst als Ende des Parameters und Anfang des nächsten Parameters gesehen wird.
Das kannst du umgehen, indem du die Parser-Funktion {{!}} oder die HTML-Entität &124; verwendest.
Die beiden Methoden, dies zu tun, verhalten sich leicht unterschiedlich, was in einigen seltenen Fällen relevant sein kann, beispielsweise wenn eine Vorlage die Syntax wikitable erzeugt.
Beispiel:
{{T1demo|abc|def}}
erzeugt:
startabcend
Das „def“ wird nicht angezeigt, weil es als Teil eines anderen unbenannten Parameters behandelt wird, den die Vorlage nicht verwendet.
{{T1demo|abc{{!}}def}}
erzeugt:
startabc|defend
Das „def“ wird richtig angezeigt.
{{T1demo|abc|def}}
erzeugt:
startabc|defend
Das „def“ wird wieder richtig angezeigt.
Formatierung von Vorlagenaufrufen mit zusätzlichen Parametern
Da Vorlagen übergebene Parameter ignorieren und nicht speziell verarbeiten, kannst du sie verwenden, um dem Vorlagenaufruf zusätzliche Leerzeichen oder nicht verwendete Inhalte hinzuzufügen.
Zum Beispiel:
{{template name|foo|bar|baz|mumble|quux}}
ist gleichbedeutend mit, vorausgesetzt, die Vorlage erkennt SPACEN nicht als Parametername:
{{template name|SPACE1=
|foo|SPACE2=
|bar|SPACE3=Random stuff
|baz|SPACE4=
|mumble|SPACE5=
quux
}}
Es ist auch möglich, für jeden Spacer denselben Namen zu verwenden (oft die leere Zeichenfolge), aber dadurch wird Category:Pages using duplicate arguments in template calls gefüllt, was viele Wikis lieber leer lassen, um Benutzerfehler zu erkennen.
Damit kannst du die Vorlage so rendern lassen, dass sie ähnlich wie ihre Ausgabe aussieht, z. B. indem jede Zeile von w:Template:Chess position einzeln angezeigt wird, sodass der Wikitext auch wie ein Schachbrett aussieht.
Auslastung der Tracking-Parameter verfolgen
Es kann sinnvoll sein, einer Vorlage einen Link oder eine Kategorie zu einer Seite hinzuzufügen, wenn ein bestimmter Parameter oder eine Kombination von Parametern verwendet wird, um möglichst einfach feststellen zu können, welche Seiten einen bestimmten Parameter verwenden und welche Auswirkungen eine Änderung dieses Parameters in der Vorlage hätte.
Evaluationsprozess
Im Allgemeinen werden Vorlagenparameter nach der Tokenisierung in die Vorlage eingesetzt, aber so wie sie sind. Sie werden erst ausgewertet, wenn sie verwendet werden.
Dies hat einige Konsequenzen.
- Wenn Sie ein
Template:Starthaben, das{{mytemplateenthält, und einTemplate:End, das|foo=bar}}enthält, und{{start}}{{end}}auf eine Seite setzen, wird mytemplate nicht transkludiert, weil Token wie "|" nicht durch ein Template hinzugefügt werden können und ihre spezielle Bedeutung in Templates behalten. Du kannst weiterhin Vorlagen verwenden, um den Namen eines Parameters oder einer Vorlage zu steuern, aber du kannst einen Vorlagenaufruf nicht auf mehrere Vorlagen aufteilen. - Entfernen von totem Code: Wenn du einen Vorlagenaufruf wie
{{foo|{{DISPLAYTITLE:Bar}} }}machst undTemplate:Fookein {{{1}}} enthält, wirdDISPLAYTITLEnicht verwendet, da es nur bei Bedarf evaluiert wird und es keinen Parameter gibt, in den es ersetzt werden könnte, sodass es nie evaluiert wird. Dies kommt in der Regel bei der Verwendung von Erweiterung:ParserFunctions zum Tragen und kann besonders in Verbindung mit dem Magischen Wortint:auffallen, das je nach Benutzersprache variiert. Das ist nicht perfekt, und in manchen Fällen kann der Prozess der Evaluation sogar dann Template:W haben, wenn das Ergebnis der Erweiterung einer Vorlage nicht verwendet wird (z. B. weil es Teil einer if-Anweisung ist). Zum Beispiel werden alle erzeugten Links oder andere Vorlagen, die verwendet werden, trotzdem zu Special:WhatLinksHere hinzugefügt, auch wenn sie nicht angezeigt werden.
Vorlagenparameter werden als Template:W übergeben, was bedeutet, dass eine Vorlage ihre Argumente nicht ändern kann. Parameter werden wie eine Template:W behandelt, und Parameternamen werden vor den Parameterwerten ausgewertet. Wenn derselbe Parametername mehrmals angegeben wird (entweder mit oder ohne Namen), wird nur die letzte Instanz verwendet und die Seite zu Category:Pages using duplicate arguments in template calls hinzugefügt.
Template-Aufrufe, die mit dem magischen Wort subst: oder safesubst: beginnen, werden in einem separaten ersten Durchgang ausgewertet, der zur Zeitersparnis erfolgt, zusammen mit ~~~~ und Links, die den Pipe-Trick verwenden.
Wenn diese beim ersten Durchlauf nicht ausgewertet werden können, werden subst:-Aufrufe ignoriert und safesubst: wie ein normales Template behandelt.
Viele, aber nicht alle Parser-Funktionen, Parser-Tags und transklusierte Sonderseiten werden nicht wie Templates direkt eingebunden, sondern durch einen "Strip-Marker" ersetzt. Das bedeutet, dass Sie die Ergebnisse nicht mit Parser-Funktionen wie padleft: oder ähnlichen Funktionen von Erweiterungen manipulieren können, da diese die Streifenmarkierung anstelle des Ergebnisses der Parser-Funktion sehen.
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 a {{Aaaa}} z ist, wird „a a Template loop detected: Template:Aaaa z z“ angezeigt.
Diese Schutzmaßnahme verhindert einen potenziell nützlichen Template-Ausdruck, bei dem ein Template seine eigenen Aufrufargumente selbst normalisiert.
In diesem unzulässigen Beispiel kann template:d entweder als {{d|20200311}} oder {{d|y=2020|m=3|d=11}} bezeichnet werden.
Bei der ersten Methode erfolgt ein Rückgriff auf die zweite Argumentstruktur (die mit Hilfe der String-Parser-Funktionen ermittelt wird), die dann einem einheitlichen Verarbeitungspfad folgt.
{{#if:{{{1|}}}|{{d|y={{#sub:{{{1}}}|0|4}}|m={{#sub:{{{1}}}|4|2}}|d={{#sub:{{{1}}}|6|2}}}}|<!-- processing path with arguments y,m,d regardless of original call pattern -->}}
Falls template:d modifiziert wird, um nach template:d/2 zu springen und template:d/2 eine „identische manuelle Kopie“ von template:d ist, so funktioniert dieses Verfahren gut, da die Absicherung der automatischen Rekursion dynamisch und nicht statisch funktioniert.
Ein gangbarer Weg für die MediaWiki-Software, die Regel der Selbstrekursion zu lockern, wäre es, zu verlangen, dass jeder rekursive Aufruf eine unterschiedliche Anzahl von Argumenten haben muss, die sich von allen vorherigen aktiven Aufrufen unterscheiden und höchstens einmal rekursiv sein darf, wobei die Anzahl der Argumente nicht abnehmen darf. Das würde eine solide Sicherheit gegen endlose automatische Rekursion bieten und gleichzeitig nützliche Ausdrücke, wie den hier beschriebenen, auf flexible Weise ermöglichen.
Ist der Verarbeitungspfad von geringer Komplexität, kann eine einfache Lösung mit nur einem Template darin bestehen, jeden Aufruf in einer separaten if/else Verzweigung zu verarbeiten und die Logik des Prozesses in jedem Fall zu duplizieren. Wenn der Verarbeitungspfad komplexer ist, kann jeder Fall einer Aufrufstruktur an eine Vorlage zur Implementierung mit einer einheitlichen Aufrufstruktur delegiert werden, die das endgültige Template-Verhalten bereitstellt.
Tabellen in Parametern
Da das Pipe-Zeichen (|) und das Gleichheitszeichen (=) in Template-Aufrufen und Wikitables unterschiedliche Bedeutungen haben, muss man, um Tabellenauszeichnungen im Wert eines Template-Parameters zu verwenden, diese Zeichen in der Regel mit Hilfe spezieller Sequenzen „umgehen“ (d.h. sie vor der Interpretation als Template-Auszeichnungen schützen):
- das eingebaute magische Wort
{{!}}bietet seit MediaWiki 1.24 eine „umgangene“ Version von| - das eingebaute magische Wort
{{=}}bietet eine „umgangene“ Version von=seit MediaWiki 1.39
Vor der Einführung dieser magischen Worte verwendeten viele Wikis Vorlagen, um das Gleiche zu erreichen. In einem solchen Wiki haben die magischen Wörter Vorrang vor den gleichnamigen Vorlagen.
Beispiel-Tabelle
| A | B | C |
|---|---|---|
| A1 | B1 | C1 |
| A2 | B2 | C1 |
Tabellencode:
{| class=wikitable
!A!!B!!C
|-
|A1||B1||C1
|-
|A2||B2||C1
|}
Umgangenen (escaped) Tabellencode:
{{{!}} class{{=}}wikitable
!A!!B!!C
{{!}}-
{{!}}A1{{!}}{{!}}B1{{!}}{{!}}C1
{{!}}-
{{!}}A2{{!}}{{!}}B2{{!}}{{!}}C2
{{!}}}
Beachten, dass die erste linke Klammer ({) als wörtliches Zeichen für die linke Klammer interpretiert wird, da sie unmittelbar vor dem magischen Wort {{!}} steht.
Ebenso wird die letzte rechte Klammer (}) als wörtliches Zeichen für eine rechte Klammer interpretiert, da ihr das gleiche magische Wort unmittelbar vorangestellt ist.
In einigen Fällen können diese Klammerzeichen jedoch Probleme verursachen, weshalb einige Wikis auch Vorlagen für die Umgehung dieser Zeichen anbieten:
- der Vorlagenaufruf
{{(}}könnte eine "umgangene" Version von{darstellen - der Vorlagenaufruf
{{)}}könnte eine "umgangene" Version von}darstellen
Einige Wikis gehen sogar noch weiter und bieten andere praktische Vorlagen wie {{(!}} ({|), {{!)}} (|}), {{!!}} (||).
In einem solchen Wiki kann der Code in dieser Form etwas vereinfacht werden:
{{(!}} class{{=}}wikitable
!A!!B!!C
{{!}}-
{{!}}A1{{!!}}B1{{!!}}C1
{{!}}-
{{!}}A2{{!!}}B2{{!!}}C2
{{!)}}
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. Die Seite der Vorlage sieht direkt aufgerufen genauso aus, wie die Vorlage ohne Parameter aussehen würde. Wenn die Vorlage Parameter braucht, um richtig zu funktionieren, führt das zu unformatiertem Wikitext oder Fehlern, weil die Parameter fehlen. Zum Beispiel:
- Wenn ein Parameter keinen Standardwert hat, wird er als Literaltext {{{1}}} angezeigt, was bedeutet, dass die Vorlage einen Parameter benötigt.
- Wenn ein Parameter einen leeren Standardwert hat (er wird als {{{1|}}} geschrieben), wird nichts angezeigt, was zwar den gewünschten Effekt hat, aber für die Selbstdokumentation nicht so klar ist. Die Verwendung eines nicht leeren Standardwerts wie
{{{1|image}}}könnte die Rolle eines Parameters verdeutlichen, insbesondere bei Vorlagen, die Bilder enthalten. - Wenn ein Parameter ohne Standardwert an die Parser-Funktion
#exprübergeben wird, kommt es zu einer Fehlermeldung: „Expression error: unrecognized punctuation character '{'.“ - Wenn eine Vorlage eine Tabelle erstellt, ist es hilfreich, wenn die Vorlagenseite die Struktur der Tabelle anzeigt und nicht den Wikitext, mit dem sie erstellt wurde. Dafür wird die Tabellensyntax nicht in Tags eingeschlossen, und jedes Tabellenelement enthält bei Bedarf sowohl
<noinclude>...</noinclude>- als auch<includeonly>...</includeonly>-Teile.
Du kannst aber mit den Tags <noinclude>, <includeonly> und <onlyinclude> festlegen, welche Teile einer Vorlage angezeigt und eingefügt werden.
Alles zwischen <noinclude> und </noinclude> 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 In manchen Wikis ist es üblich, eine Vorlage wie {{Dokumentation}} zu verwenden, um die Dokumentation aus einer Unterseite der Vorlage einzufügen. Zum Beispiel wird Template:Void auf Template:Void/doc dokumentiert.
Das Gegenteil ist <includeonly>. Text zwischen <includeonly> und </includeonly> 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 Jobwarteschlange erledigt. Um die Neukategorisierung einer bestimmten Seite zu erzwingen, öffne diese Seite zur Bearbeitung und speicher 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 <noinclude> und <includeonly> 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 <onlyinclude>-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 Fokus liegt nur auf dem, was in diesem Tag steht.
Wenn zum Beispiel eine Seite wie Help:Templates/onlyinclude demo folgenden Wikitext hat:
abc<onlyinclude>def</onlyinclude>ghi<includeonly>jkl</includeonly>
Das Ergebnis der Transkludierung ist def.
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.
Inklusion-Tags werden bei der Verwendung von {{subst:templatename}} beachtet, aber sie werden bei der Verwendung von {{msgnw:templatename}} nicht beachtet, da dabei der unformatierte Wikitext ohne jegliche Verarbeitung angezeigt wird.
Transklusion von Abschnitten
Um verschiedene Abschnitte einer Vorlage auf verschiedenen Seiten einzufügen, können Sie den Inhalt in onlyinclude-Tags einschließen und mithilfe einer if-Anweisung für Parameter auswählen, welcher Abschnitt verwendet werden soll.
Betrachten Sie "Template:Example" mit diesem Wikitext:
== Section 1 ==
{{#ifeq:{{{1|1}}}|1|
Content of section one.
}}
{{#ifeq:{{{1|2}}}|2|
== Section 2 ==
Content of section two.
}}
Dies wird beide Abschnitte auf der Beispielseite selbst darstellen und es anderen Seiten ermöglichen, den ersten Abschnitt mit {{example|1}} und den zweiten Abschnitt mit {{example|2}} zu überschließen.
Ein anderer Ansatz ist, stattdessen die wörtliche Parameter-Syntax zu verwenden:
{{{section1|
== Section 1 ==
Content of section one.
}}}
{{{section2|
== Section 2 ==
Content of section two.
}}}
Schließt den ersten Abschnitt mit {{example|section2=}} und den zweiten Abschnitt mit {{example|section1=}} ein.
Wenn keine der beiden Parameter verwendet wird, werden beide Abschnitte angezeigt.
Ein dritter Ansatz ist, Labeled Section Transclusion.
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:
- auf
Spezialseiten>Alle Seitenklicken. - in der
Namensraum:-Liste Vorlage auswählen und aufAnwendenklicken.
Eine einfache Technik ist die Integration eines Beispiels auf der Vorlagenseite. Zum Beispiel:
<noinclude>
== Verwendung ==
Benutzer begrüßen:
{{Thankyou|reason=deine Begründung|signature=deine Signatur}}
</noinclude>
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.
Während der Bearbeitung einer Seite ist eine Liste aller verwendeten Vorlagen unter dem Bearbeitungsformular in einem ausklappbaren Abschnitt mit dem Titel „Folgende Seiten werden auf dieser Seite inkludiert:“ (je nach Kontext auch „Folgende Seiten werden in dieser Seitenvorschau inkludiert:“ oder „Folgende Seiten werden in diesem Abschnitt inkludiert:“ genannt) verfügbar. Diese Liste enthält einen praktischen Link zur Seite der Vorlage sowie Informationen über ihren Schutzstatus. Umgeleitete Vorlagen werden kursiv dargestellt, wobei das Umleitungsziel als separates Listenelement hinzugefügt wird.
Verlinkung zu einer Vorlage
Eine Vorlagenseite kann wie jede andere Wiki-Seite verlinkt werden. Zum Beispiel wird der Link Template:Navbar mit dem Wikicode [[Template:Navbar]] 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 {{tl|Navbar}} verwendet werden, um den Link {{Navbar}} zu erstellen.
Dieses Konstrukt wird häufig verwendet, wenn auf Vorlagen in der Vorlagendokumentation, auf Hilfeseiten und auf Diskussionsseiten verwiesen wird.
Der gleiche Effekt kann mit {{[[Template:Navbar|Navbar]]}} erzielt werden, aber der {{Tl}}-Ansatz erfordert viel weniger Eingaben.
In jedem gegebenen Wiki kann die Tl-Vorlage, falls vorhanden, den Text in einem "Code"-Element oder als Monospace-Schrift wiedergeben oder nicht.
Wenn nicht (wie in diesem Wiki), kann eine andere ähnlich benannte Vorlage dies tun.
Siehe zum Beispiel den Abschnitt "Siehe auch" unserer Template:Tl-Dokumentation.
Vorlagenbenennung
Bei der Bezeichnung einer Vorlage wird die Groß-/Kleinschreibung beachtet, mit Ausnahme des ersten Zeichens.
Erstellen Sie Weiterleitungen für alternative Großschreibungen.
Wenn eine Vorlage beispielsweise den Namen „AdminAbbr“ hat, können Sie eine Weiterleitung mit dem Namen „Adminabbr“ erstellen.
Auf diese Weise kann die Vorlage entweder mit {{AdminAbbr}} oder {{adminabbr}} aufgerufen werden.
Wenn ein Redakteur aus Gründen der Übersichtlichkeit eine Mischung aus Groß- und Kleinbuchstaben bevorzugt, kann er Funktionen wie lc oder uc verwenden.
Beispielsweise könnten sie statt 1$ auch 2$ verwenden.
Da Vorlagennamen genauso interpretiert werden wie die Namen anderer Seiten, werden Unterstriche durch Leerzeichen ersetzt und jeder Text nach einem Nummernzeichen (was in einem Standardlink ein Anker sein würde) ignoriert.
Ein Unterstrich _ kann alternativ zu einem Leerzeichen verwendet werden.
Möglicher Umgang mit Vorlagen
Vorlagen können für jede Situation verwendet werden, in der zwei oder mehr Seiten identische oder ähnliche Inhalte enthalten, die zusammen und nicht unabhängig bearbeitet werden. Sie können verwendet werden, um:
- Strukturierte Elemente auf vielen Seiten bereitstellen, wie Infoboxen, Wartungsvorlagen, Navigationsboxen usw.
- Berechnungen durchführen, die als Programmierwerkzeug auf verschiedenen Seiten verwendet werden, wie z. B. w:Template:Sum.
- Zusammengesetzte Seiten erstellen, die den Inhalt mehrerer bestehender Seiten zusammen anzeigen, wie beispielsweise w:WP:Village pump (all), die Inhalte aus jedem Abschnitt von Village pump enthält. Der Inhalt dieser Seiten kann entweder einzeln oder zusammen angezeigt werden, aber die Revisionsgeschichte, die Beobachtungsliste usw. werden nur Änderungen an den transkludenten Seiten und dem Roh-Wiki-Text der zusammengesetzten Seite selbst aufnehmen, nicht implizite Änderungen an der zusammengestellten Seite.
- Teilen Sie einige Inhalte zwischen einigen verwandten Seiten. Beispielsweise ist die Liste unter Hilfe:Einstellungen#Beta-Funktionen unter Beta-Funktionen#Aktuelle Beta-Funktionen doppelt aufgeführt. Während bei MediaWiki.org, das stattdessen mit Extension:LabeledSectionTransclusion erstellt wurde, könnte dies mit einer Vorlage gemacht worden sein.
- Inhalte, auf die auf derselben Seite mehrfach verwiesen wird, speichern, sodass sie nur einmal geschrieben und berechnet werden müssen. Beispielsweise wird w:Template:Cite Monumentenregister/URL zweimal von w:Template:Cite Monumentenregister an zwei verschiedenen Stellen aufgerufen, und durch die Verwendung einer anderen Vorlage muss das URL-Schema nur einmal in der Basisvorlage geschrieben werden.
- Verwenden Sie Vorlagen als Programmierelement, um eine Schleife zu erzeugen: Wenn Template:A Template:B 10 Mal mit verschiedenen Parametern anruft, simuliert das grob eine For-Schleife. Wenn Template:B Template:C 10 Mal anruft, dann haben Sie eine vernetzte Schleife von 100 Anrufen von Template: C. Beachten Sie jedoch, dass es leicht zu den Vorlagenbeschränkungen kommen kann, wenn Sie Vorlagen als fortgeschrittene Programmierkonstrukte verwenden. Die Verwendung von Scribunto ist in der Regel klarer und leichter nachvollziehbar.
Kopie von einem Wiki zu einem anderen
Es ist möglich, wenn durch die Wiki-Konfiguration erlaubt Vorlagen aus anderen Wikis zu integrieren. Diese Konfigurationsinstellung ist auf Wikimedia-Wikis deaktiviert. Andernfalls müssen Sie die Vorlage und ihre Abhängigkeiten von der Quell-Wiki in die Ziel-Wiki manuell kopieren, um sie zu verwenden.
Vorlagen erfordern oft CSS oder andere Vorlagen, sodass Benutzer häufig Probleme haben, Vorlagen von einem Wiki in ein anderes zu kopieren. Die folgenden Schritte sollten für die meisten Vorlagen funktionieren.
MediaWiki Code
Wenn Sie Importrechte (insbesondere importupload) für das neue Wiki haben:
- 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:
- Gebe den Namen der Vorlage in das große Textfeld ein, z. "Vorlage:Willkommen". Achte besonders auf Großschreibung und Sonderzeichen – wenn der Vorlagenname nicht genau richtig ist, wird der Export möglicherweise trotzdem ausgeführt, aber die .xml-Datei enthält nicht die erwarteten Daten.
- Wähle das Kästchen "Inklusive Vorlagen".
- Wähle in dem Kästchen "Nur die aktuelle Version der Seite exportieren".
- Klicke auf Seiten exportieren.
- Gehe im neuen Wiki auf Special:Import und lade dort die .xml-Datei hoch.
Falls man keine Importrechte auf dem neuen Wiki hat:
- Gehe zu der Vorlage, die du aus dem ursprünglichen Wiki kopieren möchtest. Gehe zur Bearbeitungsseite und kopiere den gesamten Wikitext.
- Gehe im neuen Wiki zu der Seite mit dem gleichen Namen wie die kopierte Vorlage. Klicke auf Erstellen/Bearbeiten und füge den kopierten Wikitext ein. Verlinke in der Bearbeitungszusammenfassung jeder Vorlage zur Zuordnung auf die Originalseite.
- Zurück im Original-Wiki im Bearbeitungsfenster, unterhalb des Bearbeitungsfeldes, sehe dir die Liste der
Folgende Seiten werden auf dieser Seite inkludiert:an. Befolge für jede aufgeführte Vorlage diese Anweisungen. Tu dies auch für jede Vorlage, die von einer dieser Vorlagen verwendet wird, und so weiter.
Dadurch wird der gesamte erforderliche Code kopiert, was für einige Vorlagen ausreicht.
Beachte, dass nur Seitenelemente, die beim Rendern der Seite ausgewertet werden, exportiert werden, d.h. Unterseiten der Dokumentation werden dabei nicht exportiert.
Wenn es nicht funktioniert, suche auch nach roten Links, die unter Folgende Seiten werden auf dieser Seite inkludiert: unterhalb des Bearbeitungsfeldes aufgeführt sind.
Wenn es welche gibt, wiederholen Sie die obigen Schritte auch für diese und kopieren auch den Code in die Module.
Nachdem du die Vorlage und alle verknüpften Vorlagen erfolgreich aus dem anderen Wiki importiert hast, bearbeite sie, um die Anpassungen an dein Wiki anzupassen. Zum Beispiel, um ein Logo zu ändern, überflüssige Kategorien oder rote Links zu entfernen.
Erweiterungen
Eine häufig in Vorlagen verwendete Erweiterung ist ParserFunctions. Besuche die Seite Erweiterung:ParserFunktionen und prüfe, ob eine der dort aufgeführten Funktionen in den von Ihnen kopierten Vorlagen verwendet wird. Wenn ja, musst du die ParserFunctions-Erweiterung installieren. Um es zu installieren, benötigst du Systemadministrator-Zugriff auf den Server deiner MediaWiki-Installation.
Eine weitere Abhängigkeit, die in Vorlagen verwendet werden kann, insbesondere in Wikipedia, ist Lua. {{#invoke: }} im Vorlagencode zu haben, ist ein gutes Zeichen dafür.
Falls es verwendet wird, musst du die Scribunto-Erweiterung installieren, und der Systemadministratorzugriff ist ebenfalls erforderlich.
Auf dieser Seite findest du weitere Anweisungen zur Installation und Verwendung der Erweiterung.
CSS und JavaScript-Code
Neben dem MediaWiki-Code verwenden viele Vorlagen CSS und einige verlassen sich auf JavaScript, um vollständig zu funktionieren. Wenn sich die kopierten Vorlagen nicht wie erwartet verhalten, kann dies die Ursache sein. Um das erforderliche CSS und JavaScript in dein Wiki zu kopieren, benötigst du normalerweise Administratorrechte, da du Systemmeldungen im Namensraum "MediaWiki:" bearbeitest.
- Suchen Sie nach der Verwendung von CSS-Klassen (Text wie
class="foobar") im Vorlagetext. Wenn diese Klassen inMediaWiki:Common.cssoderMediaWiki:Vector.cssauf dem ursprünglichen Wiki erscheinen, kopieren Sie diese Klassen aufMediaWiki:Common.cssauf dem neuen Wiki und überprüfen Sie, ob die Vorlage jetzt in Ordnung ist. - Wenn die kopierte Vorlage noch nicht so funktioniert wie erwartet, überprüfen Sie, ob es Code in
MediaWiki:Common.jsoderMediaWiki:Vector.jsauf dem ursprünglichen Wiki gibt. Wenn ja, können Sie versuchen, es aufMediaWiki:Common.jsauf dem neuen Wiki zu kopieren. Normalerweise ist es eine gute Idee, nur Code aus vertrauenswürdigen Quellen zu kopieren und den Code zu durchsuchen, um die relevanten Teile zu identifizieren und auszuwählen. Vielleicht finden Sie Kommentare, die als Hinweise dienen können, um zu erkennen, wie jedes Teil funktioniert.
Weiterleitung
Wenn eine Seite eine Weiterleitung als Vorlage verwendet, wird die Weiterleitung vor der Verarbeitung der Vorlage aufgelöst und stattdessen das Ziel verwendet. Dies funktioniert nicht, wenn das Ziel nicht existiert (eine kaputte Weiterleitung) oder selbst eine Weiterleitung (eine doppelte Weiterleitung) ist.
Eine Seite, die nur eine andere Seite als Vorlage enthält, könnte wie eine Umleitung aussehen, aber es gibt mehrere Unterschiede zwischen ihnen:
- In der Kopfzeile des Ergebnisses wird der Titel der Seite angezeigt, von der es stammt.
- Keine „Weitergeleitet von“-Nachricht wird angezeigt.
- Schaltflächen wie „Bearbeiten“, „Beobachten“, „Diskussion“, „Versionsgeschichte“, „Was hierher verlinkt“ und „Zuletzt geändert“ verweisen auf die entsprechende Seite. Um auf die Zielseite zuzugreifen, verwenden Sie einen Abschnittsbearbeitungslink und navigieren Sie von dort aus weiter.
- Sofern keine ‚‘'includeonly'‚‘ und/oder ‚‘'noinclude-Tags'‚‘ verwendet werden, hat die verweisende Seite dieselben Kategorien wie die Zielseite.
- „Doppelte Weiterleitungen“ funktionieren, wenn eine oder beide von ihnen eine Art von Pseudo-Weiterleitung sind.
Parserfunktionen
MediaWiki unterstützt auch Parser-Funktionen, die ähnlich wie Vorlagen funktionieren, jedoch einer etwas anderen Syntax folgen:
- Parser-Funktionen verwenden einen ":" anstelle des ersten "|"
- Eine Bearbeitungsseite zeigt keine auf dieser Seite verwendeten Parserfunktionen an.
- Es gibt keine Funktion „Links auf diese Seite“, mit der Parser-Funktionen die Seiten identifizieren können, auf denen sie verwendet werden.
- Parser-Funktionsvorlagen akzeptieren im Allgemeinen keine benannten Parameter, daher haben Gleichheitszeichen in der Regel keine besondere Bedeutung. Zum Beispiel:
{{ #if: not blank | x=abc }}givesx=abc
Siehe auch
Allgemeine Template-Verwendung
- Manual:Expr parser function syntax
- Help:Substitution
- w:Help:Template
- Manual:Advanced templates – beschreibt noch fortgeschrittenere Techniken wie dynamische Template-Aufrufe und variable Parameternamen
- Help:Multiple-instance templates – über die Verwendung mehrerer Instanzen derselben Vorlage auf einer Seite.
- Manual:Newlines and spaces#Automatic newline
Spezielle Konstrukte, die in Vorlagen verwendet werden
- Hilfe:Magische Wörter – ausgefallene Sachen, die du in einigen Vorlagen finden kannst
- Hilfe:Erweiterung:ParserFunktionen – zusätzliche ausgefallene Steuerfunktionen wie #if und #switch
- Help:Parserfunktionen in Vorlagen – Anleitung zur Verwendung von Parser-Funktionen in Vorlagen
- Hilfe:TemplateData
- Hilfe:Erweiterung:ParserFunktionen
- Erweiterung:Scribunto
Andere einschlägige Informationen
- Hilfe:ExpandTemplates
- Help:Externe Suchen – ein Beispiel für einen speziellen Anwendungsfall einer Vorlage
- Manual:Importing Wikipedia infoboxes tutorial
- Extension:PageTemplates
- Manual:Erstellen von Seiten mit vorausgefülltem Text – Verwendung von Templates als Textanfang für eine Seite
- Hilfe:Transklusion – Einbettung von Seiten aus Namespaces außer
Template: - Manual:Template limits
- Hilfe:Links auf diese Seite
- Special:Mostlinkedtemplates – zeigt die am häufigsten verwendeten Vorlagen
- Special:Unusedtemplates – zeigt Vorlagen ohne Verwendung an (obwohl sie ersetzt werden können)
- Handbuch:$wgEnableScaryTranscluding – verwenden von Vorlagen aus anderen Wikis
- w:Wikipedia:Template namespace
- w:WP:Anatomy of a template
- w:Wikipedia:Transclusion costs and benefits
- Manual:Parser.php
- Help:Erweiterung:TemplateSandbox – zum Anzeigen der Änderungen an einer Vorlage, während diese an anderer Stelle gerendert wird
- Handbuch:HTML-Vorlagen
Externe Links
- Miraheze-Vorlagen-Repository – MediaWiki-Vorlagen zur allgemeinen Verwendung.