stringtranslate.com

Ayuda:Sustitución

La sustitución es una función mediante la cual, cuando un editor guarda una página, un elemento en el código wiki se reemplaza permanentemente con su valor actual. En particular, se pueden sustituir plantillas y palabras mágicas , como alternativa a la transclusión . La diferencia es que cuando se sustituye una plantilla en una página, su apariencia en esa página ya no se verá afectada por cambios posteriores realizados en la plantilla misma (como es el caso de una plantilla transcluida).

La sustitución se realiza utilizando el subst:modificador después de las llaves de apertura doble. Por ejemplo, para sustituir la plantilla {{ afd }}, escriba {{subst:afd}}. Puedes comprobar el wikitexto resultante antes de guardarlo haciendo clic en "Mostrar cambios" (y ver cómo se verá la página haciendo clic en "Mostrar vista previa").

Las variables y funciones del analizador también se pueden sustituir, lo que significa que su valor actual se registrará permanentemente en la página; no se volverán a evaluar cada vez que alguien vea la página.

Cuando usar la sustitución

En términos generales, las plantillas se transcluyen en lugar de sustituirse, aunque hay algunas que están diseñadas específicamente para ser sustituidas (y es posible que no funcionen si se transcluyen). Algunas razones para sustituir plantillas incluyen:

Las desventajas de la sustitución pueden incluir:

Las variables dependientes del tiempo se sustituyen para que la página representada sea independiente del momento en que se ve. La sustitución de variables dependientes de la página hace que el wikitexto resultante sea independiente del cambio de nombre de la página y de la copia a otra página.

Para obtener orientación más detallada, incluidas listas de plantillas que deben o no sustituirse, consulte Wikipedia: Substitución .

Sintaxis

Para sustituir una plantilla, use la misma sintaxis que para transclusión , pero incluya subst:llaves dobles después de la apertura. Por ejemplo, para sustituir la plantilla {{ afd }}, escriba {{subst:afd}}. Se pueden incluir parámetros como en el caso de la transclusión, por ejemplo {{subst:afd|Some article}}.

Las páginas que no están en el espacio de nombres de la plantilla también se pueden sustituir, por ejemplo {{subst:User:Cleverclogs/My box}}. Para sustituir el contenido actual de una página en el espacio principal (es decir, una sin prefijo de espacio de nombres), se requieren dos puntos, como en {{subst::Page}}. Si una página o plantilla sustituida no existe, la expresión completa (con llaves y subst:) permanecerá sin cambios en el wikitexto y en la página.

