Extension:TemplateStyles

This page is a translated version of the page Extension:TemplateStyles and the translation is 97% complete.
Other languages:
Bahasa Indonesia • ‎English • ‎Türkçe • ‎français • ‎polski • ‎中文 • ‎日本語
Manuel des extensions MediaWiki
OOjs UI icon advanced.svg
TemplateStyles
État de la version : stable
Implémentation Balise , ContentHandler , Accroche
Description Permet à parir d'un modèle, de charger des feuilles de styles CSS normalisées (sanitized CSS).
Auteur(s)
Dernière version Continuous updates
Politique de compatibilité Snapshots releases along with MediaWiki. Master is not backwards compatible.
MediaWiki 1.31+
PHP 5.5+
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
  • $wgTemplateStylesNamespaces
  • $wgTemplateStylesDisallowedProperties
  • $wgTemplateStylesDisallowedAtRules
  • $wgTemplateStylesUseCodeEditor
  • $wgTemplateStylesDisable
  • $wgTemplateStylesAutoParseContent
  • $wgTemplateStylesMaxStylesheetSize
  • $wgTemplateStylesAllowedUrls
<templatestyles src=... />
Traduire l’extension TemplateStyles sur translatewiki.net

Vérifier la matrice des utilisations et des versions.

Problèmes Tâches ouvertes · Signaler un bogue

L'extension TemplateStyles introduit une balise <templatestyles> pour spécifier qu'une feuille de style doit être chargée d'une page wiki. En l'insérant dans un modèle celui-ci pourra avoir des styles personnalisés sans avoir à les mettre dans MediaWiki:Common.css .

Voir Aide:TemplateStyles pour les instructions concernant l'utilisation de l'extension en tant qu'éditeur sur un wiki.

Utilisation

D'abord la page CSS doit être créée. Par défaut toute sous-page de l'espace de noms Template ayant un titre qui se termine par « .css » sera créée avec le CSS normalisé content model si elle ne contient pas d'erreurs de syntaxe.

L'ensemble des espaces de noms peut être ajusté avec $wgTemplateStylesNamespaces, ou Special:ChangeContentModel peut être utilisé sur toute page. Puis dans le wikicode du modèle, ajoutez la balise <templatestyles src="..." /> pour charger les styles.

Le CSS savegardé en utilisant le modèle de contenu CSS normalisé correspond strictement aux règles de validité : le CSS non valide, les règles 'at' non reconnues, et les propriétés, ou les valeurs de proriété non reconnues ou non prises en charge, ne pourront pas être sauvegardées. Si du CSS non valide est néanmoins sauvegardé, les constructions en faute seront retirées lorsque le CSS sera envoyé au navigateur.

La valeur de l'attribut src sur la balise est le titre de la page, par défaut dans l'espace de noms Template. Par exemple, <templatestyles src="Example/styles.css" /> va charger la page « Template:Example/styles.css ». Ceci va échouer si cette page n'existe pas ou si elle a un modèle de contenu différent de CSS normalisé.

Les styles peuvent être étendus dans la page en utilisant le paramètre facultatif wrapper dans la balise, par exemple <templatestyles src="Example/styles.css" wrapper="div.example" /> étend les styles chargés dans n'importe quel <div class="example"> à l'intérieur du contenu principal analysé. Toute séquence de sélection CSS simple peut être utilisée pour le paramètre wrapper. Ceci est fait pour permettre la comparaison côte à côte de la version courante d'un modèle avec celle du bac à sable.

L'utilisation du CSS normalisé se fait comme la transclusion des modèles, et apparaît comme une transclusion sur Special:WhatLinksHere .

Mises en garde

  • Les styles ajoutés par TemplateStyles sont étendus dans .mw-parser-output pour éviter de falsifier l'interface utilisateur en dehors du contenu principal analysé.
    • Pour utiliser TemplateStyles pour mettre en forme quelque chose comme w:MediaWiki:Protectedpagetext, vous devrez inclure le contenu du message dans <div class="mw-parser-output">...</div>.
  • Les styles doivent être écrits pour cibler des classes CSS spécifiques, et tout ce qui génère des éléments avec ces classes doit s'assurer d'inclure également les styles lui-même plutôt que de s'appuyer sur un autre modèle pour le faire.
    • Les styles inclus par un modèle peuvent actuellement affecter le contenu de la page en dehors du contenu généré par ce modèle, mais cette capacité peut être supprimée à l'avenir et ne doit pas être invoquée.
    • Including styles on a template that affects contents outside of that template, will cause those styles to not be applied when editing a section that doesn't contain that template. Example: including styles on an infobox that affect all tables of the page, when editing a section that doesn't contain the infobox, those tables won't be styled when previewing that section.
  • TemplateStyles autorisent certaines propriétés CSS non standard. Les demandes pour prendre en charge des propriétés supplémentaires doivent être faites dans les projets css-sanitizer et TemplateStyles de Phabricator.
    • Les demandes doivent inclure des liens vers des documents de suivi des normes (par exemple sur w3.org) décrivant la syntaxe des propriétés demandées, et une analyse de la prise en charge du navigateur actuel pour les propriétés (par exemple, un lien vers une page caniuse.com à propos des propriétés).
    • Les propriétés préfixées par le fournisseur (par exemple, tout élément commençant par -webkit-, -moz- ou -ms-) sont susceptibles d'être refusées si elles ne sont pas nécessaires pour les navigateurs modernes.
  • Les règles @font-face doivent utiliser un font-family préfixé avec TemplateStyles. Ceci devrait grandement empêcher de redéfinir les fontes utilisées partout dans le document.
  • Pour cibler des styles basés sur les habillages, utilisez un sélecteur tel que body.skin-vector .myClass; la spécification de l'élément body est nécessaire et doit être suivie d'un combinateur descendant (par exemple 'espace'). Les autres classes sur les éléments body ou html peuvent être ciblées de la même manière. 1.32+

