Extension:TemplateStyles
Stav rozšíření: stabilní |
|
|---|---|
| Implementace | Značka, ContentHandler, Háček |
| Popis | Načte upravené CSS styly ze šablony. |
| Autoři | |
| Nejnovější verze | Průběžně aktualizováno |
| Zásady kompatibility | Vydání snímků současně s MediaWiki. Hlavní vývojová větev není zpětně kompatibilní. |
| MediaWiki | 1.30+ |
| PHP | 7.3+ |
|
|
<templatestyles src=... /> |
|
| Licence | GNU General Public License 2.0 nebo novější |
| Stáhnout | |
| Přeložte rozšíření TemplateStyles, používá-li lokalizaci z translatewiki.net | |
| Problémy | Otevřené úkoly · Nahlásit chybu |
TemplateStyles je rozšíření parseru, které umožňuje uživatelům ukládat vlastní CSS kód na wiki stránky a vkládat tyto styly do článků pomocí tagu <templatestyles>.
Rozšíření umožňuje pouze bezpečnou podmnožinu syntaxe CSS uloženou na stránkách stylů, které lze vložit.
Toto je poháněno knihovnou css-sanitizer.
Editorům se doporučuje přidávat styly pro šablonu prostřednictvím TemplateStyles, protože to umožňuje stejným uživatelům upravovat šablonu i její styly a styly se tak načítají pouze v případě potřeby (ve srovnání s přidáváním do celého webu MediaWiki:Common.css).
Pokyny k použití rozšíření jako editoru na wiki naleznete v článku Nápověda:TemplateStyles.
Použití
Nejprve je nutné vytvořit stránku CSS.
Ve výchozím nastavení bude jakákoli podstránka v oboru názvů šablon s názvem končícím na ".css" vytvořena s příponou Vyčištěné CSS content model, pokud neobsahuje žádné syntaktické chyby.
Sadu jmenných prostorů lze upravit pomocí $wgTemplateStylesNamespaces, nebo lze na libovolné stránce použít Special:ChangeContentModel.
Pak do wikitextu šablony přidejte tag <templatestyles src="..." /> pro načtení stylů.
CSS uložený pomocí modelu obsahu Vyčištěné CSS musí splňovat přísné požadavky na platnost: neplatný CSS, nerozpoznaná pravidla at-rules a nerozpoznané nebo nepodporované vlastnosti či hodnoty vlastností nelze uložit.
Pokud je nějakým způsobem uložen neplatný CSS kód, budou problematické konstrukty odstraněny při výstupu CSS kódu do prohlížeče.
Hodnota atributu src na tagu je název stránky, standardně se používá jmenný prostor šablony.
(Tuto výchozí hodnotu lze změnit pomocí $wgTemplateStylesDefaultNamespace.)
Například <templatestyles src="Example/styles.css" /> načte stránku "Template:Example/styles.css".
Toto se nezdaří, pokud daná stránka neexistuje nebo má jiný model obsahu než Vyčištěné CSS.
Styly lze v rámci stránky vymezit pomocí volitelného parametru wrapper v tagu, např. <templatestyles src="Example/styles.css" wrapper="div.example" /> by vymezil styly načtené na libovolný parametr <div class="example"> v hlavním analyzovaném obsahu.
Pro parametr wrapper lze použít libovolnou jednoduchou selektorovou sekvenci CSS.
Toto má umožnit vedlejší porovnání živých a sandboxových verzí šablony.
Použití upraveného CSS je sledováno stejně jako vyloučení šablon a zobrazí se jako vyloučení při hodnotě Special:WhatLinksHere.
Varování
- Styly přidané metodou TemplateStyles jsou vymezeny v rámci kategorie
.mw-parser-output, aby se zabránilo manipulaci s uživatelským rozhraním mimo hlavní analyzovaný obsah.- Chcete-li použít TemplateStyles ke stylování něčeho jako w:MediaWiki:Protectedpagetext, museli byste obsah zprávy uzavřít do proměnné
<div class="mw-parser-output">...</div>.
- Chcete-li použít TemplateStyles ke stylování něčeho jako w:MediaWiki:Protectedpagetext, museli byste obsah zprávy uzavřít do proměnné
- Styly by měly být napsány tak, aby cílily na konkrétní třídy CSS, a cokoli, co generuje prvky s těmito třídami, by mělo také zahrnovat samotné styly, spíše než se spoléhat na nějakou jinou šablonu.
- Styly zahrnuté v šabloně mohou v současné době ovlivnit obsah na stránce mimo obsah generovaný danou šablonou, ale tato možnost může být v budoucnu odebrána a nemělo by se na ni spoléhat. (Viz diskuse z phab:T155813#2996589 a v phab:T176272.)
- Zahrnutí stylů do šablony, které ovlivňují obsah mimo danou šablonu, způsobí, že se tyto styly nepoužijí při úpravě sekce, která danou šablonu neobsahuje. Příklad: Pokud přidáte styly do informačního pole, které ovlivňují všechny tabulky na stránce, při úpravě sekce, která dané info pole neobsahuje, nebudou tyto tabulky při zobrazení náhledu dané sekce stylizovány.
- TemplateStyles nepodporuje definování CSS proměnných, viz phab:T320322 (CSS proměnné definované jinde, například v MediaWiki:Common.css, lze odkazovat z TemplateStyles).
- TemplateStyles umožňuje několik nestandardizovaných CSS vlastností. Požadavky na podporu dalších vlastností by měly být zasílány jako zařazeny do Phabricatoru v projektech css-sanitizer a TemplateStyles.
- Žádosti by měly obsahovat odkazy na dokumenty týkající se standardů (např. na w3.org) popisující syntaxi požadovaných vlastností a analýzu aktuální podpory vlastností prohlížeči (např. odkaz na stránku o vlastnostech na caniuse.com).
- Vlastnosti s předponou dodavatele (např. cokoli začínajícího na
-webkit-,-moz-nebo-ms-) budou pravděpodobně odmítnuty, pokud nejsou potřeba pro moderní prohlížeče.
- Pravidla
@font-facemusí používat předponufont-familys předponou "TemplateStyles". To by mělo do značné míry zabránit předefinování písem použitých jinde v dokumentu. - Pro cílení stylů na základě vzhledů použijte selektor, například
body.skin-vector .myClass. Specifikace prvkubodyje vyžadována a musí být následována následným kombinátorem (tj. mezerou). Stejným způsobem lze cílit i na další třídy na prvcíchbodynebohtml. Podívejte se na stránku phab:T197617. 1.32+
Instalace
- Stáhněte soubor/y a vložte je do adresáře pojmenovaného
TemplateStylesve vaší složceextensions/.
Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:cd extensions/ git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateStyles
- Při instalaci z Gitu spusťte Composer pro instalaci závislostí PHP zadáním
composer install --no-devv adresáři rozšíření. (Vyskytnou-li se nějaké komplikace, podívejte se na T173141.) - Na konec vašeho souboru LocalSettings.php přidejte následující kód:
wfLoadExtension( 'TemplateStyles' );
- Vyžaduje nastavení v konfiguračním souboru.
Dokončeno – Přejděte na stránku Special:Versionvaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.
Instalace Vagrant:
- Pokud používáte Vagrant, instalujte s těmito parametry
vagrant roles enable templatestyles --provision
Konfigurace
| Parametr | Výchozí | Komentář |
|---|---|---|
$wgTemplateStylesAllowedUrls
|
[
"audio" => [
"<^https://upload\\.wikimedia\\.org/wikipedia/commons/>"
],
"image" => [
"<^https://upload\\.wikimedia\\.org/wikipedia/commons/>"
],
"svg" => [
"<^https://upload\\.wikimedia\\.org/wikipedia/commons/[^?#]*\\.svg(?:[?#]|$)>"
],
"font" => [],
"namespace" => [
"<.>"
],
]
|
Regulární výrazy PCRE pro porovnávání povolených URL adres pro různé typy externích odkazů.
Klíče jsou externí typy odkazů a hodnoty jsou pole regulárních výrazů (včetně oddělovačů), které odpovídají povoleným URL adresám.
Pokud existuje pojmenovaná skupina pro zachycení s názvem
|
$wgTemplateStylesNamespaces
|
[ NS_TEMPLATE => true ]
|
Jmenné prostory, ve kterých se má nastavit model obsahu Vyčištěné CSS pro názvy končící na ".css".
Povolení této možnosti pro 2 (Uživatel) nebo 8 (MediaWiki) je špatný nápad, protože by to vedlo ke konfliktu s běžnými CSS soubory v těchto jmenných prostorech. |
$wgTemplateStylesPropertyBlacklist
|
[]
|
Vlastnosti, které se mají zakázat v pravidlech stylu CSS.
Háček TemplateStylesPropertySanitizer umožňuje jemnější kontrolu. |
$wgTemplateStylesAtRuleBlacklist
|
[]
|
Pravidla pro zakázání přístupu (AT-rules) ve stylech.
Háček TemplateStylesStylesheetSanitizer umožňuje jemnější kontrolu. |
$wgTemplateStylesUseCodeEditor
|
true
|
Zda povolit Extension:CodeEditor pro typ obsahu Vyčištěné CSS.
|
$wgTemplateStylesAutoParseContent
|
true
|
Pokud je hodnota true, bude model obsahu Vyčištěné CSS přidán k $wgTextModelsToParse, pokud je model obsahu CSS již v daném poli přítomen.
Pokud je hodnota false, přidejte do tohoto pole ručně hodnotu |
$wgTemplateStylesMaxStylesheetSize
|
102400
|
Maximální velikost (v bajtech) stylového listu. null pro neomezený počet.
|
$wgTemplateStylesDefaultNamespace
|
NS_TEMPLATE
|
Výchozí jmenný prostor pro atribut src tagu <templatestyles>.
|
Další potřebné knihovny
Proměnná $wgTidyConfig by měla být nakonfigurována tak, aby se nepoužívalo žádné úklidové operace, nebo RemexHtml.
Pokud se použije s jakýmkoli ovladačem Raggett, tag <templatestyles /> uprostřed odstavce (včetně vložené šablony) způsobí, že příkaz tidy v tomto místě zalomí odstavec.
Ostatní ovladače nebyly na tento problém testovány.
Možné chyby
Abyste zjistili, zda se u vás nevyskytuje některá z níže uvedených chyb, může vám pomoci v poli LocalSettings.php povolení $wgShowExceptionDetails.
Class 'Wikimedia\CSS\Parser\Parser' not found- To znamená, že požadovaná knihovna nebyla nainstalována. Chyba se může objevit při pokusu o import stránky wiki CSS nebo při změně modelu obsahu stránky na "
sanitized-css". Toto se v minulosti stávalo kvůli chybě v distributoru rozšíření. Již by se to stávat nemělo. - Řešením tohoto problému by obvykle bylo rozšíření Composer.
- To znamená, že požadovaná knihovna nebyla nainstalována. Chyba se může objevit při pokusu o import stránky wiki CSS nebo při změně modelu obsahu stránky na "
Import failed: The content model 'sanitized-css' is not registered on this wiki.- Stane se to, když se pokusíte importovat stránku wiki vytvořenou pomocí TemplateStyles, ale TemplateStyles není na vaší wiki nainstalován.
Související odkazy
- Nápověda:TemplateStyles
- css-sanitizer – používá se k sanitizaci CSS.
- phab:T483 "RfC: Povolení stylování v šablonách" (o možném nasazení tohoto rozšíření na wikiny Wikimedie)
- Requests for comment/Allow styling in templates
- phab:T155813 "Rozhodněte se o způsobu ukládání a doručování pro TemplateStyles CSS"
- phab:T56864 "ResourceLoader: Implementujte podporu pro LESS v modulech wiki (uživatelských a webových), např. s podporou MediaWiki:Common.less"
- Nyní je snazší vytvářet obsah pro mobilní zařízení: Responzivní webdesign v měřítku Wikipedie na blogu Wikimedie.
- Rozšíření:TemplateStylesExtender
| Toto rozšíření se používá na jednom nebo více projektech Wikimedia. Pravděpodobně to znamená, že rozšíření je stabilní a funguje dostatečně dobře, aby jej mohly používat weby s tak vysokou návštěvností. Vyhledejte tento název rozšíření v konfiguračních souborech CommonSettings.php a InitialiseSettings.php Wikimedie, abyste viděli, kde je nainstalováno. Úplný seznam rozšíření nainstalovaných na konkrétní wiki lze vidět na stránce wiki Special:Version. |
| Toto rozšíření je zahrnuto v následujících wiki farmách/hostitelích a/nebo balíčcích: |
- Stable extensions/cs
- Tag extensions/cs
- ContentHandler extensions/cs
- Hook extensions/cs
- CodeEditorGetPageLanguage extensions/cs
- CodeMirrorGetMode extensions/cs
- ContentHandlerDefaultModelFor extensions/cs
- ParserFirstCallInit extensions/cs
- GPL licensed extensions/cs
- Extensions in Wikimedia version control/cs
- All extensions/cs
- Extensions bundled with MediaWiki 1.44/cs
- Extensions requiring Composer with git/cs
- Extensions used on Wikimedia/cs
- Extensions included in BlueSpice/cs
- Extensions included in Canasta/cs
- Extensions included in Fandom/cs
- Extensions included in Miraheze/cs
- Extensions included in MyWikis/cs
- Extensions included in ProWiki/cs
- Extensions included in ShoutWiki/cs
- Extensions included in Telepedia/cs
- Extensions included in Weird Gloop/cs
- Extensions included in wiki.gg/cs
- Metadata/cs
- CSS/cs
