Extension:TemplateData
![]() Stav rozšíření: stabilní |
|
---|---|
![]() |
|
Zavádění | Tag , API |
Popis | Umožňuje ukládat, načítat a vizualizovat informace o šablonách |
Napsal(i) | Timo Tijhof, Moriel Schottlender, James Forrester, Trevor Pascal, Bartosz Dziewoński, Marielle Volz, ... |
Nejnovější verze | 0.1.2 (Průběžné aktualizace) |
Zásady kompatibility | Vydání snímků následuje MediaWiki. Hlavní vývojová větev není zpětně kompatibilní. |
MediaWiki | 1.25+ |
PHP | 5.4+ |
Změny v databázi | nedělá |
Licence | GNU General Public License 2.0 nebo pozdější |
Zdrojový kód | |
|
|
<templatedata> |
|
Přeložte rozšíření TemplateData, používá-li lokalizaci z translatewiki.net | |
Problémy | Otevřené úkoly · Nahlásit chybu |
Rozšíření TemplateData zavádí značku <templatedata>
a API, které společně umožňují editorům určit, jak mají být šablony vyvolány.
Tato informace je k dispozici jako formátovaná tabulka pro koncové uživatele a jako JSON API, které umožňuje jiným systémům (např. VisualEditor) vytvářet rozhraní pro práci se šablonami a jejich parametry.
Podrobnou nápovědu najdete v Nápověda:TemplateData .
Instalace
- Stáhněte soubor/y a vložte je do adresáře pojmenovaného
TemplateData
ve vaší složceextensions/
. - Na konec vašeho souboru LocalSettings.php přidejte řádek s následujícím kódem:
wfLoadExtension( 'TemplateData' );
- Hotovo – Přejděte na stránku Special:Version vaší wiki, a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.
Úpravy dat
Rozšíření TemplateData funguje tak, že ve wikitextu šablony stránky je definována značka <templatedata>
(volitelně může být také přenesena z jiné stránky).
Toto je navrženo tak, aby bylo kompatibilní s běžným rozvržením, které má mnoho wiki při předávání dokumentace k šablonám ze samostatné stránky (není to však nutné).
Tento obsah značky <templatedata>
musí být platný JSON ve formátu popsaném níže. Všimněte si, že všechny popisy musí být ve formátu prostého textu (v datech šablony není akceptován žádný wikitext).
Je-li na stránce zahrnut blok <templatedata>
, provede rozšíření TemplateData při ukládání stránky následující kontroly:
- Obsah musí být platný JSON;
- Každá položka ve struktuře JSON musí být očekávaného typu, jak je uvedeno níže (např. Objekt, pole nebo primitiv); a
- U položek, které mají specifikovaný seznam možných hodnot (např.
params.yourParameterName.type
), musí hodnota v objektu JSON odpovídat jedné z těchto hodnot.
Pokud některá z těchto kontrol selže, server nebude moci ukládat a nad editační stránkou se zobrazí chybová zpráva.
U položek s automatickým přidáním bug 2700 zabraňuje práci subst:
v jakékoli šabloně přidané uvnitř <tag>
, včetně tagů <ref>
a <gallery>
.
Blok TemplateData se uloží správně, ale výsledný wikitext nebude při použití šablony správně analyzován.
Všimněte si, že nemůžete použít {{#tag:templatedata}}
místo <templatedata>
.
Formát
Níže je vizualizovaná verze dat JSON, jak je definována na stránce šablony uzavřené značkami <templatedata></templatedata>
. Formální specifikace je k dispozici v repozitáři TemplateData. Nejnovější verzi najdete na Specification.md.
Objekt TemplateData
Objekt TemplateData je kořenový prvek JSON uzavřený v prvku <templatedata>
na stránce šablony.
Klíč | Typ | Popis |
---|---|---|
description
|
InterfaceText nebo null
|
Stručný popis šablony. Musí to být prostý text. Po vyplnění může být zobrazen jako titulek při úpravě jedné šablony a možná ve výsledcích vyhledávání, když si uživatelé vyberou jednu z mnoha. Výchozí hodnota je null .
|
params
|
Objekt obsahující Param objects | Objekt, který mapuje každý název parametru šablony na odpovídající Param object popisující vlastnosti tohoto parametru. |
paramOrder
|
Pole obsahující řetězce názvů parametrů | Logické pořadí, ve kterém by se měly parametry zobrazovat. Pole obsahuje každý klíč parametru přesně jednou. Každý řetězec musí být platným klíčem v objektu params .
|
sets
|
Pole obsahující Nastavení objektů |
Pole obsahující specifikace sady. Sada je skupina parametrů, které by měly být použity společně. Výchozí nastavení je []. Všimněte si, že funkce sets je stále ve vývoji.
|
format
|
řetězec, buď inline nebo block
|
Jak by mělo být uspořádáno zobrazení wikitextu šablony. Výchozí nastavení je inline . Další vlastní formáty viz #Custom_formats.
|
maps
|
Mapový objekt | Objekt, který mapuje zjednodušené jméno spotřebitele třetí strany dat šablony (tj. Citoid, Special:MyLanguage/Wikidata atd.), Na objekt, který zase mapuje jméno parametru spotřebitele na jeden nebo více odpovídajících názvů parametrů šablony. |
Param objekt
Klíč | Typ | Výchozí | Popis | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
label |
InterfaceText | null |
(Velmi) krátký název parametru. Zkuste zachovat méně než 20 znaků. | ||||||||||||||||||||||||||||
description
|
InterfaceText | null
|
Stručný popis parametru, aby uživatelé věděli, které mají vybrat ze seznamu možností. | ||||||||||||||||||||||||||||
required
|
boolean | false
|
Parametr je vyžadován pro to, aby šablona fungovala (true, pokud musí být zadán tento parametr). | ||||||||||||||||||||||||||||
suggested
|
boolean | false
|
Parametr je navržen pro šablonu, aby byla užitečná (true, pokud měl by být tento parametr uveden). | ||||||||||||||||||||||||||||
deprecated |
booleovský nebo řetězec | false |
Parametr je zastaralý. Hodnota může být řetězec instrukcí poskytujících uživateli návod, co místo toho lze udělat, nebo může být jednoduše true .
| ||||||||||||||||||||||||||||
aliases |
Řetězce obsahující pole | [] |
Seznam přezdívek (aliases). Alias je alternativní název parametru, který lze použít namísto (nikoli vedle) primárního názvu. Aliasy nejsou dokumentovány v samostatném objektu Parameter. Pokud potřebují více informací, měly by být ve svém vlastním majetku označeny jako "deprecated" (zastaralé). | ||||||||||||||||||||||||||||
default |
InterfaceText | null |
Výchozí hodnota použitá šablonou, není-li parametru nebo jeho popisu přiřazena žádná hodnota. | ||||||||||||||||||||||||||||
autovalue |
řetězec | null |
Dynamicky generovaná výchozí hodnota ve wikitextu, jako je dnešní datum nebo jméno editujícího uživatele. Bude často zahrnovat náhradu wikitextu, jako je {{subst:CURRENTYEAR}} .
| ||||||||||||||||||||||||||||
example
|
InterfaceText | null
|
Příklad textu parametru, který uživatelům pomůže vyplnit správnou hodnotu. | ||||||||||||||||||||||||||||
type |
řetězec | "unknown" |
Typ parametru pro (soft) typ hinting. Jeden z:
| ||||||||||||||||||||||||||||
inherits |
řetězec | žádný nahrazený |
Klíč názvu jiného parametru (musí to být platný klíč v objektu params ). Aktuální parametrový objekt zdědí vlastnosti od zadaného objektu parametrů, přičemž místní vlastnosti potlačí zděděné.
|
Nastavení objektu
Klíč |
Objekt nebo primitivní typ |
Popis |
---|---|---|
label
|
InterfaceText | (Velmi) krátký název sady parametrů. Zkuste zachovat méně než 20 znaků. |
params
|
Pole řetězců | Jeden nebo více názvů parametrů, které mají být v sadě zahrnuty (každý musí být platným klíčem v objektu params ). Parametr může být ve více sadách. Ne každý parametr musí být v sadě.
|
Mapový objekt
Klíč | Typ | Výchozí | Popis |
---|---|---|---|
jméno spotřebitele | objekt | {} | Objekt, který mapuje jméno spotřebitele na objekt, který zase mapuje jméno parametru spotřebitele na jeden nebo více odpovídajících parametrů parametrů šablony.
Názvy parametrů šablon mohou být zadány buď jako řetězec (jedno jméno), pole řetězců (několik jmen) nebo pole polí řetězců (několik sad názvů). Každý z těchto řetězců musí být platným klíčem v objektu Specifický parametr šablony může být ve více mapách a může být použit v hodnotách více klíčů v dané mapě, ale ne každý parametr šablony musí být v mapě. Stručný příklad z Template:Cite_news#TemplateData anglické Wikipedia ilustruje strukturu objektu map. { "proveit": { "main": "title", "textarea": [ "quote" ] }, "citoid": { "title": "title", "url": "url", "publisher": "publisher", "publicationTitle": "work", "date": "date", "ISSN": [ "issn" ], "ISBN": [ "isbn" ], "contributor": "others", "author": [ [ "first", "last" ], [ "first2", "last2" ], [ "first9", "last9" ] ], "editor": [ [ "editor-first", "editor-last" ] ] } } |
Text rozhraní (řetězec nebo objekt)
Volný textový řetězec prostého textu (tj. Žádný wikitext nebo HTML) v jazyce obsahu wiki nebo objekt obsahující tyto řetězce klíčované kódem jazyka.
Výchozí hodnota pro všechna textová pole rozhraní je null
.
Typ řetězce
Pokud se jedná o řetězec, musí obsahovat nealokalizovaný řetězec v jazyce obsahu místní wiki.
Typ objektu
Pokud se jedná o objekt, musí mít toto mapování:
Klíč | Typ | Popis |
---|---|---|
Kód jazyka Wikipedia | řetězec | Lokalizovaný řetězec pro použití na Wikipedii odpovídající danému kódu jazyka. |
Příklad mapování objektu:
Klíč | Hodnota |
---|---|
"en" | "Welcome to Wikipedia" |
"de" | "Willkommen bei Wikipedia" |
"fr" | "Bienvenue sur Wikipédia" |
"nl" | "Welkom op Wikipedia" |
"it" | "Benvenuti su Wikipedia" |
"es" | "Bienvenidos a Wikipedia" |
"ru" | "Добро пожаловать в Википедию" |
Příklad
Příklad struktury TemplateData, jak je uvedeno ve wikitextu na stránce šablony.
<templatedata>
{
"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": "{{subst:#time:Y-m-d}}"
},
"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"
]
}
}
}
</templatedata>
Níže je uveden příklad, který by se zobrazil na stránce šablony:
Label unsigned comments in a conversation.
Parameter | Description | Type | Status | |
---|---|---|---|---|
User's name | user 1 | User name of person who forgot to sign their comment. | User | required |
Date | date 2 | Timestamp of when the comment was posted, in YYYY-MM-DD format.
| Unknown | suggested |
Year | year | no description | Number | optional |
Month | month | no description | Number | optional |
Day | day | no description | Number | optional |
comment | comment | no description | Unknown | optional |
API
Podívejte se na vygenerovanou nápovědu na Special:ApiHelp/templatedata. Ukázka vyvolání (formátovaná pro čitelnost lidmi) je:
Tím se vrátí data šablony pro Šablona:Citovat web.
Blok <templatedata>...</templatedata>
pro tuto šablonu je na stránce s dokumentací o přenesené šabloně, en:Template:Cite web/doc.
Přírůstky a změny JSON přijaté z API
Struktura JSON poskytovaná v reakci na požadavek API HTTP get se výrazně liší od struktury definované v bloku <templatedata>...</templatedata>
.
V reakci na požadavek API provede rozšíření TemplateData následující změny objektu JSON:
- Přidá dvě obtékání objektů:
- Celkově objekty stránek obsahující jeden nebo více objektů stránek
- Objekt s numerickým klíčem: stránka objektu
- Přídavky nebo změny skutečného TemplateData objektu
- Přidejte klíč názvu
title
s názvem stránky, ze které byla požadována data (např. "Template:Cite web"). - Přidejte klíč
sets
- Změňte všechny výskyty TemplateText, které jsou pouhými řetězci, na objekty s jediným klíčem pro aktuální kód jazyka Wikipedia
- Odstraňte všechny klíče
inherits
.- Přidejte všechny vlastnosti z parametru, ze kterého je definována dědičnost a které nejsou nahrazeny explicitně definovanými klíči v Parameter Object dědicem.
- Přidejte výchozí hodnoty pro všechny klíče v každém Parameter Object, které nebyly explicitně definovány nebo zděděny.
- Přidejte klíč názvu
Vizualizované rozdíly v objektu JSON TemplateData dodané API
| ||||||
|
Klíč | Typ | Popis |
---|---|---|
title
|
řetězec | Název stránky šablony (např. "Template:Cite web"). Tento klíč není součástí struktury JSON na stránce šablony. Je přidán do struktury pomocí softwaru MediaWiki na cestě k doručení přes API. |
sets
|
Pole obsahující nastavení objektů | Pole obsahující specifikace sady. Sada je skupina parametrů, které by měly být použity společně. Pokud na stránce šablony neexistuje, přidá se jako struktura do rozhraní poskytovaného API jako prázdné pole. |
Klíč | Typ | Popis |
---|---|---|
label |
InterfaceText | Přeloženo do InterfaceText objektu, pokud již není v tomto formátu. |
required |
boolean | Pokud není definován, přidá se výchozí hodnota false. |
description |
InterfaceText nebo null |
Pokud je definován jako řetězec, převeden na InterfaceText objekt. Pokud není definován, přidává se klíč s hodnotou null .
|
deprecated |
booleovský nebo řetězec | Pokud není definován, přidá se výchozí hodnota false. |
aliases |
Pole řetězců | Pokud není definován, je přiřazeno výchozí prázdné pole (tj. []). |
default |
řetězec | Pokud není definován, je přiřazena výchozí hodnota "". |
type |
řetězec | Pokud není definován, je přiřazena výchozí hodnota "unknown". |
inherits |
(odstraněno) | Tento klíč je odstraněn a jsou přidány všechny zděděné klíče. Klíče definované pro aktuální parametr mají přednost a všem klíčům, které nejsou definovány ani na aktuálním parametru, ani na klíči, od kterého zdědí, je dána výchozí hodnota. |
Klíč | Objekt nebo primitivní typ |
Popis |
---|---|---|
Object (obsahující lokalizované řetězce podle kódu jazyka Wikipedia) Pokud pole TemplateData na stránce šablony obsahuje řetězec, nikoli objekt s lokalizovanými řetězci, MediaWiki jej převede do objektu InterfaceText s řetězcem přiřazeným názvu klíče zdroje Wikipedia Kód jazyka Wikipedia. Výchozí hodnota pro všechna pole InterfaceText je null .
| ||
(Kód jazyka Wiki) | řetězec | Lokalizovaný řetězec pro použití na Wikipedia odpovídající Kódu jazyka Wikipedia. |
Příklad objektu JSON poskytovaného API
Odpověď na žádost API o strukturu TemplateData v části Příklad (výše) lze vidět:
Konfigurace
Proměnná | Výchozí | Popis |
---|---|---|
$wgTemplateDataUseGUI
|
true
|
Experimentální dialogové rozhraní pro úpravu templatedata JSON |
Související odkazy
- Extension:TemplateWizard – uživatelské rozhraní pro výběr a vložení wikitextu šablon, na základě jejich $dat.
- GitHub: jeblad/TemplateData – alternativní verze s některými funkcemi Lua.
- Translatable template
This extension is being used on one or more Wikimedia projects. This probably means that the extension is stable and works well enough to be used by such high-traffic websites. Look for this extension's name in Wikimedia's CommonSettings.php and InitialiseSettings.php configuration files to see where it's installed. A full list of the extensions installed on a particular wiki can be seen on the wiki's Special:Version page. |