Extension:TemplateData/de

Die Erweiterung TemplateData stellt den Tag und eine API zur Verfügung, die es Redakteuren ermöglicht zu bestimmen, wie die Templates aufgerufen werden sollen. Diese Informationen sind als schön formatierte Tabelle für die Endbenutzer und als JSON-API verfügbar. Dadurch können andere Programme (z. B. VisualEditor) Schnittstellen für die Arbeit mit Templates und ihren Parametern erstellen. Siehe für eine detaillierte Hilfe.

Bearbeitung von Daten
Die TemplateData-Erweiterung funktioniert, indem ein -Tag im Wikitext einer Vorlagenseite definiert wird (optional kann es auch von einer anderen Seite transkludiert werden). Dies ist so konzipiert, dass es mit dem in vielen Wikis üblichen Layout kompatibel ist, bei dem die Vorlagendokumentation auf einer separaten Seite eingebunden wird (ist aber nicht erforderlich). Der Inhalt des -Tags muss gültiges JSON im unten beschriebenen Format sein; beachten Sie, dass alle Beschreibungen im Klartext sein müssen (innerhalb der Vorlagendaten wird kein Wikitext akzeptiert).

Wenn ein -Block auf einer Seite enthalten ist, führt die TemplateData-Erweiterung beim Speichern der Seite die folgenden Prüfungen durch:


 * 1) Der Inhalt muss gültiges JSON sein;
 * 2) Jedes Element innerhalb der JSON-Struktur muss vom erwarteten Typ sein, wie unten angegeben (z. B. Objekt, Array oder Primitiv); und
 * 3) Für die Elemente, die eine bestimmte Liste möglicher Werte haben (z. B.  ), muss der Wert im JSON-Objekt einem dieser Werte entsprechen.

If any of these checks fails, the server will not be permitted saving and an error message will be displayed above the edit page.

For autovalue items, bug 2700 prevents  from working in any template that is added inside a, including  and  tags. The TemplateData block will save correctly, but the resulting wikitext will not be parsed correctly when the template is used.

Beachten Sie, dass Sie nicht  anstelle von  verwenden können.

Format
Nachfolgend sehen Sie eine visualisierte Version der JSON-Daten, wie sie auf der Vorlagenseite definiert und von -Tags umgeben sind. Die formale Spezifikation ist im TemplateData-Repository verfügbar. Die neueste Version finden Sie in Specification.md.

TemplateData-Objekt
Das TemplateData-Objekt ist ein "JSON-Wurzelelement", das in einem -Element auf der Vorlagenseite enthalten ist.

InterfaceText (string or object)
A free-form plain-text string (i.e. no wikitext or HTML) in the content-language of the wiki, or an object containing those strings keyed by language code.

The default value for all InterfaceText fields is.

String type
If it is a string, it must contain a non-localized string in the content language of the local wiki.

Object type
If it is an object, the object must have this mapping:

Beispiel
An example TemplateData structure as specified within wikitext on a template page.

Below is how the above example would be displayed on the template page:

{   "description": "Label unsigned comments in a conversation.", "params": { "user": { "label": "User's name", "type": "wiki-user-name", "required": true, "description": "User name of person who forgot to sign their comment.", "aliases": ["1"] },       "date": { "label": "Date", "suggested": true, "description": { "en": "Timestamp of when the comment was posted, in YYYY-MM-DD format." },           "aliases": ["2"], "autovalue": "" },       "year": { "label": "Year", "type": "number" },       "month": { "label": "Month", "inherits": "year" },       "day": { "label": "Day", "inherits": "year" },       "comment": { "required": false }   },    "sets": [ {           "label": "Date", "params": ["year", "month", "day"] }   ],    "maps": { "ExampleConsumer": { "foo": "user", "bar": ["year", "month", "day"], "quux": [ "date", ["day", "month"], ["month", "year"], "year" ]       }    } }

API
See the generated help at Special:ApiHelp/templatedata. A sample invocation (formatted for human readability) is:

This returns the template data for Template:Cite web. The  block for this template is on its transcluded template documentation page, en:Template:Cite web/doc.

Additions and changes to JSON as received from the API
The JSON structure provided in response to an API HTTP get request is significantly different than that which is defined in the  block. In response to the API request, extension TemplateData makes the following changes to the JSON object:


 * Adds two wrapping objects:
 * An overall Pages Object containing one or more Page Objects
 * An object with a numeric key: a Page Object
 * Additions/changes to the actual TemplateData Object
 * Add the  key with the name of the page from which the data was requested (e.g. "Template:Cite web").
 * Add the  key
 * Change all TemplateText occurrences that are just strings to objects with a single key for the current wiki's Wikipedia language code
 * Remove all  keys.
 * Add all properties from parameter from which an inheritance is defined which are not superseded by explicitly defined keys in the inheritor's Parameter Object.
 * Add default values for all keys in each Parameter Object which have not been explicitly defined or inherited.

Example of JSON object provided by API
The response to an API request for the TemplateData structure in the Example section (above) can be seen:
 * In HTML format: https://www.mediawiki.org/w/api.php?action=templatedata&titles=Extension:TemplateData&format=jsonfm
 * As delivered by the API: https://www.mediawiki.org/w/api.php?action=templatedata&titles=Extension:TemplateData

Siehe auch

 * – user interface for selecting and inserting templates' wikitext, based on their TemplateData.
 * GitHub: jeblad/TemplateData – alternate version with some Lua functionality.
 * Translatable template