Existen algunas preocupaciones sobre el hecho de que la función de transclusión de plantillas del software MediaWiki no siempre se utilice de forma inteligente. La transclusión es una idea sencilla, pero es posible que todas sus consecuencias no sean inmediatamente evidentes para los usuarios con menos conocimientos técnicos. Aunque las plantillas facilitan muchas tareas, su uso conlleva riesgos, como ocurre con cualquier herramienta. Por lo tanto, los beneficios de las plantillas tienen un coste. Esto incluye un coste directo en términos de aumento de los recursos de la máquina; por ello, el software impone límites a las plantillas . Incluso dentro de esos límites, hay algunos costes adicionales. Este artículo es una explicación de estos costes y beneficios.
Para transcluir contenido de una página de origen (dentro de un único proyecto de MediaWiki, como Wikipedia en inglés) a una página de destino , utilice {{SOURCEPAGE}}
en el código de la página de destino .
Cada vez que {{SOURCEPAGE}}
se incluye el código en una página de destino, el software de Wikipedia coloca todo el contenido SOURCEPAGE
en ese lugar de la página de destino.
Consideremos un ejemplo, complementado con la ilustración siguiente, con las páginas de destino A , P y Q , y la página de origen B.
Si la página de origen B se transcluye en A , el contenido de B (por ejemplo, la palabra "foo") aparecerá en lugar del {{B}}
código en la página A. Cuando se transcluye, este contenido no se resalta ni se enmarca en la página de destino, sino que se integra directamente en el texto de la página (resaltado aquí solo a modo de ilustración).
La transclusión crea un vínculo "activo" entre una página de origen y todas las páginas de destino a las que se transcluye y utiliza su contenido. Al editar la página de origen, se actualiza automáticamente su contenido en todas las páginas de destino que la incluyen.
Por ejemplo, si crea una página fuente con detalles sobre un evento de Wikimedia y la incluye en las páginas de discusión de 50 editores que desea invitar, cualquier actualización que realice en la página fuente (como cambiar la ubicación del evento) se reflejará inmediatamente en las 50 páginas de discusión.
Las modificaciones de una página de origen pueden afectar a todas las páginas de destino que la utilicen. Si una página de origen también contiene sus propias inclusiones de otras páginas de origen, evite realizar cambios que puedan romper estos vínculos, ya que esto afectaría a la página de origen que está editando y a todas las páginas de destino que la incluyen. Esto se conoce como "ruptura" y es mejor asegurarse de que cualquier actualización mantenga la integridad del contenido incluido en todas las páginas. Por ejemplo, la página principal es una página grande que incluye su contenido de varias páginas de origen incrustadas, como Wikipedia:Lista de destacados de hoy .
La transclusión es una herramienta y, como cualquier herramienta, proporciona beneficios y conlleva costos. Los valores exactos de estos costos y beneficios varían según el diseño y el uso, sean acertados o no, y son objeto de debate. No es posible pretender que alguien pueda dar una declaración perfectamente neutral sobre estos costos y beneficios; ambos son en gran medida subjetivos y extremadamente difíciles de medir.
Existe un costo social de la transclusión, la expectativa total a lo largo del tiempo del riesgo de que una página de plantilla transcluida pueda ser vandalizada . Si el contenido de una plantilla popular se reemplaza por un galimatías, ese mismo galimatías puede aparecer momentáneamente en cada página en la que se transcluya la plantilla, tal como sucedería con cualquier edición. Esto también aumenta la carga que soporta el motor, al igual que cualquier edición. La mayoría de las plantillas muy utilizadas están protegidas para evitar el vandalismo, generalmente con esto .
Este costo se compensa con el hecho de que el vandalismo en las plantillas es tan fácil de revertir como de cometer. Se elimina el material ofensivo y se restaura el contenido anterior. Una vez más, se impone otra carga al motor.
Si una gran cantidad de texto, que aparece en muchas páginas, se mantiene en una plantilla y se transcluye en todos los destinos, se producen algunos ahorros en almacenamiento, pero en general la transclusión proporciona poco o ningún beneficio a la máquina .
Sin embargo, los usuarios pueden encontrar la transclusión muy útil y, en muchos sentidos, algunos de ellos bastante inesperados. Casi cualquier tipo de texto, marcado, código HTML o CSS se puede transcluir; si ese texto o código se utiliza en varios lugares, las plantillas facilitan mucho el trabajo manual. No sólo eso, sino que al reducir los errores en la escritura repetitiva, las plantillas ayudan a reducir el estrés de Wiki y la cantidad de trabajo de limpieza.
Un principio básico del diseño gráfico (de casi cualquier diseño) es estandarizar la presentación. Por ejemplo, si se considera que es conveniente presentar una determinada lista de elementos en varias páginas, todas ellas deben tener el mismo aspecto. Incluso si los elementos varían un poco de una página a otra, suele haber una clara ventaja en que tengan un aspecto similar.
No hay ninguna razón técnica para hacer esto, ya que el motor funcionará igual de bien si cada lista es un poco diferente de la anterior. Pero una apariencia estándar contribuye en gran medida a una impresión profesional en los lectores humanos. Los cambios en el diseño de las listas son fáciles de implementar en todas las apariciones de la lista simplemente cambiando el diseño en lugar de cambiar cada lista.
Por ejemplo, el mismo logotipo de Wikipedia y otros elementos básicos de navegación del sitio se incorporan a todas las páginas para crear una apariencia uniforme en millones de páginas. Los cambios en el logotipo, la navegación u otros elementos del idioma del sitio se pueden realizar desde una ubicación central y surten efecto en todas las páginas a costa del tiempo de renderizado de cada página. Sin embargo, esta funcionalidad social compensa los costos de recursos que implica mantener una apariencia uniforme.
Dado que casi cualquier página se puede transcluir, ¿por qué no podemos transcluir una página en otra y luego transcluir esa página en una tercera? La respuesta es que sí podemos.
Algunas plantillas maestras están diseñadas para usarse con otras subplantillas . Cuando la plantilla maestra B se transcluye dentro de la página de destino A , también se transcluye la subplantilla C.
Dado que ambos enlaces están "activos", si se edita la subplantilla, también se modifica la página de destino. Esto podría llevarse incluso más lejos; la página C podría incluir en la transclusión parte de la página D y el contenido de la página A sería una instancia de triple transclusión . Cuando se edita la página D , la página C cambia, por lo que la página B cambia, por lo que la página A cambia, y así sucesivamente.
Los costos y beneficios de la doble transclusión aumentan geométricamente (en un sentido amplio del término). Digamos que una plantilla X se transcluye en otras 5 plantillas; y digamos que cada una de esas plantillas se transcluye a su vez en 5 páginas de destino. La plantilla X se transcluye doblemente en 25 páginas. Una edición de X aparece en un total de 31 páginas: X , las 5 plantillas y los 25 destinos.
No hay límite para el número de objetivos para una plantilla dada, ni para los niveles de transclusión, por lo que es posible que X sea transcluido doble o triplemente a lo largo de cientos, miles o incluso millones de páginas. Por lo tanto, la doble transclusión es extremadamente poderosa y la técnica en sí misma se ha convertido en un objeto de disputa . [ Aclaración necesaria ]
MediaWiki proporciona el subst:
comando, que simplemente sustituye una página dentro de otra. Esto es muy diferente de la transclusión, aunque la diferencia normalmente será invisible en la primera edición.
Para sustituir una página, utilice este código:
{{subst:SOMEPAGE}}
(Se aplica la misma sintaxis que en el caso de las páginas transcluidas).
Cuando obtenga una vista previa de una página que contenga una sustitución, seguirá viendo el código en el cuadro de edición; puede cambiarlo si lo desea. Pero cuando guarde la página de destino, el motor sustituirá o reemplazará el código con lo que esté en la página de origen. Si edita la página de destino nuevamente , verá que el código de sustitución desapareció; el contenido de la página de origen lo reemplazó directamente.
El enlace entre la página de destino y la de origen no solo se rompe, sino que no existe en absoluto. Ahora bien, si la página de origen cambia, la página de destino no cambiará . El contenido sustituido queda congelado en el tiempo , en la forma en que se encontraba en el momento en que se guardó la página.
La sustitución y la transclusión se pueden utilizar juntas y, a menudo, es una buena idea . En lugar de utilizar la doble transclusión, puede sustituir una página en otra y luego transcluir esa página en una página de destino. O puede descubrir que una página transcluye a otra; decide sustituir la página que transcluye en un destino, en lugar de forzar una doble transclusión.
Por otra parte, la doble transclusión puede ser muy útil y puede justificarse o incluso exigirse en determinados contextos. Cada caso es diferente y sólo se puede decidir tras una consideración cuidadosa e informada de la situación técnica y social.
Un uso muy común de las plantillas es "etiquetar" una página, es decir, insertar en ella un fragmento de texto, generalmente enmarcado, que suele aparecer en la parte superior o inferior de la página. Una etiqueta no contiene contenido, sino metacontenido: información sobre la página en sí. Un ejemplo es {{ FAC }} .
Existen cientos de etiquetas, cada una con una función diferente, muchas de ellas transcluidas en cientos de páginas. Por lo tanto, las etiquetas representan una fracción nada despreciable de los recursos del servidor dedicados a la transclusión (por el contrario, las etiquetas son, por diseño, bastante ligeras, lo que compensa la cantidad de transclusiones). Muchas etiquetas incluyen referencias a categorías, que incluyen automáticamente las páginas en las que se transcluyen dentro de una categoría.
Las páginas de artículos rara vez se transcluyen, por lo que etiquetarlas presenta pocos problemas; lo mismo ocurre con las páginas de discusión, las páginas de espacios de nombres de Wikipedia y, de hecho, la mayoría de las páginas. Cuando una página está etiquetada de esta manera, la etiqueta aparece solo en ese lugar; si se refiere a "esta página" , queda claro a qué se refiere.
Sin embargo, las páginas de espacios de nombres de plantillas están pensadas para ser transcluidas y sustituidas, por lo que etiquetarlas ( por cualquier motivo ) es problemático.
Hay casos en los que etiquetar una plantilla puede ser menos destructivo; sin embargo, es muy difícil aislarlos (para garantizar que una etiqueta no causará problemas).
Por lo tanto: la mayoría de las etiquetas no se deben colocar en la mayoría de los cuerpos de las páginas de los espacios de nombres de las plantillas. Si una determinada etiqueta parece aplicarse a una plantilla, existen varias opciones: a veces, la etiqueta se puede colocar en su página de discusión o página /doc asociada (si la hay) , o se puede incluir en la plantilla mediante el método <noinclude>. Algunas etiquetas, como {{ tfd }}, están diseñadas específicamente para incluirse de forma visible en las plantillas con el fin de atraer la atención editorial.
Otros tipos de marcado y funciones del motor también hacen que se incluya contenido en una página renderizada, de efecto similar a la transclusión o sustitución: