Cómo crear una plantilla parte 2

De YPPedia

Prefacio

Aquellos que están empezando a aprender como crear plantillas deben evitar esta sección e ir primero a Crear una plantilla.

Actualmente no hay manera de hacer condicionales (si/entonces) directamente en las plantillas. Se pueden hacer indirectamente con plantillas anidadas (ver Plantilla:Ficha_blasón como un ejemplo). Las plantillas tampoco pueden manejar variables en blanco a menos que estén también anidadas.

Plantillas 101

Este artículo asume que el lector ha leído (y entendido) la página que explica Crear una plantilla.

Hacer una plantilla es sencillo.

  1. Selecciona el nombre de la plantilla deseada.
  2. Navega a http://yppedia.puzzlepiratas.com/es/Plantilla:NOMBRE donde NOMBRE es la plantilla que se necesita.
  3. Escribe la plantilla
  4. Haz clic en "guardar"

Ahora la plantilla esta lista para usarse. Por supuesto, escribir la plantilla es mucho más complejo que eso. Aquí encontrarás algunas reglas básicas para crear plantillas:

  1. Los nombres de las plantilla son sensibles a mayúsculas y minúsculas; puede que la Plantilla:Ficha blasón exista, pero la Plantilla:FiCHA BLASÓN, o aún la Plantilla:Ficha Blasón no existen.
  2. Los parámetros se definen como tales: {{{1}}}. Esto le dice a la plantilla que cuando es llamada, debe sustituir {{{1}}} con cualquier cosa que se haya escrito después de 1= en la plantilla.
  3. No es necesario usar los números, en su lugar, la plantilla puede ser definida usando {{{palabra}}}. Ten cuidado, ya que el usuario debe escribir |palabra=algo|, en lugar de |algo| en el lugar apropiado.
  4. Cada parámetro diferente debe tener un nombre diferente. {{{1}}}, {{{2}}}, {{{3}}} está bien para las diferentes acciones que son requeridas. {{{1}}}, {{{2}}}, {{{1}}} es suficiente si la tercera parte necesita que se aplique la misma función que la primera parte, pero si no es así, entonces no resultará como se espera.
  5. Es posible tener diferentes nombres para definir un parámetro, por ejemplo:
    • Si {{{primero}}} no ha sido definido, usa {{{1er}}}
    • Si los dos de arriba no han sido definidos, usa {{{1}}}
    • Si los tres de arriba no han sido definidos, escribe algo evidente para hacerle saber al editor que la plantilla no está siendo usada correctamente.

Esto requiere del uso de parámetros predefinidos; ver más abajo.

Ejemplo Plantilla Nada especial

Plantilla:Nada especial contiene el siguiente texto:

{{{1}}}<noinclude>[[Categoría:Plantillas de ejemplo]]</noinclude>

(La parte funcional de esta plantilla se muestra en negritas. El resto es solo para categorizarla en una lista de plantillas que se usan en las páginas de ayuda y para que no incluya esas categorías en las páginas donde se use la plantilla.)

La siguiente tabla muestra lo que los datos de entrada y salida pueden ser:

Ejemplo Datos de entrada Datos de salida
1 {{Nada especial|Hola.}} Hola.
2 {{Nada especial|1=Hola.}} Hola.
3 {{Nada especial|2=Hola.}} {{{1}}}
4 {{Nada especial|¡Saludos!}} ¡Saludos!
5 {{Nada especial|Este es un signo de igual: =}} {{{1}}}
6 {{Nada especial|1=Este es un signo de igual: =}} Este es un signo de igual: =
7 {{Nada especial|| <<Esta es una barra vertical}} {{{1}}}
8 {{Nada especial|<nowiki>| <<Esta es una barra vertical}}</nowiki> {{Nada especial | <<Esta es una barra vertical}}

Se debe tener mucho cuidado al usar tablas y plantillas, ya que las dos comparten el símbolo característico de la pipeta. De hecho, el ejemplo 7 de la tabla de arriba dio eso como resulatdo y tuvo que tener datos de salida escritos manualmente. Esto es porque el navegador los puede confundir muy fácilmente (ya que no tiene intuición), lo que da resultados muy extraños como lo siguiente:

Ejemplo Datos de entrada Datos de salida
6 {{Nada especial|1=Este es un signo de igual: =}} Este es un signo de igual: =
7 {{Nada especial|| <<Esta es una barra vertical}} 8 {{Nada especial|<nowiki>| <<Esta es una barra vertical}}</nowiki> | <<Esta es una barra vertical

