Hilfe:Vorlagen/TemplateData/JSON
Auf dieser Hilfeseite wird inhaltlich detailierter auf die Verwendung von JSON im Zusammenhang mit der Vorlage TemplaeDate eingenagen. Es findet Anwendung in der Vorlagenprogrammierung und dient sowohl dem Zweck die Vorlagendokumentation ansprechender zu gestalten und die Darstellung konsistent zu halten, zudem wird es durch den VisualEditor genutzt um die Eingabemaske für das Einfügen von Vorlagen zu ermöglichen.
Diese Seite stellt eine Vertiefung des Themas dar und richtet sich primär an Personen, die sich mit der Programmierung von Vorlagen beschäftigen, oder ein Interesse daran haben, die Technik hinter Wikonia besser zu verstehen und zu erlernen. Einige Abschnitte dieser Hilfeseite setzen ein gewissen Grundverständnis für Syntax und Programmierung im Allgemeinen voraus. Es ist uns leider nicht möglich eine vollumfängliche Anleitung so anzubieten, dass sie allgemeinverständlich bleibt. Wo immer es uns möglich ist, haben wir über die Belegfunktion weitere Informationen und nützliche Seiten verlinkz, die einen tieferen Einblick in das Thema ermöglichen, um sich Grundwissen anzueignen.
- Kurzinformation zu JSON
- Die JavaScript Object Notation, ist ein textbasiertes, strukturiertes Datenformat, dass in der Programmierung genutzt wird, um Daten zwischen verschiedenen Sofwareanwendungen auszutasuchen. Die grundlegende Struktur aus Datenpaaren und die einfache Syntax machen eine schnelle Adaption und Entwicklung von Schnittstellen möglich. Darüberhinaus ist seine reduzierte und konsistente Notation dennoch für den Entwickler nachvollziehbar und kann auch ohne Tools ausgelesen werden.[1]
Aufbau des TemplateData-Blocks[Bearbeiten | Quelltext bearbeiten]
Der TemplateData-Block, der durch die Tags <templatedata>…</templatedata> umschlossen wird erwartet als Format ein einziges JSON-Objekt, mit einem strukturierten Afbau. Es werden dabei nicht alle ANgaben vorrausgesetzt, ebenso ist die Reihenfolge nicht zwingend einzuhalten. Die später in den Beispielen auf dieser Seite dargestellte Reihenfolge hat sich derartig etabliert, da das in MediaWiki enthaltene Tool zur Ereugung eines solchen Blocks diese Reihenfolge vorgibt.
Innerhalb des Datenobjekts können folgende Angaben gemacht werden.
| Bezeichner | Typ | Format | Beschreibung |
|---|---|---|---|
description |
optional | InterfaceText bzw. null |
Erschient als kurzer Einleitungstext in der Suchmaske der Vorlagenauswahl. Der Text sollte
|
params |
pflicht | Objekt | Enthält die eigentlihce Parameterinformationen, dabei wird für jeden Parameter ein einzelnes Unter-Objekt definiert.
Für Vorlagen, die keine Parameter beinhalten, ist die Übergabe eines leeren Objekts |
format |
optional | String | Angabe des erwartenden Quelltext-Layouts für die Einbindung. Folgende Angaben sind üblich:
|
maps |
optional | Objekt | Zuätzliches Opjekt um Parameter für weitere Schnittstellen zuordnen zu können. Gegenwärtig gibt es dafür ausschließlich den Anwendungfall durch die Extension Citoid, die für Belegvorlagen genutzt wird. |
paramOrder |
optional | Objekt | Ordungkriterum fpr die Anzeige der Parameter innerhalb des VisualEditors, falls diese von der Reihenfolge der gelisteten Parameter in params abweichen soll. Die Anzeige in der Dokumentation bleibt davon unberührt, dort erfolgt die Anzeige weiterhin nach der Reihenfolge, in der die Parameter innerhalb des Objekts params angegeben wurden.
|
sets |
optional | Array | Array von Objekten, die zu Sets - einer Art Unterformaular zusammengehören. Dies wird gegenwärtig nicht unterstützt.[i] |
JSON-Format allgemein[Bearbeiten | Quelltext bearbeiten]
Der allgemeine Aufbau des JSON-Objekts folgt der Standardfefinition von JSON selbst.
- Das Objekt selbst beginnt steht in einer Geschweiften Klammer
{}. - Jede Zuweisung besteht aus der Komponente, gefolgt von einem Doppelpunkt
:und dem Wert (Value).- Die Namenszuweisung selbst wird als Zeichenketter (String) formatiert, also in gerade, doppelte Anführungszeichen
"..."eingschlossen. - Die Zuweisung eines weiteren Objekts als Wert ist möglich, dieses ist dann wiederum in geschweiften Klammern einzuschließen.
- Jede Zeichenkette muss zwingend mit Anführungszeichen umschlossen sein.
- Die Namenszuweisung selbst wird als Zeichenketter (String) formatiert, also in gerade, doppelte Anführungszeichen
- Wenn nach der Zuweisung des Werts eine neu Zuweisung folgt, muss ein Komma
,gesetzt werden. Auf die letzte Zuweisung innerhalbd es objekts folgt kein weiteres Komma. - Leerzeichen, Tabulatoren und Abstände außerhalb von Zeichenketten werden ignoriert und können zur lesbaren Einrückung genutzt werden.
- Anführungszeichen, die innerhalb einer Zeichenkette auftreten sollen, müssen mit
\"escaped werden. Sonderzeichen, besonders für die Typografie,können genutzt werden, erfordern aber teilweise ebenfalls einen vorangestellten Backskash, oder sollten durch Ihre Unicode-Darstellung ersetzt werden.
InterfaceText[Bearbeiten | Quelltext bearbeiten]
Als InterfaceText wird ein Text verstanden, der im Benutzerinterface des VisualEditors angezeigt wird, wenn eine Vorlage eingefügt wird.
Es sind zwei Datentypen möglich
- Eine Einfache Zeichenkette, die den Beschreibungstext enthält.
- Ein Objekt mit zwei Bestandteilen, wovon der erste jeweils ein Sprachcode ist, der abhängig von der Interface-Sprache angezeigt wird.
- Gängige Sprachcodes sind z. B.
de,de-choderen. - Für die Darstellung in der Dokumentation wird aufgrund des Caches jedoch nur die Standardsprache von Wikonia-Wiki dargestellt, dies kann nur umgangen werden, indem eine komplett eigenständige Unterseite für die Dokumentation in der jeweiligen Sprache angelegt wird, was wir gegenwärtig nicht vorsehen.
- Gängige Sprachcodes sind z. B.
Generell ist die Übersetzung von Wikonia gegenwärtig (Stand 2025) nicht vorgesehen.
Parameter-Objekt[Bearbeiten | Quelltext bearbeiten]
Die Parameter-Definition ist die Hauptaufgabe des gesamten TemplateData-Elements. Für den Bezeichner params wir ein witeres Objekt erwartet, das für jeden definierten Parameter (oder zumindest jeden der Dokumentiert werden soll) einen eigenen Eintrag aufweist.
{ "description": "Heer steht die Beschreibung der Vorlage",
"params": { "Parameter1": { ... Details zu Parameter 1 ... },
"Parameter1": { ... Details zu PArameter 2 ... },
...
}
}
Pro Parameter können eine Vielzahl an möglichen Optionen definiert werden. Die im Beispiel gezeigten Bezeichner Parameter1 und Parameter2 entsprchen dabei den technischen PArameternamen,w ie sie in der Vorlagenprogrammierung vorkomme. Innerhalb der darauf folgenden geschweiften Klammern stehen die restlichen Angaben zum Parameter, welche die eigentliche Steuerung der Eingabemaske für den Visualeditor übernehmen. Alle Angaben sind optional, es ist aber sinnvoll, die Definition des Parameters so spezifisch wie möglich anzubieten, damit Nutzenden der Zugang zur Vorlagennutzung so leicht wie mööglich fällt.
| Bezeichnung | Komponente | Typ | Beschreibung |
|---|---|---|---|
| Bezeichnung | label |
InterfaceTextnull
|
Kennzeichnung bzw. Name des Parameters im Dialogfenster. Solltemöglichst verständlich,aussagekräftig und kurz gehalten werden. |
| Beschreibung | description |
InterfaceTextnull
|
Eine erweiterte Beschreibung, zum Beispiel welchen Einfluss er in der Vorlage hat, oder was genau als Eingabe erwartet wird. |
| Typ | type |
string |
Der „Datentyp“ des Parameterwertes für Gültigkeitsprüfungen und Design des Dialogfensters. Möglich sind:
|
| Erforderlich | required |
boolean | Erfordernis-Parameter
|
| Vorgeschlagen | suggested |
boolean | Erfordernis-Parameter
|
| Veraltet | deprecated |
boolean string |
Erfordernis-Parameter
|
| Beispiel | example |
InterfaceTextnull
|
Mögliche Beispielwerte für den Parameter. |
| Standard | default |
InterfaceTextnull
|
Standardwert, der in der Vorlagenprogrmmierung als Standardwert vorgeesehen wurde. Dieser Hinweis ist rein optisch und hat keine Auswirlungen auf die Vorlage selbst. |
| Werteliste | suggestedvalues |
Array als [ , ]
|
Durch das Array wird in der Benutzeroberfläche mögliche Auswahloptionen anzeigt, das Feld hat dann die Eigenschaften einer Dropdown-Box für den Anwender. |
| Autowert | autovalue |
string | Standardwert, mit dem der bislang leere Vorlagenparameterwert 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.
|
| Aliasse | aliases |
Array |
Liste möglicher Alias-Bezeichnungen, die in der Vorlagenprogrammierung selbst festgelegt wurden. MEist um den Benutzerkomfort zu erhöhen, oder veraltete Parameter weiter zu untersützen. |
| – | inherits |
string | Technischer Name eines Paramter von dem die SPezifikation geerbt wird. Durch das setzen einzelner Werte, kann der vererbte Wert überschrieben werden. |
Erfordernis-Paramer[Bearbeiten | Quelltext bearbeiten]
Mit der Kennzeichnung der Erfordernis eines Parameterwerts, lässt sich festlegen, wie die Oberfläche de VisualEditor den Parameter behandelt und die Darstellung der Dokumentationstabelle aussieht.
Grundsätzlich bestehen hierfür vier Varianten:
| Variante und Farbkennzeichnung | Bool-Wert |
|---|---|
| erforderlich | required
|
| vorgeschlagen | suggested
|
| optional | kein Wert (Standard) |
| veraltet | deprecated
|
Beispiel[Bearbeiten | Quelltext bearbeiten]
Ein einfaches Beispiel für eine imaginäre Vorlage mit dem Namen Wetter, die es so in diesem Wiki nicht gibt.
JSON-Objekt[Bearbeiten | Quelltext bearbeiten]
{
"description": "Unechte Beispielvorlage, um die Definition eines JSON-Objekt zu imitieren. (Das ist übrigens die Bschreibung) ",
"params": {
"aktuell": {
"aliases": [
"1"
],
"label": "Aktuelles Wetter",
"type": "line",
"required": true
},
"temp": {
"label": "Temperatur",
"description": "Aktuelle Temperatur",
"example": "21",
"type": "number",
"suggested": true
},
"symbol": {
"aliases": [
"icon"
],
"description": "Datei für die grafische Unterstützung",
"example": "sonnig.svg",
"type": "wiki-file-name",
"suggested": true,
"autovalue": "wetterfrosch.png"
},
"max": {
"label": "Höchsttemperatur",
"description" : "in Grad Celsuis",
"type": "number"
},
"min": {
"label": "Tiefsttemperatur",
"inherits": "max"
},
"regen": {
"label": "Regenwahrscheinlichkeit",
"deprecated": true
},
"morgen": {
"label": "Vorhersage",
"type": "content",
"deprecated": true,
"suggested": true
}
},
"format": "inline"
}
}
Dokumentationstabelle[Bearbeiten | Quelltext bearbeiten]
Das oben gezeigte BEispiel erzeugt mit der Verwendung der Vorlage {{TemplateData}} die folgende Ausgabe.
| Parameter | Beschreibung | Typ | Status | |
|---|---|---|---|---|
| Aktuelles Wetter | aktuell1 | Einzeiliger Text | erforderlich | |
| Temperatur | temp | Aktuelle Temperatur
| Zahlenwert | vorgeschlagen |
| symbol | symbolicon | Datei für die grafische Unterstützung
| Datei | vorgeschlagen |
| Höchsttemperatur | max | in Grad Celsuis | Zahlenwert | optional |
| Tiefsttemperatur | min | in Grad Celsuis | Zahlenwert | optional |
| Regenwahrscheinlichkeit | regen | Unbekannt | veraltet | |
| Vorhersage | morgen | Wikitext | veraltet | |
morgenErklärung zum Beispiel[Bearbeiten | Quelltext bearbeiten]
In der Tabelle ist folgendes zu beobachten:
- Aliasse
- Die Parameter
aktuellundsymbolhaben jeweils ein definiertes Alias. Der Parameter aktuell wurde durch einen nummerierten (unbenannten) Alias ergänzt, für das Symbol existier noch der Zusatzname Icon.
- Erforderlichkeiten
- Es gibt nur einen Pflichtparameter
aktuell(oder sein Alias1. - Die Parameter
tempundsymbolsind optional, aber vorgeschlagen. regenist komplett optional.- Der Parameter
regenwurde als veraltet gekennzeichnet, ebensomorgen, hier wurde jedoch durch die Zusatzangabe suggested eine Fehlermeldung ausgelöst, erkennbar am roten Rahmen und unterhalb der Tabelle.
- Datentypen
- Es sind verschiedene Datentypen im Einsatz, während der Parameter
regenundefiniert ist.
- Vererbung
Der Parameter min erbt einen Teil seiner Eigenschaften von max, mit Ausnahme seiner Bezeichnung (label)
- Format
- Als Format für die Einbindung in die Seite wurde hier inline, als in einer Zeile festgelegt, dies steht direkt unterhalb der Tabelle, noch vor der Fehlermeldung.
Werkzeuge und Wartung[Bearbeiten | Quelltext bearbeiten]
Vorlagen, die TemplateData zur Verfügung stellen, finden sich
- in der Kategorie:Vorlagen mit TemplateData (Vorlage:), sofern sie die Vorlge {{emplateData}} verwenden, oder manuell einsortiert wurden.
- über Special:PagesWithProp/templatedata lassen sich die Seiten ebenfalls finden
Die Verwendung von TemplateData in dieser Wikipedia wird protokolliert unter:
- Kategorie:Vorlage:mit TemplateData – Besser lesbar und würde keine Weiterleitungen aufzählen; dafür sind momentan zwangsläufig Vorlagenprogrammierung und Dokumentationsseite aufgeführt.
- Die Kategorisierung zählt nur Verwendungen auf, die in {{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.
Code valideren[Bearbeiten | Quelltext bearbeiten]
Neben installierter Entwicklungssoftware (IDE) gibt es noch eine Reihe an Online Tools, die JSON auf syntaktische Korrektheit prüfen können, exemplarisch sind hier ein paar Empfehlungen gelistet:
- json-validate.com – zeigt Fehler übersichtlich an
- jsonlint.com – schlanke Version, die nur validiert
- jsonformatter.curiousconcept.com – mächtigere Toolsammlung die mittels Datenkonverter den Code auch in und aus anderen Scriptsprachen umwandeln kann.
Weitere Informationen[Bearbeiten | Quelltext bearbeiten]
- Vorlage:TemplateData – Kennzeichnung generierter Dokumentationsblöcke
Weitere Informationen[Bearbeiten | Quelltext bearbeiten]
Anmerkungen
- ↑ Die Definition von Sets schadet der Vorlage nicht, da sie aber keine praktische Umsetzung im VisualEditor hat, ist ihr nutzen fraglich und wird demnach nicht empfohlen und wird auf dieser Hilfeseite nicht erläutert.
- ↑ a b c d Technisch gesehen handelt es sich bei Datei, Seite, Vorlage und Benutzer um das gleiche Feld. Die genaue Angabe bestimmt nur, welche Suchmaske im Interface angezeigt wird.
Webseiten und Quellen
- ↑ (25. Jun. 2025): JSON erklärt: Definition, Funktionsweise und Use Cases.. IONOS Digital Guide (abgerufen am 29. Nov. 2025)
[[1]]
