Diese Hilfeseite erläutert spezielle Parserfunktionen, mit denen sich in der Programmierung von Vorlagen Kontrollstrukturen realisieren lassen; also von Bedingungen abhängige wenn – dann – sonst.
Alle Parameter und Ergebnisse werden „getrimmt“; führende oder schließende einfache Leerzeichen oder Zeilenumbrüche werden ignoriert.
Funktion | Pflichtparameter | Parameter | |
---|---|---|---|
#if | Bedingung | WennWahr | WennFalsch |
Ergebnis in Abhängigkeit von einer Bedingung.
| |||
Beispiele:
|
Anmerkungen:
0
, nein
, -
oder false
als „falsch“ aufzufassen. Hierfür gibt es faculty@TemplUtl.{{#if: trim | {{{1}}} }}
– Die „Bedingung“ ist immer „wahr“; damit wird WennWahr zum Resultat, und das ist immer getrimmt. Der Hinweis trim
soll den Sinn dieses sinnlosen Konstrukts verdeutlichen.Funktion | Pflichtparameter | Parameter | ||
---|---|---|---|---|
#ifeq | Vergleichswert1 | Vergleichswert2 | WennGleich | WennUngleich |
Ergebnis in Abhängigkeit des Vergleichs zweier Zeichenketten.
| ||||
Beispiel: {{#ifeq: {{{Parole}}} | Emil | Clique | fremd}} → Wenn der Vorlagenparameter {{{Parole}}} den Wert Emil hat, dann ist das Ergebmis Clique , ansonsten fremd . |
Funktion | Pflichtparameter | Parameter | Pflichtparameter | Parameter | |||
---|---|---|---|---|---|---|---|
#switch: | Vergleichswert | Werte | Wert= Ergebnis | Werte | Wert= Ergebnis | … | SonstErgebnis |
Ergebnis in Abhängigkeit von einem Vergleichswert.
| |||||||
Beispiel: {{#switch: {{{Zeichen}}} |A|B|C|D| … X|Y|Z=Großbuchstabe |a|b|c|d| … x|y|z=Kleinbuchstabe |=Leerzeichen |,|;|.|!|?=Satzzeichen |{{{Zeichen}}}=KEIN ZEICHEN ANGEGEBEN |#default=Sonderzeichen }} In Abhängigkeit vom Vorlagenparameter |
Es wird analysiert, ob in einem Wikitext eine Fehlermeldung vorliegt.
Eine Fehlermeldung wird erkannt:
, - die eine Klassenzuweisung
class="duhoc-de error"
enthalten müssen, - wobei
error
mit doppelten Anführungszeichen "
und nicht mit '
(oder ohne) angegeben sein muss, - jedoch weitere durch Leerzeichen abgetrennte Klassenbezeichner im Attributwert vorkommen dürfen.
Solche Fehlermeldungen können in jeder Vorlage generiert werden; viele Elemente der Wiki-Software erzeugen sie ebenfalls.
Funktion Pflichtparameter Parameter #iferror
Wikitext WennFehler WennProblemlos Ergebnis in Abhängigkeit von der Existenz einer Fehlermeldung. - Wikitext wird analysiert.
Es ergeben sich drei Möglichkeiten in Abhängigkeit davon, ob auch WennFehler und WennProblemlos angegeben wurden.
- Nur Wikitext:
- Wenn „Fehlermeldung“ gefunden, dann ist das Ergebnis „nichts“.
- Wenn keine Fehlermeldung gefunden wurde, dann ist das Ergebnis der Wikitext.
- Wikitext und WennFehler:
- Wenn „Fehlermeldung“ gefunden, dann ist das Ergebnis WennFehler.
- Wenn keine Fehlermeldung gefunden wurde, dann ist das Ergebnis der Wikitext.
- Wikitext und WennFehler und WennProblemlos:
- Wenn „Fehlermeldung“ gefunden, dann ist das Ergebnis WennFehler.
- Wenn keine Fehlermeldung gefunden wurde, dann ist das Ergebnis WennProblemlos.
Beispiele: {{#iferror: }}
→ »« {{#iferror: Alles fein.}}
→ »Alles fein.
« {{#iferror: | Problem!}}
→ »Problem!
« {{#iferror: Alles fein. | Problem!}}
→ »Alles fein.
« {{#iferror: | Problem! | einwandfrei}}
→ »Problem!
« {{#iferror: Alles fein. | Problem! | einwandfrei}}
→ »einwandfrei
« {{#iferror: | | einwandfrei}}
→ »« {{#iferror: Alles fein. | | einwandfrei}}
→ »einwandfrei
«
Wenn existiert – #ifexist
Funktion Pflichtparameter Parameter #ifexist
Seitenname WennExistiert WennNicht Ergebnis in Abhängigkeit von der Existenz einer Seite im lokalen Projekt. - Seitenname wird gesucht; fremde Wikis werden nicht betrachtet.
- Mediendateien gelten auch als existent, wenn sie auf Commons liegen und im Namensraum
Media:
gesucht werden, Im Namensraum Datei:
existieren nur lokale Dateibeschreibungsseiten. - WennExistiert ist das Ergebnis, das die Parserfunktion liefern soll, wenn Seitenname existiert. Dies kann auch leer sein.
- WennNicht ist das Ergebnis, das die Parserfunktion liefern soll, wenn Seitenname nicht existiert. Dies kann auch leer sein; allerdings würde dann diese Option komplett weggelassen werden.
Beispiele: {{#ifexist: H:? | Help! | Imagine there is no help}}
→ Help!
für H:? {{#ifexist: H:! | Help! | Imagine there is no help}}
→ Imagine there is no help
für H:!
Der Seitenname wird im Gesamtprojekt wie eine Verlinkung registriert.
- Das hat den Grund, dass zu erwarten ist, dass sich das Ergebnis der Programmierung signifikant verändern soll, wenn eine existierende Seite gelöscht wird, oder aber eine bisher nicht existierende Seite neu angelegt wird.
- Damit wird die diese Konstruktion enthaltende Seite so behandelt, als ob sich eine eingebundene Vorlage verändert hätte: Die im Cache hinterlegte Präsentation wird als ungültig entfernt, und spätestens mit dem nächsten Abruf der Seite unter geänderten Bedingungen neu produziert.
- Anhand der Datenbank-Tabelle Links auf diese Seite weiß der Server, welche Seiten, ihre Inhalte oder Existenz Auswirkungen auf die Darstellung anderer Seiten haben; etwa auch ob Wikilinks in rot oder blau darzustellen sind. Gemäß der Einträge in der Datenbank-Tabelle werden die beeinflussten Seiten neu aufgebaut.
- Es gibt mit phab:T14019 von 2007 Überlegungen aus 2022, in den Tabellen von WhatLinksHere die Abfragen nach Seitenexistenz in einer vierten Spalte gesondert auszuweisen, statt sie gemeinsam mit den Verlinkungen zu verbuchen. Das betriffft jedoch nur die bisherige Aufschlüsselung nach Verlinkung – Seiteneinbindung – Weiterleitung. Änderungen des Status bedürfen auch dann einer Neugenerierung des Gesamtinhalts unter den aktuellen Bedingungen.
#ifexist
gehört zu den „teuren“ Funktionen, von denen pro dargestellter Seite gemäß Vorlagenbeschränkungen insgesamt nur 500 erlaubt sind.
Wenn Ausdruck – #ifexpr
Funktion Pflichtparameter Parameter #ifexpr
Ausdruck WennWahr WennFalsch Ergebnis in Abhängigkeit von einem berechneten Ausdruck. - Ausdruck muss mittels der Parserfunktion
#expr
auswertbar sein. - Wenn Ausdruck einen Wert ungleich
0
liefert, ist das Ergebnis WennWahr. - Wenn Ausdruck den Wert
0
liefert, ist das Ergebnis WennFalsch oder „leer“. - Wenn Ausdruck keine gültige Berechnung ermöglicht, ist das Ergebnis eine Fehlermeldung mit Behandlung wie bei
#expr
.
Beispiele: {{#ifexpr: 1 | Richtig}}
→ Richtig
{{#ifexpr: 0 | Richtig}}
→
{{#ifexpr: 1 | Richtig | Falsch}}
→ Richtig
{{#ifexpr: 0 | Richtig | Falsch}}
→ Falsch
{{#ifexpr: 99 | Richtig | Falsch}}
→ Richtig
{{#ifexpr: -123 | Richtig | Falsch}}
→ Richtig
{{#ifexpr: x | Richtig | Falsch}}
→ Fehler im Ausdruck: Unerkanntes Wort „x“
Und-/Oder-Verknüpfungen
Wenn bei einer der Verknüpfungsvorlagen (Vorlage:Booland, Vorlage:Boolor usw.) die Parameter übergeben werden, dann müssen zunächst ausnahmslos alle Parameterwerte vollständig ausgewertet worden sein, bevor dann die Verknüpfungsvorlage mit all diesen Parameterwerten eingebunden werden kann.
- Das kann zum Problem werden; insbesondere wenn dadurch „teure“ oder sonst performancekritische Auswertungen erforderlich sind.
Intelligenter ist immer der folgende Weg:
- Und:
- Eine Bedingung wird ausgewertet, falls erfolgreich dann die nächste, wenn auch diese erfolgreich dann die nächste usw. Sobald eine Bedingung nicht erfüllt ist, erfolgen auch keine Auswertungen mehr.
- Beispiel:
{{#if: {{A-Vorlage}} | {{#if: {{B-Vorlage}} | }} }}
- Oder:
- Eine Bedingung wird ausgewertet, falls nicht erfolgreich dann die nächste, falls nicht erfolgreich dann die nächste usw. Sobald eine Bedingung erfüllt ist, erfolgen auch keine Auswertungen mehr.
- Es kann ein boolescher Wert
1
für den Erfolgsfall gebildet werden, und das gesamte Oder-Konstrukt liefert danach den Wert 1
oder leer. Dieses Resultat kann dann zur Auswertung der gemeinschaftlichen Ziel-Aktion herangezogen werden. - Beispiel:
{{#if: {{#if: {{A-Vorlage}} | 1 | {{#if: {{B-Vorlage}} | 1 }} }} | }}
Geschichte
Mitte April 2006 wurden (zusammen mit anderen in der Erweiterung für Parserfunktionen) die Kontrollstrukturen verfügbar gemacht. Erst dadurch wurde auch eine Vorlagenprogrammierung im eigentlichen Sinn möglich, während bis dahin nur stumpf Parameterwerte formatiert wurden. Die allerersten Vorlagen hatten noch nicht einmal Parameter gehabt und hießen schlicht „Bausteine“; sie lieferten immer den gleichen Text.
This article uses material from the Wikipedia Deutsch article Kontrollstrukturen, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). Abrufstatistik Der Inhalt ist verfügbar unter CC BY-SA 4.0, sofern nicht anders angegeben. Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki Deutsch (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.