Dieses Hilfeseite vertieft die Realisierung und Syntax von TemplateData. Insbesondere wird die JSON-Struktur dokumentiert, die im Quelltext der Dokumentationsseiten sichtbar wird.
Das in <templatedata>...</templatedata>
eingebettete JSON-Objekt (root) muss mindestens eine Komponente params
haben. Zusätzlich sollte eine kurze Vorlagenbeschreibung mitgeliefert sein.
null
{}
ausreichend für eine parameterlose Vorlage.
block
oder inline
(Standard)"{{_\n| _=_\n}}"
"{{_|_=_}}"
entspricht inline
"{{_\n| _ = _\n}}"
entspricht block
"{{_ |_=_}}"
– vor jeder Pipe ein Leerzeichen, sonst kompakt"\n{{_\n |_=_\n}}"
– Einbindung auf neuer Zeile beginnend, bei jeder Parameterzeile auf neuer Zeile Pipe ein Leerzeichen eingerückt, Zuweisung kompaktcitoid
(siehe Vorlage:Internetquelle), die Citoid-Parameter in Vorlagenparameter transferiert.
Andere als diese fünf Komponenten sind in diesem Objekt auf der Dokumentationsseite nicht erlaubt.
Bei Abfragen über die API wird allerdings eine weitere Komponente zurückgeliefert:
<templatedata>
gebildet.Der InterfaceText ist ein für Menschen lesbarer Text, der in der Vorlagendokumentation angezeigt wird.
Er kann in zwei Varianten auftreten:
de
oder de-ch
oder en
) der entsprechende Text zugeordnet wird.
uselang=
ist hier also wirkungslos.Wie im gesamten JSON-Objekt ist kein Wikitext möglich; auch HTML-Formatierungen werden nicht umgesetzt.
Das Parameter-Objekt ist das Kernstück der Definition.
Die Komponente params
des TemplateData-Objekts ist ein Objekt, bei dem jedem Namen eines Vorlagenparameters eine Einzelspezifikation zugewiesen wird:
{ "description": "Zweck der Vorlage",
"params": { "ParameterA": { ... Einzelspezifikation A ... },
"ParameterB": { ... Einzelspezifikation B ... },
usw. usw.
}
}
Bezeichnung | Komponente | JS-Datentyp | Beschreibung |
---|---|---|---|
Bezeichnung | label |
InterfaceTextnull
|
Eine kurze Beschreibung für den Parameter. Der eigentliche Parametername kann stark abgekürzt oder lediglich eine Nummer sein. Es sollte versucht werden, sich auf zwei Dutzend Zeichen zu beschränken. |
Beschreibung | description |
InterfaceTextnull
|
Eine kurze Erläuterung zum Parameter. |
Typ | type |
string |
Der „Datentyp“ des Parameterwertes (alle Vorlagenparameter sind Zeichenketten) für Gültigkeitsprüfungen. Einer von:
Veraltet, aber weiterhin funktionsfähig sind die folgenden Codes, die baldmöglichst ersetzt werden sollten:
|
Erforderlich | required |
boolean | Status-Parameter
|
Vorgeschlagen | suggested |
boolean | Status-Parameter
|
Veraltet | deprecated |
boolean string |
Status-Parameter
|
Beispiel | example |
InterfaceTextnull
|
Mögliche Beispielwerte für den Parameter. |
Standard | default |
InterfaceTextnull
|
Standardwert, den die Vorlage annimmt, wenn der entsprechende Parameter nicht ausgefüllt wird. Dies ist lediglich eine visuelle Hilfe, d. h. wenn der entsprechende Parameter nicht vom Benutzer ausgefüllt wird und ein default -Wert angegeben ist, wird dieser beim Speichern nicht als Standardwert übernommen, sondern der Parameter bleibt leer.
|
Autowert | autovalue |
string | Standardwert, mit dem der Vorlagenparameter ausgefüllt werden soll, z. B. {{subst:#time:Y-m-d}} , wenn ein Parameter mit dem aktuellen Datum (im Format JJJJ-MM-TT) ausgefüllt werden soll.
|
– | inherits |
string | Name eines anderen Parameters, dessen Spezifikation als Basis für diesen Parameter geerbt werden soll. Zusätzlich angegebene Komponenten überschreiben diese Ausgangswerte. |
Aliasse | aliases |
Array of strings |
Liste von Aliasnamen. Ein Aliasname ist ein in der Vorlagenprogrammierung verwendeter Alternativname, der genauso wirksam ist wie die Standardform. Für einen reinen Aliasnamen wird keine gesonderte Einzelspezifikation angelegt. |
Die Spalte „Bezeichnung“ in der obigen Tabelle gibt den Namen dieses Parameter im eingebauten Vorlagendokumentations-Editor wieder. Falls dort ein "–" steht, kann dieser Parameter über den Editor nicht angegeben werden.
Das Array sets
kann Objekte mit der folgenden Struktur enthalten:
Komponente | Datentyp | Beschreibung |
---|---|---|
label |
InterfaceText | Eine kurze Bezeichnung für den Parametersatz. Es sollte versucht werden, sich auf zwei Dutzend Zeichen zu beschränken. |
params |
Array | Ein Array mit Namen von Parametern in diesem Set. Es muss sich um Bezeichner handeln, die im Parameter-Objekt definiert sind. |
Zurzeit (Sommer 2015) ist noch keine Realisierung in der Benutzeroberfläche des VisualEditor ersichtlich.
:
und dem zugewiesenen Wert."
eingeschlossen werden.{}
einzuschließen."
einzuschließen."
vorkommen, muss es durch \"
escaped werden; ein einzelner \
ist als \\
anzugeben.<templatedata>{"params":{}}</templatedata>
Ein geeigneter Einrückungsstil sollte die Lesbarkeit für Menschen sichern.
Die syntaktische Gültigkeit wird bei der Seitenvorschau überprüft; bei Syntaxfehlern das Feld rot ausgefüllt. Die Technik-Werkstatt hilft weiter.
Zwei einfachere und zwei komplexere Beispiele für die Definition und die Darstellung auf der Dokumentationsseite (Präsentation gegenüber MediaWiki verbessert).
required
(erforderlich)suggested
(vorgeschlagen)deprecated
(veraltet).required = TRUE
und deprecated = TRUE
(„empfohlen“ und „veraltet“) zusammen aus und erzeugen in dieser Kombination eine Fehlermeldung!Das folgende Beispiel soll den Zusammenhang zwischen den Parametern so reduziert wie möglich verdeutlichen:
{{TemplateData|lazy=1|JSON=
{ "description": "Verlinken einer Kategorie auf Wikimedia Commons",
"params": { "1": { "description": "<code>required</code> = '''TRUE'''",
"required": true
},
"2": { "description": "<code>required</code> = ''FALSE''<br>könnte auch weggelassen werden, siehe Parameter 3",
"required": false
},
"3": { "description": "ohne Angabe eines der drei Status-Parameter"
},
"4": { "description": "<code>suggested</code> = '''TRUE'''",
"suggested": true
},
"5": { "description": "<code>deprecated</code> = '''TRUE'''",
"deprecated": true
},
"6": { "description": "<code>deprecated</code> = '''TRUE''' überschreibt<br><s><code>suggested</code> = '''TRUE'''</s>",
"suggested": true,
"deprecated": true
}
}
}
}}
Parameter | Beschreibung | Typ | Status | |
---|---|---|---|---|
1 | 1 | required = TRUE | Unbekannt | erforderlich |
2 | 2 | required = FALSEkönnte auch weggelassen werden, siehe Parameter 3 | Unbekannt | optional |
3 | 3 | ohne Angabe eines der drei Status-Parameter | Unbekannt | optional |
4 | 4 | suggested = TRUE | Unbekannt | vorgeschlagen |
5 | 5 | deprecated = TRUE | Unbekannt | veraltet |
6 | 6 | deprecated = TRUE überschreibtsuggested = TRUE | Unbekannt | veraltet |
6
Der nachstehende Code bewirkt die darunter wiedergegebene Tabelle, wie sie für {{Commonscat}}
benutzt wird. Daraus wird diese für Werkzeuge abrufbare Struktur erzeugt.
{{TemplateData|JSON=
{ "description": "Verlinken einer Kategorie auf Wikimedia Commons",
"params": { "1": { "label": "Commons-Kategorie",
"description": "Die zu verlinkende Commons-Kategorie",
"default": "(Name der aktuellen Seite)",
"type": "wiki-page-name",
"required": false
},
"2": { "label": "Deutscher Name",
"description": "Angezeigter Name der Kategorie auf Deutsch, wenn abweichend",
"type": "string",
"required": false
},
"3": { "label": "Sammlung von …",
"description": "s = „Sammlung von Bildern“",
"default": "Sammlung von Bildern, Videos und Audiodateien",
"type": "string",
"required": false
}
}
}
}}
Parameter | Beschreibung | Typ | Status | |
---|---|---|---|---|
Commons-Kategorie | 1 | Die zu verlinkende Commons-Kategorie
| Seitenname | optional |
Deutscher Name | 2 | Angezeigter Name der Kategorie auf Deutsch, wenn abweichend | Mehrzeiliger Text | optional |
Sammlung von … | 3 | s = „Sammlung von Bildern“
| Mehrzeiliger Text | optional |
Der nachstehende Code bewirkt die darunter wiedergegebene Tabelle (Vorlage:Anker). Hier wird für die wiederholten optionalen Parameter die Komponente "inherits"
genutzt. Daraus wird diese für Werkzeuge abrufbare Struktur erzeugt.
{{TemplateData|JSON=
{ "description": "Linkziel(e) zu einem Abschnitt oder einem Element in dieser Wiki-Seite vereinbaren",
"params": { "1": { "label": "Anker-1",
"description": "Fragmentbezeichner",
"type": "string",
"required": true },
"2": { "label": "Anker-2",
"inherits": "1",
"description": "Weiterer Fragmentbezeichner",
"required": false },
"3": { "label": "Anker-3",
"inherits": "2" },
"4": { "label": "Anker-4",
"inherits": "2" },
"5": { "label": "Anker-5",
"inherits": "2" },
"6": { "label": "Anker-6",
"inherits": "2" }
}
}
}}
Parameter | Beschreibung | Typ | Status | |
---|---|---|---|---|
Anker-1 | 1 | Fragmentbezeichner | Mehrzeiliger Text | erforderlich |
Anker-2 | 2 | Weiterer Fragmentbezeichner | Mehrzeiliger Text | optional |
Anker-3 | 3 | Weiterer Fragmentbezeichner | Mehrzeiliger Text | optional |
Anker-4 | 4 | Weiterer Fragmentbezeichner | Mehrzeiliger Text | optional |
Anker-5 | 5 | Weiterer Fragmentbezeichner | Mehrzeiliger Text | optional |
Anker-6 | 6 | Weiterer Fragmentbezeichner | Mehrzeiliger Text | optional |
Der nachstehende Code bewirkt die darunter wiedergegebene Tabelle (Vorlage:TemplateDataGenerator). Hier wird für die alternative Variante des Sortierungs-Parameters die Komponente "aliases"
genutzt. Daraus wird diese für Werkzeuge abrufbare Struktur erzeugt.
{{TemplateData|JSON=
{ "description": "Erstellt aus der Vorlagenprogrammierung ein Grundgerüst für die Dokumentation der vorkommenden Parameter mittels TemplateData",
"params": { "sort":
{ "label": "Sortierung",
"description": "Alphabetische Sortierung, wenn Ziffer 1 angegeben",
"type": "string",
"required": false,
"default": "0",
"aliases":
}
}
}
}}
Parameter | Beschreibung | Typ | Status | |
---|---|---|---|---|
Sortierung | sort 1 | Alphabetische Sortierung, wenn Ziffer 1 angegeben
| Mehrzeiliger Text | optional |
Der nachstehende Code bewirkt die darunter wiedergegebene Tabelle, in der die Komponente "sets"
verwendet wird. (vorläufig bis deutschsprachiger Ersatz):
{
"description": "Label unsigned comments in a conversation.",
"params": {
"user": {
"label": "Username",
"type": "wiki-user-name",
"required": true,
"description": "User name of person who forgot to sign their comment.",
"aliases":
},
"date": {
"label": "Date",
"description": {
"en": "Timestamp of when the comment was posted, in YYYY-MM-DD format.",
"de": "Zeitpunkt, zu dem der Kommentar geschrieben wurde; im Datumsformat JJJJ-MM-TT."
},
"aliases": ,
"suggested": true
},
"year": {
"label": "Year",
"type": "number"
},
"month": {
"label": "Month",
"inherits": "year"
},
"day": {
"label": "Day",
"inherits": "year"
},
"comment": {
"required": false
}
},
"sets": [
{
"label": "Date",
"params":
}
]
}
Parameter | Beschreibung | Typ | Status | |
---|---|---|---|---|
Username | user 1 | User name of person who forgot to sign their comment. | Benutzer | erforderlich |
Date | date 2 | Zeitpunkt, zu dem der Kommentar geschrieben wurde; im Datumsformat JJJJ-MM-TT. | Unbekannt | vorgeschlagen |
Year | year | Zahlenwert | optional | |
Month | month | Zahlenwert | optional | |
Day | day | Zahlenwert | optional | |
comment | comment | Unbekannt | optional |
Die Verwendung von TemplateData
in dieser Wikipedia wird protokolliert unter:
{{TemplateData}}
eingeschlossen sind. Die Aufzählung der Seiten mit der templatedata-Eigenschaft auf der Spezialseite muss identisch sein mit den Doku-Seiten in der Kategorie.Die syntaktische Gültigkeit des Codes kann vor dem Speichern überprüft werden; in der Seitenvorschau wird entweder die erwartete Tabelle gezeigt oder im Fehlerfall das Feld rot ausgefüllt.
Speziell für JSON-Code eignet sich:
Jeder andere JavaScript-Validierer kann ebenso zur ersten Fehlersuche verwendet werden.
Alternativ zum eingebauten Vorlagendokumentations-Editor:
{{subst:TemplateDataGenerator}}
in die Dokumentationsseite ebenfalls ein Grundgerüst generiert werden.Bei anhaltenden Problemen hilft die Technik-Werkstatt weiter.
Die TemplateData-Verwendung wurde im Frühsommer 2013 weltweit gestartet.
Mittels der API kann zu einer Vorlage die gültige Definition zu einer Vorlage abgefragt werden. Damit stehen sie anderen Software-Werkzeugen zur Verfügung.
Die spezifische API-Syntax ist automatisch generiert abrufbar, aber nicht sehr aussagekräftig.
Ein Aufruf für die durch Software unmittelbar nutzbare Form wäre action=templatedata&titles=Template:Commonscat – in einer menschenfreundlicher formatierten Darstellung siehe oben.
Für das Tag <TemplateData>
sind zurzeit keine eigenen Attribute vorgesehen.
Die Standard-Attribute id= class= style=
werden nicht beanstandet; sind jedoch zurzeit wirkungslos.
Die optische Darstellung der auf der Dokumentationsseite angezeigten Tabelle kann angepasst werden.
Selektor | Element |
---|---|
.mw-templatedata-doc-wrap |
Gesamte Beschreibung |
.mw-templatedata-doc-desc |
Aufgabenbeschreibung |
.mw-templatedata-doc-params |
Tabelle |
.mw-templatedata-doc-param-name |
Parametername |
.mw-templatedata-doc-param-type |
Parametertyp |
.mw-templatedata-doc-muted |
Standardwert |
{{!}}
oder |
– und unbalancierte }}
desgleichen.
{{{Stadt|{{{city|}}}}}}
{{{5|{{{Sonderfall|}}}}}}
city
ein Alias für Stadt
und Sonderfall
ein Alias für den fünften unbenannten Parameter.