En este caso, la doble pipeta hizo que la tabla añadiera una columna extra y desarregló todo de muy mala manera. Para el ojo sin entrenamiento, este es un error imperceptible y algo que puede causar mucha frustración cuando se trata de arreglar.

Ejemplo Plantilla Nadie especial

La plantilla Plantilla:Nadie especial funciona bajo los mismos principios, con algunos trucos extra que se han incluido:

La plantilla contiene:

{{ucfirst:{{{persona}}}}} no es especial.<noinclude> [[Categoría:Plantillas de ejemplo]]</noinclude>

(De nuevo, la parte funcional de la plantilla está en negritas.)

Esto es un poco más complicado, pero no demasiado. Veamos como se hace.

  • La plantilla toma un parámetro {{{persona}}},
  • Aplica alguna función al parámetro,
  • Lo pone en una oración, y finalmente,
  • Muestra la oración.

Ahora veamos, ¿Qué es {{ucfirst:}}? Las llaves dobles, {{}} tradicionalmente representan una plantilla, pero también pueden representar lo que llamamos palabras mágicas. Hay un buen número de estas, y si el lector interesado quiere saber más, puede ver aquí.

Fíjate bien: No todas las palabras mágicas funcionan - depende de la versión de MediaWiki que esté instalada en YPPedia. Para ver la versión de este wiki ve a esta página; por lo tanto el wiki solo entenderá las palabras mágicas designadas para esta versión o anterior.

La palabra mágica {{ucfirst:}} hace que la primera palabra sea mayúscula para este parámetro. En este caso, pone en mayúscula la primer letra de cualquier {{{persona}}} que se haya anotado. Veamos esto en acción, recuerda que las reglas mencionadas antes todavía aplican.

Ejemplo Datos de entrada Datos de salida
1 {{Nadie especial|Hola.}} {{{persona}}} no es especial.
2 {{Nadie especial|persona=El}} El no es especial.
3 {{Nadie especial|persona=he}} El no es especial.
4 {{Nadie especial|persona=iMHoTeP}} IMHoTeP no es especial.
5 {{Nadie especial|persona=[[geena]]}} geena no es especial.
6 {{Nadie especial|persona=i}} I no es especial.

