Tutorial:Manejo de Plantillas
¿Qué es una plantilla?
Las plantillas son una parte importante en la wiki, gran parte de la wiki está construida con plantillas.
Para dejarlo claro, una plantilla es como un objeto cualquiera. Un vehículo, una caja, una silla, una mesa, una botella, un revolver derringer oxidado sin munición encontrado en el fondo de un rio… todos son objetos. Y cada objeto puede estar compuesto o contener otros objetos, un vehículo tiene ruedas que son otros objetos; o una caja puede contener otros objetos en su interior, como una botella.
En la wiki, estos objetos los cuales llamaremos plantillas, los utilizaremos para facilitarnos el trabajo. Cada vez que creamos una plantilla, esta la podremos mostrar tantas veces como queramos. Para tener un ejemplo más claro, cada ítem del juego que agregamos a la wiki lo agregamos como una plantilla, esto nos permite mostrar este ítem en cualquier lugar de la wiki sin tener que escribir tanto contenido.
Por ejemplo tenemos nuestro deringer de Belle Starr
Si quisiéramos mostrar este ítem sin una plantilla tendríamos que escribir todo este código:
<div class="item_container {{{1|}}} {{#if:{{{bg|}}}|{{#ifexpr:{{{bg|}}}=0|empty|}}|}}" data-lvl="0" data-popup='{"name":"El Deringer de Belle Starr","type":"(Arma de duelo)","cdn_cat":"right_arm","cdn_img":"deringer_bellestar","ref":-0.28,"hid":-0.26,"lvl":45,"id":818000,"bp":5500,"sp":2750,"upg":1,"auc":1,"dmg_min":71,"dmg_max":97}' data-url='right_arm/{{#if:{{{1|}}}|{{#ifeq:{{{1|}}}|||wear/}}|}}deringer_bellestar.png'><div class="item_level"><div class="icon_level"></div><div class="upgrade"></div><span class="level">0</span><div class="downgrade"></div></div>{{#if:{{{nb|}}}|<div class="item_number">{{{nb}}}</div>|}}</div>
Todo este código es lo que permite ver nuestro deringer de belle Starr con su dibujo, estadísticas y detalles. Hay otras cosas que intervienen pero son más avanzadas y no forman parte de la plantilla, sino que están definidas en otros lugares y que por lo general no es necesario ni siquiera mirarlo.
Supongamos que quisiéramos mostrar este deringer en varios lugares del documento, tendríamos que escribir ese bulto de código difícil de comprender, poco claro y tosco de manipular. Además que cada vez que quisiéramos mostrar este ítem del juego tendríamos que buscar el código para copiarlo ya que sería imposible de recordar.
Gracias a las plantillas, todo este código solo lo escribiríamos una vez, dentro de la plantilla. Y cada vez que quisiéramos mostrar el ítem haríamos referencia a la plantilla. ¿Cómo hacemos referencia a las plantillas? Muy simple, todas las plantillas en la wiki se hacen referencia escribiendo {{*nombre de la plantilla*}}. En el caso del deringer de Belle Starr se haría escribiendo {{Item 818}} ya que Item 818 es el nombre de la plantilla.
{{Item 818}}
En este caso la plantilla es un ítem del juego pero lo mismo pasa por ejemplo con este tipo de título:
Esto también es una plantilla la cual escribimos con la siguiente referencia:
{{Titulo | Título de ejemplo}}
Cómo podemos ver, en este caso es ligeramente distinto a la plantilla del deringer, tenemos el carácter | entre medio. El nombre de la plantilla es la palabra Titulo, luego tenemos una separación que se hace utilizando el carácter |, lo que sigue a este carácter es el texto que mostraremos como título. Más adelante veremos mejor cómo funciona esto de una manera más detallada pero de momento nos quedaremos en que las plantillas pueden necesitar que les especifiquemos datos extras y que gracias a estos datos extras vamos a tener un resultado distinto.
¿Por qué usar Plantillas?
Las plantillas nos ayudan a mejorar la wiki de una forma más rápida, si tenemos que modificar por ejemplo los datos de un ítem, al modificar la plantilla de este ítem, todos los lugares donde lo mostremos tendrán los datos actualizados ya que lo modificamos en la plantilla.
Las plantillas nos ayudan a ahorrar trabajo. No es lo mismo escribir todo desde 0 cada vez que queremos mostrar una cosa a simplemente escribir {{*Nombre de plantilla*}} para mostrarlo.
¿Cómo crear una plantilla?
Cada plantilla es una página en la wiki, podríamos interpretarlo como una “página especial”.
Cómo podemos ver, cada página en la wiki tiene su URL:
https://wiki.the-west.es/wiki/Página_principal -> la cual hace referencia a la página principal.
Normalmente, todas las páginas empiezan con https://wiki.the-west.es/wiki/ y luego son seguidas del nombre de la página. Por ejemplo, el índice alfabético de búsquedas es https://wiki.the-west.es/wiki/Indice_Alfabético_de_Búsquedas. Cada espacio entre las palabras tendrá un _ (Indice_Alfabético_de_Búsquedas)
Para crear una plantilla, lo que hacemos es agregar la palabra especial "Plantilla:" a esta URL y seguido del nombre de la plantilla. Por ejemplo en el caso del deringer tendríamos:
https://wiki.the-west.es/wiki/Plantilla:Item_818
Y en el caso del título que mostramos anteriormente sería
https://wiki.the-west.es/wiki/Plantilla:Titulo
Entonces, para crear una nueva plantilla, simplemente podemos escribir https://wiki.the-west.es/wiki/Plantilla: y luego de los : escribimos el nombre que tendrá la plantilla.
Como la página no existe, y por ende tampoco la plantilla, le podremos dar clic al botón de crear.
Nos abrirá la misma sección de siempre en la wiki para agregar contenido, en esta parte escribiremos lo que queremos que se muestre siempre que escribamos la referencia a la plantilla.
En las plantillas ya creadas podremos encontrar dos etiquetas
<include> … </include>
<noinclude> … </noinclude>
Todo lo que pongamos dentro de las etiquetas <include> será parte de la plantilla, lo que agreguemos se mostrará al hacer referencia a la plantilla.
Todo lo que pongamos dentro del <noinclude> no formará parte de la plantilla. Será un contenido único que solo se verá en la página de la plantilla. Cuando hagamos referencia a la plantilla, lo que pusimos en el <noinclude> no se verá. Generalmente utilizamos esto para agregar instrucciones de cómo funciona la plantilla o ejemplos.
Una vez guardemos esto, la plantilla ya estará creada y podremos hacer referencia a esta.
Es importante entender que si eliminamos el contenido en esta página o si borramos la página, cada referencia a la plantilla dejará de mostrar la información. Por ejemplo, si borramos la plantilla del deringer {{Item 818}} entonces todos los lugares donde hayamos hecho esta referencia dejarán de mostrar este ítem ya que no hay nada a lo cual hacer referencia.
¿Cómo modificamos una plantilla?
Para modificar una plantilla iremos a su URL, por ejemplo: https://wiki.the-west.es/wiki/Plantilla:Titulo
Le daremos al botón de editar y listo, haremos las modificaciones que se necesiten. ¿Fácil no?
Por supuesto, hay que tener en cuenta que lo que modifiquemos en este lugar se verá reflejado en todas las referencias que hayamos hecho de esta plantilla. Si bien nos facilitan el trabajo, hay que manejarlas con cuidado.
¿Creación avanzada de plantillas?
Anteriormente vimos que las plantillas pueden tener el carácter |. Volviendo al ejemplo de un objeto cualquiera, un objeto tiene características, una mesa puede ser de color rojo, verde azul; tener un tamaño distinto; una cantidad de patas distintas y así con muchas otras características. Lo mismo para otros objetos, cada uno tiene sus características que pueden cambiar el objeto. Las plantillas funcionan igual, podemos hacer una plantilla que no cambie, que sea estática, o podemos hacer que la plantilla cambie según sus características.
El título mostrado anteriormente tiene una característica que lo hace cambiar, esta es el texto que mostrará.
{{Titulo | *Texto a mostrar*}}
La palabra “Titulo” es el nombre de la plantilla, siempre lo primero que se escribe será el nombre de la plantilla, jamás se escribe una característica antes que el nombre. Luego usamos el | para indicar que termina el nombre de la plantilla y continúa con la característica de la plantilla.
Estas características las llamaremos atributos, esto es por la relación que tiene a la programación y que en la programación se llama así.
Atributos
Una plantilla puede tener tantos atributos como necesitemos, pero hay que entender que para que realmente el atributo afecte a la plantilla, este tiene que utilizarse en la definición de la plantilla. Por ejemplo:
{{Titulo | *Texto a mostrar* | 15}}
Esto mostraría el título normal y el 15 aunque sea un atributo que le estamos dando, esto no serviría de nada, no es un atributo que afecte a la plantilla porque así es como fue definido en la creación de la plantilla.
Al definir (o crear) la plantilla, cada atributo tiene que indicarse como y donde se utilizará. Por ejemplo, si tenemos dos palabras y queremos agregar una tercera entre medio de las dos, el atributo lo agregaríamos entre medio de esas dos palabras.
Digamos que tenemos el siguiente código:
<div>{{{1}}}</div>
En programación, más concretamente HTML, un div (<div>) es un contenedor invisible que ajusta su tamaño a su contenido, dentro de este div podemos agregar contenido, por ejemplo un texto. Cuando agregamos {{{1}}} lo que indicamos es que el primer atributo de la plantilla se escribirá en este lugar. Si tuviéramos 2 atributos, tendríamos {{{1}}} y {{{2}}}. Lo mismo si tuviéramos más atributos.
{{{1}}} {{{2}}} … {{{n}}}
{{Titulo | *Texto a mostrar* | 15 | … | nAtributo}}
Hay que tener en cuenta que no es lo mismo {{Titulo | *Texto a mostrar* | 15}} que {{Titulo | 15 | *Texto a mostrar*}}. En el primer caso el atributo {{{1}}} es *Texto a mostrar* y en el segundo caso el atributo {{{1}}} es 15. Si utilizamos este método para darles atributos a las plantillas, es muy importante el orden en el que les indicamos los atributos.
En caso de que una plantilla requiera un atributo y no le indicamos el atributo al hacer referencia a la plantilla, lo que mostrará sería {{{n}}} donde n es el número del atributo. Por ejemplo:
{{Titulo}}
Como podemos ver, no le estamos dando el atributo que indica el título que debe mostrar, por ende lo que escribirá como título es el texto "{{{1}}}". Si quisiéramos hacer que en caso de no especificarle el título al hacer la referencia de la plantilla, mostrara un texto predeterminado, deberíamos cambiarlo en la definición de la plantilla, donde tenga el {{{1}}}, deberíamos escribir Título de ejemplo. Si lo traducimos a palabras, esto lo que indica es, mostrar el primer atributo de la referencia de la plantilla, si no existe este atributo, mostramos el texto "título de ejemplo"
A esto lo podríamos tomar como una condición. En programación sería lo mismo que un if else. Si se cumple una condición, hace una cosa, si no se cumple, hace otra. Hay que aclarar que no puede haber una tercera condición, solo es una, si no existe el atributo, entonces escribe lo predeterminado.
Atributos con nombre
Como vimos, podemos hacer que una plantilla tenga atributos al poner {{{1}}}, {{{2}}},…, {{{n}}} y cuando hacemos referencia a la plantilla llamamos la plantilla y al usar el separador | podemos indicar el contenido de ese atributo. Pero esto puede no ser lo ideal en ocasiones, utilizando los atributos de esta manera estamos obligados a tener cuidado con el orden en el que escribimos los atributos, como se explicó anteriormente no es lo mismo {{Titulo | *Texto a mostrar* | 15}} que {{Titulo | 15 | *Texto a mostrar*}}.
Para evitar tener que preocuparnos por el orden en el que agregamos los atributos podemos asignarles un nombre. Por ejemplo, podríamos asignarle el nombre texto al atributo de la plantilla, en lugar de tener {{{1}}} tendríamos {{{texto}}} y al momento de hacer referencia a la plantilla lo haríamos con {{Titulo |texto=*Texto a mostrar*}}. De esta forma, no importa si hacemos {{Titulo | 15 | texto=*Texto a mostrar*}} o {{Titulo | texto=*Texto a mostrar* | 15}}, el texto que se mostrará como título siempre será *Texto a mostrar* independientemente del orden ya que al asignarles un nombre siempre tendremos una forma de hacerle referencia.
Como ejemplo, tenemos la plantilla que utilizamos en las búsquedas:
{{Quests |name= |id= |questgiver= |filename= |accept= |unlock= |complete= |reward= |start text= |finish text= }}
Esta plantilla tiene varios atributos donde no importa en que orden los pongamos ya que todos tienen un nombre para hacerle referencia. En este ejemplo podemos ver también que los atributos pueden ser un compuesto de palabras, por ejemplo "start text" donde son dos palabras pero cuenta como el nombre de referencia. Luego para agregarle un dato al atributo deberemos hacerlo después del =
En ocasiones podremos ver que las plantillas se pueden ver de la siguiente manera
{{Quests
|name=
|id=
|questgiver=
|filename=
|accept=
|unlock=
|complete=
|reward=
|start text=
|finish text=
Esto funciona de la misma forma, que lo veamos separados así simplemente es una forma de que podamos ver el código de una manera más limpia.