Installation

  • Si vous utilisez Vagrant , installez avec vagrant roles enable templatestyles --provision
Installation manuelle
  • Téléchargez et placez le(s) fichiers (s) dans un répertoire appelé TemplateStyles dans votre dossier extensions/.
  • Seulement lorsque vous installez à partir de Git, exécutez Composer pour installer les dépendances PHP, en entrant composer install --no-dev après vous être positionné dans le répertoire de l'extension. (Voir tâche T173141 pour des complications potentielles.)
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php :
    wfLoadExtension( 'TemplateStyles' );
    
  • Configurez selon les besoins.
  •   Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.
Pour disposer d'un interface utilisateur plus agréable, avec une mise en valeur de la syntaxe et un éditeur de code faisant l'indentation automatique, installez les extensions suivantes :

Configuration

Paramètres de configuration
Paramètre Valeur par défaut Commentaire
$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" => [
        "<.>"
    ],
    "css" => []
]
expressions régulières compatibles Perl (PCRE) correspondant aux URLs autorisées pour les différents types de références externes.

Les clés sont des types de références externes , les valeurs sont des tableaux d'expressions régulières (comprenant les délimiteurs) correspondant aux URLs autorisées. Les types de références externes actuels sont :

audio
fichier son, pour les propriétés cue du module CSS Speech.
image
fichier image, pour les propriétés telles que background.
svg
fichier SVG, pour les modules CSS Masking et Filter effects.
font
pour les src de @font-face.
namespace
pour @namespace.
css
pour @import.
$wgTemplateStylesNamespaces
[ NS_TEMPLATE => true ]
Espaces de noms dans lesquels initialiser le modèle de contenu CSS normalisé pour les titres se terminant par .css.

Activer ceci pour 2 (utilisateur) ou 8 (MediaWiki) est une mauvaise idée, car cela produira un conflit avec les fichiers CSS normaux dans ces espaces de noms.

$wgTemplateStylesPropertyBlacklist
[]
propriétés à mettre en liste noire en règles de style CSS.

L'accroche TemplateStylesPropertySanitizer permet un contrôle plus fin.

$wgTemplateStylesAtRuleBlacklist
[]
règles 'at' à mettre en liste noire dans les feuilles de style.

Accroche TemplateStylesStylesheetSanitizer pour un contrôle plus fin.

$wgTemplateStylesUseCodeEditor
true
indique s'il faut activer Extension:CodeEditor pour le type de contenu CSS normalisé.
$wgTemplateStylesAutoParseContent
true
S'il est à true, le modèle de contenu CSS normalisé sera ajouté à $wgTextModelsToParse si le modèle de contenu CSS est déjà présent dans ce tableau.

S'il est à false, ajoutez 'sanitized-css' manuellement à ce tableau si vous voulez que les catégories et équivalents soient analysés syntaxiquement en dehors de la page CSS.

$wgTemplateStylesMaxStylesheetSize
102400
taille maximale (en octets) d'une feuile de style; illimité si null .

Autres dépendances

$wgTidyConfig doit être configuré pour ne pas utiliser le rangement ou RemexHtml. Si utilisé avec l'un des pilotes Raggett, une balise <templatestyles /> au milieu d'un paragraphe (y compris dans un modèle en ligne) provoquera la rupture du paragraphe à ce point. Les autres pilotes n'ont pas été testés pour ce problème.

Erreurs possibles

Si vous rencontrez une erreur durant l'importation de pages d'un autre wiki par exemple, vous pouvez essayer d'activer $wgShowExceptionDetails dans votre LocalSettings.php pour déterminer si vous êtes dans le cas des erreurs ci-dessous.

  • Class 'Wikimedia\CSS\Parser\Parser' not found
    Cette erreur peut apparaître lorsque l'on essaie d'importer une page CSS du wiki ou lorsque l'on modifie le modèle de contenu d'une page avec le CSS normalisé. Il existe depuis le 16 avril 2020, un bogue ouvert dans le distributeur d'extensions qui nécessite que composer install --no-dev soit exécuté dans le sous-répertoire de l'extension même lorsque celle-ci n'est pas installée à partir de Git. Voir Topic:Ukv6pdo96a8qfur2 pour les détails.
  • Import failed: The content model 'sanitized-css' is not registered on this wiki.
    Certains obtiennent cette erreur sur les wikis lors de l'import de pages. Cette extension fournit ce modèle de contenu. Installer TemplateStyles pour corriger votre importation.

Voir aussi