En el ejemplo número 5, la palabra mágica trata de poner en mayúscula el símbolo [, no se brinca a la primera letra para ponerle mayúscula.

Es importante notar que como en el ejemplo 6, el wiki no puede cambiar cosas para corregir la gramática. Es posible programar reglas gramaticales en una plantilla, pero requiere de una horrorosa cantidad de programación de plantillas muy compleja. En su lugar, se puede evitar la situación; la plantilla se puede cambiar para hacerla más funcional.

Ejemplo Plantilla Nadie especial 2

La plantilla Plantilla:Nadie especial 2 es como la anterior, pero maneja más cosas:

[[{{ucfirst:{{{persona}}}}}]] {{{verbo}}} no es especial.<noinclude> [[Categoría:Plantillas de ejemplo]]</noinclude>

¿Entonces que hace esta plantilla?

  • Reemplaza {{{persona}}} con lo que el usuario haya escrito,
  • Pone mayúscula a la primer letra,
  • Pone un enlace al artículo,
  • Lo pone en una oración,
  • Reemplaza {{{verbo}}} con lo que el usuario haya escrito,
  • Pone eso también en una oración y por último
  • Muestra la oración completa.

Esta plantilla requiere dos datos de entrada, {{{persona}}} y {{{verbo}}}. Se confía que el usuario tenga la intuición de usar el verbo conjugado correctamente.

Esta plantilla no hace nada muy diferente de la primera, pero aquí está otra tabla de datos de entrada y salida:

Ejemplo Datos de entrada Datos de salida
1 {{Nadie especial 2|Hola.}} [[{{{persona}}}]] {{{verbo}}} poco especial.
2 {{Nadie especial 2|persona=El}} El {{{verbo}}} poco especial.
3 {{Nadie especial 2|persona=piplicus|verb=es}} Piplicus no es especial.
4 {{Nadie especial 2|persona=piPLiCuS|verb=es}} persona=piPLiCuS|verb=es
5 {{Nadie especial 2|verb=am|persona=geena}} Geena {{{verbo}}} poco especial.
6 {{Nadie especial 2|verb=es}} [[{{{persona}}}]] {{{verbo}}} poco especial.
7 {{Nadie especial 2|persona={{Nadie especial|persona=El}}}} El no es especial. {{{verbo}}} poco especial.

Como se ve en el ejemplo 7, la plantilla en sí se puede definir como un parámetro. Pero es un problema tener que definir el verbo cada vez, solo por las excepciones.

¡Parámetros predefinidos al rescate!

Los parámetros como {{{verbo}}} se pueden programar de la siguiente manera:

  • Pone el valor de {{{verbo}}} si ha sido definido, o
  • Pone otro valor si {{{verbo}}} no ha sido definido.

Estos se llaman parámetros predefinidos. Puedes ver más sobre parámetros predefinidos en Wikipedia.

Los parámetros predefinidos se definen como tales:

{{{parámetro|valor por omisión}}} donde valor por omisión es el valor predefinido que se requiere.

Lo podemos ver en acción.

[[{{ucfirst:{{{persona|alguien}}}}}]] {{{verbo|es}}} no es especial.<noinclude>[[Categoría:Plantillas de ejemplo]]</noinclude>

¿Qué hace esto?

  • Revisa si el parámetro {{{persona}}} ha sido definido:
    • Si ha sido definido, reemplaza {{{persona}}} con lo que ha sido definido, pone mayúscula en la primer letra, y después la enlaza;
    • Si no definido, reemplaza {{{persona}}} con la palabra alguien, pone mayúscula en la primer letra, y después la enlaza.
  • Después revisa si el parámetro {{{verbo}}} ha sido definido:
    • Si ha sido definido, reemplaza {{{verbo}}} con lo que haya sido definido por, y después lo pone en una oración.
    • Si no ha sido definido, reemplaza {{{verbo}}} con la palabra es, y después lo pone en una oración.
  • Por último muestra la oración.

El resultado de esta tabla debe ser el mismo que la tabla de arriba, excepto que el parámetro {{{persona}}} será reemplazado por alguien y {{{verbo}}} por la palabra es.

Los parámetros predefinidos tienen muchos usos. A continuación veremos otro.

Usando parámetros predefinidos

Realmente es molesto tener que escribir las palabras persona= y verbo= cuando es muy evidente que la primer palabra es el sujeto y que el verbo es, pues, el verbo.

Mira la Plantilla:Nadie especial 4 que contiene los siguientes parámetros:

[[{{ucfirst:{{{1|{{{persona|alguien}}}}}}}}]] {{{2|{{{verbo|es}}}}}} no es especial <noinclude> [[Categoría:Plantillas de ejemplo]]</noinclude>

La parte funcional está en negritas.

Hay demasiados parámetros, vamos a separarlos usando espacios:

[[{{ucfirst: {{{1| {{{persona|alguien}}} }}} }}]] {{{2| {{{verbo|es}}} }}} no es especial.

Esto hace más evidente lo que la plantilla está tratando de hacer. Hace el mismo trabajo que la Plantilla:Nadie especial 3, excepto que ahora acepta datos de entrada de 1=parámetro o solamente de parámetro.

Vamos a examinarlo paso a paso:

  • La plantilla checa que haya un parámetro 1=xyz o solo xyz
    • Si lo encuentra, sustituye xyz (o cualquiera que sea el valor que se le haya dado) en la oración, pone mayúscula en la primer letra, y después la enlaza.
    • Si no lo encuentra, revisa que haya un parámetro persona=xyz:
      • Si lo encuentra, sustituye xyz en la oración y hace lo mismo que hace siempre.
      • Si no lo encuentra, usará el valor por omisión predeterminado alguien.

La plantilla hará lo mismo para la segunda parte, esto es:

  • Revisar que esté 2:
    • Si ha sido definido, lo usa
    • Si no ha sido definido, revisa que esté el parámetro verbo
      • Si está definido, lo usa
      • Si no ha sido definido, usa el valor por omisión predeterminado es.
  • Lo que sea que haya usado, lo pone en una oración

Y por último

  • Muestra la oración.

Esta plantilla permite que el usuario no trabaje tanto. Es muy útil cuando hay relativamente pocos parámetros, pero debe evitarse en plantillas mas complejas, donde es mejor saber que parte es cual.

Lo más sencillo es lo mejor

Por ejemplo, mira la Plantilla:Nadie especial 5. Son muchas variables.

{{ucfirst:{{{persona1|{{{1}}}}}}}}, el {{{adjetivo1|{{{2}}}}}} {{{empleo|{{{3}}}}}} quien definitivamente no es especial, {{{verbo1|{{{4}}}}}} {{{persona2|{{{5}}}}}} en el {{{lugar|{{{6}}}}}}, y {{{acción|{{{7}}}}}} porque {{{persona3|{{{8}}}}}} dijo que {{{razón|{{{9}}}}}}.<noinclude [[Categoría:Plantillas de ejemplo]]</noinclude>

A pesar de que {{Nadie especial 5|piplicus|despiadado|militarista|peleó contra|Cleaver|palacio|sabemos que hizo trampa|Lizthegrey|Cleaver necesitaba que le dieran una lección}} mostrará una oración perfectamente válida:

Piplicus, el despiadado militarista quien definitivamente no es especial, peleó contra Cleaver en el palacio, y sabemos que hizo trampa porque Lizthegrey dijo que Cleaver necesitaba que le dieran una lección.

Si alguien necesita cambiar rápidamente algo, por ejemplo, la acción, deben buscar con cuidado en la lista. En su lugar, el siguiente formato hace que sea más fácil ver que va donde:

{{Nadie especial 5
|persona=piplicus
|adjetivo=despiadado
|empleo=militarista
|verbo1=peleó contra
|persona2=Cleaver
|lugar=palacio
|acción=sabemos que hizo trampa
|persona3=Lizthegrey
|razón=Cleaver necesitaba que le dieran una lección
}}

Si se le fuera a preguntar a alguien nuevo en el uso de plantillas que lo editara, no tendrían mucho problema en hacerlo - y de todas maneras el resultado que da es el mismo.

Diseños de plantillas más elaboradas

Hasta ahora, hemos visto unas plantillas bastante simples. Las plantillas más complejas se pueden crear para hacer cosas mas espectaculares con los mismos datos de entrada básicos.

La necesidad de estandarizar

YPPedia tiene bastantes esquemas de nombres estandarizados - islas, retratos, avatares, arte - solo por nombrar unos cuantos. (Ver Manual de estilo).

Una de las razones de esta manera precisa pero a la vez simple manera de poner nombres es que no se requiere de mucho para hacer que funcione algo que no conocemos.

Si encontramos un retrato de Guiido en Imagen:Piratas-Guiido.jpg, ¿donde podremos encontrar un retrato de Eurydice?

¡Fácil! Imagen:Piratas-Eurydice.jpg

Vamos a ver si esto es cierto:

Piratas-Eurydice.jpg

¡Es cierto! Se podría hacer una plantilla para generar un retrato de alguien cuando sea necesario.

Plantilla:Generar retrato contiene el siguiente texto:

[[Imagen:Piratas-{{{1|{{{pirata}}}}}}.jpg|{{{alignment|right}}}|thumb|{{{tamaño|}}}|{{{comentario|}}}]]<noinclude> [[Categoría:Plantillas de ejemplo]]</noinclude>

¿Que hace esto?

  • Primero checa que haya un valor de 1= o pirata=
    • Si lo encuentra, producirá la imagen del retrato del pirata en una miniatura (thumb),
    • Si no lo encuentra, la plantilla no funcionará.
  • Después establece la imagen con los siguientes formatos, a menos que sean cambiados:
    • Pondrá la alineación (alignment) a la derecha a menos que se le diga lo contrario.
    • Generará las dimensiones del tamaño a ancho y alto normal a menos que se le diga lo contrario.
    • No mostrará comentarios a menos que se le diga cuales son.

Esto permite un código muy sencillo para que la plantilla {{Generar retrato|Eurydice}} haga su trabajo, y si se necesita información más específica se puede añadir: {{Generar retrato|Nemo|tamaño=100px|alignment=left|comentario=''Nemo'' podría llamarse así por la ''poción nemo'', en lugar del ''Capitán Nemo'' o por ''Encontrando a Nemo''.}}

Nada más para revisar que estas dos plantillas realmente hagan su trabajo:

Piratas-Eurydice.jpg
Nemo podría llamarse así por la poción nemo, en lugar del Capitán Nemo o por Encontrando a Nemo.


¡Felicidades! Funcionan.

Plantillas dentro de plantillas

Plantillas pueden estar anidadas dentro de otras plantillas. Un ejemplo de esto fue visto antes, con la plantilla Plantilla:Nadie especial. Una plantilla dentro de otra plantilla tiene un uso muy limitado:

{{Nada especial|{{Nadie especial|persona={{Nadie especial 2|persona={{Nadie especial 3|persona=Hypnos}} |verbo=es}}}}}} aunque se ve bastante elegante, lo que muestra es lo siguiente:

[[Hypnos es poco especial.]] es poco especial. no es especial.

¿No sería fabuloso si mucho del contenido pudiera cambiarse con el uso de un simple parámetro? Por suerte se puede hacer.

Parámetros que definen una plantilla

La plantilla para manejar fichas pirata, Plantilla:Ficha pirata, se ve bastante compleja y lo es. Aquí mostramos una sola línea de lo que contiene:

{{Ficha pirata/retrato/{{{retrato|no}}}|nombredelpirata={{{altnombre|{{PAGENAME}}}}}}}

Veamos lo que hace:

  • Primero revisa por el valor {{{retrato}}}
    • Si ha sido definido, lo enlaza a la palabra que se haya escrito (la plantilla busca la palabra si,
    • Si no ha sido definido, enlaza al parámetro no.
  • Después checa que haya un valor de altnombre
    • Si ha sido definido, usa lo que se haya escrito
    • Si no ha sido definido (como es la mayoría de los casos), usa la palabra mágica {{PAGENAME}} para tomar el nombre del pirata que necesita - ya que una ficha (infobox) que contiene información de Atropos solo va a aparecer (¡esperamos!) en Atropos, tiene sentido tomar el nombre de la página en lugar de tener que escribir los datos de entrada de |pirata=Atropos. Lo que hace es ahorrar esfuerzo y evitar mala ortografía.

Si el parámetro retrato ha sido definido como no, mostrará lo siguiente:

<div style="border:1px solid gray; margin-bottom:3px; background:white;">[[Imagen:sinretrato.png|{{{nombredelpirata}}} no tiene retrato]]</div>

¿Que hace esto?

  • Genera la imagen Imagen:sinretrato.png, que se puede ver a la derecha:
Sinretrato.png
  • Después anota el texto alternativo (texto que aparece si la imagen no se carga, o el texto se puede ver si se pasa el ratón de la computadora sobre la imagen), que contiene la frase {{{nombredelpirata}}} no tiene retrato, donde nombredelpirata ha sido definido como el nombre del pirata.
  • Después usa etiquetas div para poner un borde gris sólido de 1 pixel alrededor de la imagen (entre otras cosas)

En resumen, si el usuario especificó que no tiene retrato, la plantilla muestra el valor por omisión sin retrato.

¿Que pasa si tienen retrato?

<div style="border:1px solid gray; margin-bottom:3px; background:white;">[[Imagen:Piratas-{{{nombredelpirata}}}.jpg|{{{nombredelpirata}}}]]</div> hará lo siguiente:

  • Muestra el retrato del pirata (recuerda que debido al sistema de nombres, sabemos donde encontrar la imagen de cualquier pirata.

Se veía muy complicado, pero el seguimiento es muy lógico.

Si has entendido hasta aquí, entonces - ¡Felicidades, entiendes casi todo lo que tiene que ver con plantillas! Si no has entendido, no te preocupes - regresa a leerlo otra vez. No siempre es fácil entenderlo todo la primera vez.

Redefiniendo parámetros

Cuando un parámetro ha sido definido, solamente funcionará para la plantilla en la que se está usando. Si la plantilla tiene otra plantilla anidada dentro de ella, un parámetro definido en la primer plantilla no funcionará para la sub-plantilla.

En su lugar, debe ser redefinido.

En la plantilla anterior, asumimos que el usuario no tiene un retrato y que ha definido la variable altnombre. Esto significa que la plantilla se verá de la siguiente manera:

{{Ficha pirata/retrato/si|nombredelpirata=altnombre}}

La parte en negritas es la más importante. Si falta eso, la plantilla no funcionará. Aún si la plantilla tuviera el siguiente texto:

[[Imagen:Piratas-{{{altnombre}}}.jpg|{{{altnombre}}}]]

No funciona, porque la plantilla no sabe lo que el parámetro altnombre o nombredelpirata es. Necesita haber sido definido en la plantilla en la que se va a usar.

Reglas de oro

A continuación mencionaremos algunas reglas de oro para las plantillas:

Si funciona, funciona

Las plantillas son muy versátiles. Las plantillas más complejas involucran tomar texto de otras plantillas, como la ficha (infobox) de arriba. Al crear una plantilla muy grande, el editor que la está creando debe ser muy ingenioso para hacer que la plantilla funcione, pero hay que hacerla lo mas simple y eficiente que se pueda.

La parte más importante que hay que recordar es que una plantilla que funcione correctamente es mucho mejor que una plantilla que no existe. Siempre hay alguien que puede ayudar a que funcionen bien.

Elije la mejor manera

Muy a menudo, hay más de una manera de diseñar una plantilla. La mejor manera es la que hace que la plantilla sea mas fácil de usar para los usuarios en general, ya sea que haya menos cosas que escribir, es la que menos da problemas con los datos de entrada y es la que le dice al usuario lo que ha hecho mal y donde. No te preocupes mucho si el código se ve muy feo al escribirlo, no se verá al usar la plantilla. Sin embargo, las mejores plantillas son las que tienen códigos limpios. Recuerda que si funciona, funciona y eso es mucho mejor que una plantilla que no funciona.

Ver También

Artículo en YPPedia Inglés: Help:Making templates