Extensión:TemplateStyles
![]() Estado de lanzamiento: estable |
|
---|---|
Implementación | Etiqueta , ContentHandler , Gancho |
Descripción | Permite cargar hojas de estilo CSS sanitizado desde una plantilla. |
Autor(es) | |
Última versión | Continuous updates |
Política de compatibilidad | Lanzamientos de screenshots junto con MediaWiki. Master no es compatible con versiones anteriores. |
MediaWiki | 1.30+ |
PHP | 7.3+ |
Licencia | GNU Licencia Pública general 2.0 o posterior |
Descarga | |
|
|
<templatestyles src=... /> |
|
Descargas trimestrales | 989 (Ranked 1st) |
Wikis públicos que lo utilizan | 1,977 (Ranked 199th) |
Traduce la extensión TemplateStyles si está disponible en translatewiki.net | |
Asuntos | Tareas abiertas · Reportar un bug |
La extensión introduce una etiqueta de <templatestyles>
para especificar que la hoja de estilos debería cargarse desde una página wiki. The extension allows only a safe subset of CSS syntax stored in embeddable style pages. This is powered by the css-sanitizer library.
Poniéndolas en una plantilla permite a la plantilla tener estilos personalizados sin tener que ponerlos en MediaWiki:Common.css .
Para instrucciones sobre cómo usar la extensión como un editor en un wiki, véase Help:TemplateStyles .
Uso
Primero, la página CSS tiene que ser creada. De forma predeterminada cualquier subpágina en el espacio de nombre de Plantilla con un título con terminación en ".css" será creada con el content model de "CSS sanitizado" si no contiene algún error de sintaxis.
El conjunto de espacios de nombre puede ser ajustado con $wgTemplateStylesNamespaces
, o Special:ChangeContentModel puede ser usado en cualquier página.
Luego, en el wikitexto de la plantilla, añade la etiqueta <templatestyles src="..." />
para cargar los estilos.
El CSS guardado usando el modelo de contenido "CSS sanitizado" debe cumplir con estrictos requerimientos de validación: CSS inválido, reglas irreconocibles y propiedades o valores de una propiedad irreconocibles o no soportados no pueden ser guardados. Si el código CSS inválido es guardado de todas formas, las construcciones ofensivas se eliminarán cuando el código CSS se envíe al navegador.
El valor del atributo src
en la etiqueta es el título de la página, de manera predeterminada al espacio de nombre Plantilla.
(Esto se puede cambiar a través de $wgTemplateStylesDefaultNamespace
.)
Por ejemplo, <templatestyles src="Example/styles.css" />
cargará la página "Template:Example/styles.css".
Esto fallará si esa página no existe o tiene otro modelo de contenido que no sea "CSS sanitizado".
Los estilos se pueden definir dentro de la página utilizando el parámetro opcional wrapper
para la etiqueta, p. ej. <templatestyles src="Example/styles.css" wrapper="div.example" />
abarcaría los estilos cargados a cualquier <div class="example">
dentro del contenido analizado principal.
Se puede utilizar cualquier secuencia de selector simple de CSS para el parámetro wrapper
.
Esto está pensado para permitir comparar lado por lado las versiones en vivo y sandbox de una plantilla.
Use of sanitized CSS is tracked like transclusion of templates and will show up as a transclusion on Special:WhatLinksHere .
Advertencias
- Styles added by TemplateStyles are scoped into
.mw-parser-output
to avoid tampering with the user interface outside of the main parsed content.
- To use TemplateStyles to style something like w:MediaWiki:Protectedpagetext, you would need to enclose the message's contents in
<div class="mw-parser-output">...</div>
.
- To use TemplateStyles to style something like w:MediaWiki:Protectedpagetext, you would need to enclose the message's contents in
- The styles should be written to target specific CSS classes, and anything that generates elements with those classes should also be sure to include the styles themselves rather than relying on some other template to do so.
- Styles included by a template can currently affect content on the page outside of the content generated by that template, but this ability may be removed in the future and should not be relied upon.
(See discussion from phab:T155813#2996589 and in phab:T176272.)
- Including styles on a template that affects contents outside of that template will cause those styles not to be applied when editing a section that doesn't contain that template. Example: including styles on an info box 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 does not support CSS variables, see phab:T320322.
- TemplateStyles allows a few non-standardized CSS properties.
Requests to support additional properties should be filed in Phabricator in the css-sanitizer and TemplateStyles projects.
- Requests should include links to standards-track documents (e.g., on w3.org) describing the syntax of the properties being requested and an analysis of current browser support for the properties (e.g., a link to a caniuse.com page about the properties).
- Vendor-prefixed properties (e.g. anything starting with
-webkit-
,-moz-
, or-ms-
) are likely to be declined if they're not needed for modern browsers.
- Vendor-prefixed properties (e.g. anything starting with
@font-face
rules must use afont-family
prefixed with "TemplateStyles".
This should largely prevent redefining fonts used elsewhere in the document.
- To target styles based on skins, use a selector such as
body.skin-vector .myClass
; specification of thebody
element is required and must be followed by a descendant combinator (i.e. the space).
Other classes on the body
or html
elements may be targeted in the same manner. See phab:T197617. 1.32+
Installation
- Descarga y extrae los archivos en un directorio denominado «
TemplateStyles
» dentro de la carpetaextensions/
.
Developers and code contributors should install the extension from Git instead, using:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateStyles - Cuando se efectúa la instalación desde Git, hay que ejecutar Composer para que se instalen las dependencias de PHP; para este efecto, ejecute
composer install --no-dev
en el directorio de la extensión. (ver task T173141 para complicaciones potenciales) - Añade el siguiente código en la parte final de tu archivo LocalSettings.php :
wfLoadExtension( 'TemplateStyles' );
- Configure as required.
- Hecho – Navega a Special:Version en el wiki para verificar que la extensión se haya instalado correctamente.
Instalación Vagrant:
- Si se utiliza Vagrant , instala con
vagrant roles enable templatestyles --provision
Configuration
parameter | default | comment |
---|---|---|
$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" => [
"<.>"
],
]
|
PCRE regular expressions to match allowed URLs for various types of external references.
Keys are external reference types, and values are arrays of regular expressions (including delimiters) to match allowed URLs. Current external reference types are:
|
$wgTemplateStylesNamespaces
|
[ NS_TEMPLATE => true ]
|
Namespaces in which to set the "CSS expurgado" content model for titles ending in ".css".
Enabling this for 2 (User) or 8 (MediaWiki) is a bad idea, as it will conflict with the normal CSS files in those namespaces. |
$wgTemplateStylesPropertyBlacklist
|
[]
|
Properties to blacklist in CSS style rules.
The TemplateStylesPropertySanitizer hook allows for finer-grained control. |
$wgTemplateStylesAtRuleBlacklist
|
[]
|
At-rules to blacklist in stylesheets.
The TemplateStylesStylesheetSanitizer hook allows for finer-grained control. |
$wgTemplateStylesUseCodeEditor
|
true
|
Whether to enable Extensión:CodeEditor for the "CSS expurgado" content type. |
$wgTemplateStylesAutoParseContent
|
true
|
If true, the "CSS expurgado" content model will be added to $wgTextModelsToParse if the CSS content model is already present in that array.
If false, add |
$wgTemplateStylesMaxStylesheetSize
|
102400
|
Maximum size (in bytes) of a stylesheet. null for no limit.
|
$wgTemplateStylesDefaultNamespace
|
NS_TEMPLATE
|
The default namespace for the src attribute of the <templatestyles> tag.
|
Other dependencies
$wgTidyConfig
should be configured to use no tidying or RemexHtml.
If used with any of the Raggett drivers, a <templatestyles />
tag in the middle of a paragraph (including in an inline template) will cause tidy to break the paragraph at that point.
The other drivers have not been tested for this issue.
Potential errors
It may help to enable $wgShowExceptionDetails in your LocalSettings.php
to determine if you are experiencing any of the errors below.
Class 'Wikimedia\CSS\Parser\Parser' not found
- This means a required library has not been installed. The error may come up when attempting to import a wiki CSS page or when changing the content model of a page to "sanitized-css". This was common in the past due to a bug in the extension distributor; shouldn't happen anymore.
Import failed: The content model 'sanitized-css' is not registered on this wiki.
- Happens when you try to import a wiki page created via TemplateStyles, but TemplateStyles is not installed on your wiki.
See also
- Help:TemplateStyles
- css-sanitizer - used for the sanitization of the CSS.
- phab:T483 "RfC: Allow styling in templates" (about possibly deploying this extension on Wikimedia wikis)
- phab:T56864 "ResourceLoader: Implement support for LESS in wiki modules (user and site), supporting e.g. MediaWiki:Common.less"
- phab:T155813 "Decide on storage and delivery method for TemplateStyles CSS"
- It’s now easier to craft content for mobile devices: Responsive web design at the Wikipedia scale on the Wikimedia Blog.
- Extension:TemplateStylesExtender
Esta extensión está siendo usada en uno o más proyectos de Wikimedia. Esto significa probablemente que la extensión es estable y funciona lo suficientemente bien como para ser usada en sitios con gran cantidad de visitas. Puedes buscar el nombre de esta extensión en los archivos CommonSettings.php e InitialiseSettings.php de Wikimedia para ver dónde se instala. Encontrarás la lista completa de extensiones instaladas en un wiki en particular en la página Special:Version del wiki. |
Esta extensión está incluida en los siguientes anfitriones/granjas wiki y/o paquetes: No se trata de una lista oficial. Algunas granjas/hosts wiki y/o paquetes pueden tener disponible esta extensión aunque no estén listados aquí. Siempre compruébelo con su anfitrión o granja wiki para confirmarlo. |