Utilice la misma sintaxis para sustituir variables y funciones del analizador, por ejemplo {{subst:PAGENAME}}o {{subst:#switch:{{NUMBEROFADMINS}}|1=Foo|1000=Bar|#default=Baz}}.

Puede haber espacios en blanco entre las llaves de apertura y el "subst:". Sin embargo, se recomienda no tener espacios ni nuevas líneas inmediatamente después del "subst:", ya que esto no funcionará en todos los casos.

Implementación técnica

La sustitución es parte del proceso realizado al guardar una página y hace que el wikitexto guardado como resultado de la edición difiera del texto que el usuario realmente ingresó en la ventana de edición. Otros reemplazos realizados durante este proceso incluyen la expansión de enlaces usando el truco de la tubería y el reemplazo de múltiples tildes con firmas y marcas de tiempo.

Esto significa que la sustitución ocurre necesariamente antes de cualquier acción realizada en el momento de la representación de la página (conversión del wikitexto almacenado a HTML). En particular, las sustituciones se realizan antes de las transclusiones . Por lo tanto, escribir {{subst:Help:L{{in(tut)}}k}}no sustituirá, aunque {{ in(tut) }} devuelva el texto "in" y Ayuda:Enlace exista. La transclusión de {{ in(tut) }} aún no ha tenido lugar cuando se intenta la sustitución. Sin embargo, reemplace {{in(tut)}}con {{subst:in(tut)}}y ambas sustituciones se realizarán en el orden esperado.

Similarmente:

Al hacer clic en el botón "Mostrar cambios" durante la edición se muestra el wikitexto que resultará después de que se lleven a cabo la sustitución y otros reemplazos inmediatos. Al hacer clic en "Mostrar vista previa" se muestra cómo se verá la página renderizada después de estos reemplazos.

Si una página se sustituye a sí misma (por ejemplo, en la parte no incluida de una página de plantilla), sustituye la versión anterior, tal como estaba antes de la edición actual.

Si la propia expansión de una plantilla sustituida contiene instancias de la subst:sintaxis, las sustituciones se realizan de forma recursiva. Sin embargo, la sustitución no es automáticamente recursiva : si una plantilla sustituida contiene transclusiones ordinarias o variables y funciones de analizador que no se sustituyen explícitamente, entonces no se sustituirán.

Tenga en cuenta también que si subst:aparecen instancias de la sintaxis en una plantilla que se está transcluyendo , entonces se representarán sin cambios (como "{{subst:...}}"), ya que no es posible ninguna sustitución en el wikitexto en la etapa de representación. Esta característica se puede aprovechar para controlar el comportamiento de la plantilla (consulte § Hacer que las plantillas se comporten de manera diferente cuando se transcluyen o sustituyen). Sin embargo, puede resultar inconveniente cuando una plantilla está diseñada para que sea posible transcluir y sustituir; en este caso, safesubst:se puede usar en lugar de subst:(consulte § El modificador safesubst:).

El substancia segura: modificador

  • WP: SUSTITUCIÓN SEGURA

El subst:modificador puede ser reemplazado por el modificador alternativo safesubst:. Los dos tienen el mismo comportamiento, excepto cuando se encuentran durante la expansión no sustituida (transclusión o visualización directa) de una plantilla. En tal situación, el código {{subst:...}}permanece sin analizar, mientras que se {{safesubst:...}}trata como si no hubiera ningún modificador presente, por lo que se transcluye la subplantilla o se evalúa la variable o función del analizador.

Por lo tanto, el safesubst:modificador se utiliza en el código de plantillas que están diseñadas para producir sustitución recursiva cuando se sustituye; pero que también están destinados a funcionar cuando se transcluyen o simplemente se ven directamente. A diferencia del uso del subst:modificador, dichas plantillas se romperían en tales casos de transclusión (y posiblemente en visualización directa).

Para obtener detalles sobre cómo implementar esto (en particular, cómo evitar que se realice la sustitución tan pronto como se guarda el código de la plantilla), consulte § Sustitución recursiva.

sustitución recursiva

Como se mencionó anteriormente, la sustitución no es automáticamente recursiva. Entonces, si una plantilla sustituida tiene código que contiene transclusiones de otras plantillas y funciones del analizador, ese código se copiará "tal cual" en el wikitexto resultante; los elementos transcluidos no serán sustituidos.

Para que la sustitución funcione de forma recursiva, debe incluir la subst:sintaxis en el código de la plantilla de llamada. Sin embargo, no puede hacer esto simplemente escribiendo "subst:" dentro de la plantilla, ya que la sustitución se realizará tan pronto como se guarde la plantilla. Hay dos formas de solucionar este problema:

Para garantizar que la plantilla seguirá funcionando según lo previsto si se transcluye en lugar de sustituirla, utilice safesubst:en lugar de subst:. Esto también se aplica si la plantilla también se va a ver directamente, en su propia página (aunque en este caso, si se utiliza el primero de los métodos anteriores, subst: seguirá funcionando, ya que las etiquetas includeonly harán que el analizador ignore el subst: en visualización directa).

Para ver qué producirá una plantilla cuando esté completamente expandida, sin la necesidad de sustituir explícitamente todas las subplantillas, etc., se puede utilizar la herramienta Especial:ExpandTemplates .

Para obtener más información, consulte la página de ayuda de conversión recursiva de wikitexto en Meta. Consulte también Ayuda: Cálculo § Sustitución , m: Plantilla: Tabla de ejemplo con cálculos, con sustitución opcional  (edición de vínculos de retroceso) y la solicitud de función en subinstalación.

Sustitución recursiva en visitas guiadas

Las visitas guiadas pueden realizar publicaciones en nombre de los usuarios, como publicar automáticamente el contenido de una página wiki en una página de discusión. Sin embargo, a diferencia de la sustitución o transclusión normal, esta función de las visitas guiadas no respeta <includeonly>...</includeonly>un marcado similar. Para hacer que la sustitución recursiva funcione mediante la publicación de visitas guiadas, puede utilizar el método Delaying Template:subst descrito en Meta.

Un ejemplo de recursividad en acción.

Este es un ejemplo que utiliza la Plantilla:Like real y una Plantilla:Foo hipotética. Está intentando incluir la Plantilla:Foo, e indirectamente la Plantilla:Me gusta, en una tercera página mediante transclusión y sustitución. Plantilla: Me gusta muestra este símbolo: Me gusta👍

Por ejemplo, digamos que Plantilla:Foo contenía el wikitexto {{Like}}. Si luego lo transcluyes, usando el wikitext {{Foo}}, esto transcluirá la Plantilla:Como era de esperar. Pero si usas el wikitexto {{subst:Foo}}, cuando lo guardas, encontrarás el wikitexto {{Like}}sustituido en lugar del wikitexto de la página Plantilla:Me gusta. La sustitución no ha sido recursiva.

Un ejemplo de recursividad sería si Template:Foo contuviera el wikitext {{{{{|safesubst:}}}Like}}. Ahora, si lo transcluyes usando el wikitext {{Foo}}, esto transcluirá la Plantilla: como antes. Y si {{subst:Foo}}lo guarda, sustituirá el wikitexto real completo de la Plantilla: Me gusta. Por lo tanto, ha logrado la sustitución recursiva.

Más ejemplos

Nota: {{!}} sustituye a |.

Hacer que las plantillas se comporten de manera diferente cuando se transcluyen o sustituyen

A veces es deseable hacer que una plantilla se comporte de manera diferente cuando se sustituye que cuando se transcluye. Un truco común para hacer esto es usar una expresión como {{{{{subst|subst:}}}ns:0}}. Esto se evalúa como una cadena vacía si se está sustituyendo la plantilla (ya que la sustitución interna tiene efecto, dando el prefijo del espacio de nombres 0, que está vacío), pero como "{{subst:ns:0}}" si se está reemplazando la plantilla. transcluido (ya que la sustitución no puede tener lugar después de la transclusión).

Una aplicación común son las plantillas que están diseñadas únicamente para ser sustituidas, para que produzcan una advertencia si se transcluyen por error. Esto se hace en plantillas como {{ prod }}, que están diseñadas para producir una marca de tiempo (por ejemplo, para agregar páginas a categorías con fecha), y no podrán hacerlo si se transcluyen.

Se ha creado una plantilla, {{ issubst }}, para simplificar esto. Devuelve "sí" si se realiza la sustitución, o la cadena vacía en caso contrario. Luego, esto se puede usar como parámetro de una función de analizador condicional para hacer que la plantilla muestre un método de advertencia si se está transcluyendo, o para cambiar el comportamiento de una plantilla dependiendo de si se está transcluyendo o sustituyendo.

Documentar la sustitución

El uso de una plantilla subst:no aparece automáticamente en los historiales de páginas. Por lo tanto, proporcionar la línea de wikitexto que contiene "subst:" en el resumen de edición es especialmente útil.

Además, las páginas con una plantilla sustituida no aparecen en los vínculos de retroceso y la plantilla no aparece en la lista de plantillas transcluidas en la página de edición. La plantilla podría agregar páginas a una categoría para rastrear sustituciones, pero enumerar esta categoría en una página puede saturar la lista de categorías basadas en contenido en las que se encuentra la página. Además, los comentarios fuera de las etiquetas noinclude se incluyen en el wikitexto. Por tanto, se puede utilizar un comentario para mencionar la plantilla. La sustitución de parámetros no funciona dentro de los comentarios, pero una solución para esto es comenzar un comentario deseado <!<noinclude />--para que se convierta en un comentario una vez transcluido.

Limitación

La sustitución no está disponible en el interior <ref>...</ref>ni <gallery>...</gallery>en las etiquetas. Si escribe {{subst:foo}}, no se sustituye ni se transcluye, sino que permanece como está (es un error conocido, consulte T4700 y gerrit:272916 para conocer el estado actual).

Sin embargo, es posible evitar esta limitación utilizando la palabra mágica #tag. Si escribe, por ejemplo, , se sustituirá {{safesubst:#tag:ref|content of the reference}}el contenido de la referencia{{#tag:ref|...}} y se reemplazará por <ref>...</ref>. Un ejemplo más concreto: si escribe, por ejemplo {{safesubst:#tag:ref|...Title=ExampleTitle|archivedate={{subst:TODAY}}|Edition=Hardcover...}}, el software realizará sustituciones en el texto dentro del último campo y será {{#tag:ref|...}}reemplazado por <ref>...</ref>el texto alterado, y la referencia se guardará con la sustitución; se guardará como " {{|...Title=ExampleTitle|archivedate=29 January 2016|Edition=Hardcover|...}}" con <ref>...</ref>alrededor. En otras palabras, primero el software expandirá las plantillas y luego colocará ese texto expandido dentro de las etiquetas de referencia.

Plantillas para sustitución

Ver también