ParserFunctions permite la visualización condicional de filas, columnas o celdas de la tabla (y en realidad, casi cualquier otra cosa). Pero las funciones del analizador tienen algunos límites.
Uso basico
El siguiente ejemplo muestra un uso básico para el #if
que está disponible en la extensión ParserFunctions :
{{#if: {{{ variable_foo | }}} | foo está configurado como '' ' {{{ variable_foo }}} ' '' | foo está '' en blanco '' }}
Aquí, {{{variable_foo}}}
se verifica para ver si está definido con un valor que no esté en blanco. La siguiente tabla muestra el resultado de una llamada de plantilla (llamaremos a la plantilla ) con diferentes valores para :{{Conditional tables/example 1}}
{{{variable_foo}}}
Llamada de plantilla | Resultado |
---|---|
{{Conditional tables/example 1}} | foo está en blanco |
{{Conditional tables/example 1|variable_foo=}} | foo está en blanco |
{{Conditional tables/example 1|variable_foo=value}} | foo se establece en valor |
Los parámetros posicionales, {{{1}}}
etc., funcionan como parámetros con nombre:
{{#if: {{{ 1 | }}} | El primer parámetro es '' ' {{{ 1 }}} ' '' | El primer parámetro es '' en blanco '' }}
Llamada de plantilla | Resultado |
---|---|
{{Conditional tables/example 1b||bar}} | El primer parámetro está en blanco |
{{Conditional tables/example 1b|foo|bar}} | El primer parámetro es foo |
{{Conditional tables/example 1b|[[m:|not empty]]}} | El primer parámetro no está vacío |
{{Conditional tables/example 1b|bad=idea}} | El primer parámetro está en blanco |
{{Conditional tables/example 1b|1=ok=yes}} | El primer parámetro está bien = sí |
Observe cómo el símbolo de la tubería (barra vertical) en el enlace funciona tal cual, no es tan fácil dentro de las tablas Wiki, vea a continuación.
Ocultar filas por completo
También es posible ocultar filas de datos dentro de una tabla, sin embargo, hay problemas que debe tener en cuenta.
Uso incorrecto
Desafortunadamente, #if
la sintaxis de la tabla de MediaWiki no funciona bien en conjunto. Por ejemplo, lo siguiente, {{ Tablas condicionales / ejemplo 2 }} no es válido y no funcionará:
{| class = "infobox"{{#if: {{{variable_foo |}}}|| -! Foo| {{{variable_foo}}}}}| -! Bar| {{{variable_bar}}}|}
La siguiente tabla demuestra el efecto cuando se usa {{ Tablas condicionales / ejemplo 2 }}:
Llamada de plantilla | Resultado | |||
---|---|---|---|---|
{{ Tablas condicionales / ejemplo 2 }} |
| |||
{{ Tablas condicionales / ejemplo 2 | variable_foo =}} |
| |||
{{ Tablas condicionales / ejemplo 2 | variable_foo = | variable_bar = bar}} |
| |||
{{ Tablas condicionales / ejemplo 2 | variable_foo = valor}} |
| |||
{{ Tablas condicionales / ejemplo 2 | variable_foo = valor | variable_bar = bar}} |
|
El problema es con el uso del carácter de barra vertical ( |
). Este carácter, en las llamadas de plantilla, se utiliza para separar parámetros y, por tanto, no es válido.
Uso Correcto
Plan A
Un método para ocultar filas en tablas (u otras estructuras dentro de tablas) usa HTML directamente. [1] HTML es más complicado que la sintaxis de tabla de MediaWiki, pero no mucho más. En general, solo hay un puñado de etiquetas HTML que debe conocer.
- esta etiqueta crea una nueva fila (similar a la|-
sintaxis de la tabla de MediaWiki)
- esta etiqueta crea una nueva celda de encabezado dentro de una fila (similar a la!
sintaxis de la tabla de MediaWiki)
- esta etiqueta crea una nueva celda dentro de una fila (similar a la|
sintaxis de la tabla de MediaWiki)
- esta etiqueta crea un título (similar a|+
en la sintaxis de la tabla de MediaWiki)
Trabajando desde el ejemplo de plantilla no válido anterior, al cambiar a HTML, terminamos con el siguiente código:
{| class = "infobox"{{#if: {{{variable_foo |}}}| < tr > < th > Foo th > < td > {{{variable_foo}}} td > tr > }}| -! Bar| {{{variable_bar}}}|}
El código anterior está en {{ Tablas condicionales / ejemplo 2a }}. Como antes, la siguiente tabla demuestra el efecto cuando se usa:
Llamada de plantilla | Resultado | ||||
---|---|---|---|---|---|
{{ Tablas condicionales / ejemplo 2a }} |
| ||||
{{ Tablas condicionales / ejemplo 2a | variable_foo =}} |
| ||||
{{ Tablas condicionales / ejemplo 2a | variable_foo = | variable_bar = bar}} |
| ||||
{{ Tablas condicionales / ejemplo 2a | variable_foo = valor}} |
| ||||
{{ Tablas condicionales / ejemplo 2a | variable_foo = valor | variable_bar = bar}} |
|
Plan B
Como se señaló anteriormente, el único problema es la barra vertical o el símbolo de tubería dentro de una plantilla. A menudo es lo suficientemente bueno para reemplazar los caracteres problemáticos por referencias numéricas, por ejemplo, "{" por {, "|" por |y "}" por }. Pero para las tablas Wiki, un verdadero "|" Se requiere delimitador; el uso |no funciona como delimitador.
Un simple truco permite proteger el "|" en los valores de los parámetros de la plantilla sin dejar de llegar como "|" real delimitador en la tabla Wiki, vea la palabra mágica {{!}} . Tenga en cuenta que "!" (signo de exclamación) no tiene problemas con las plantillas, es el otro delimitador utilizado en las tablas Wiki. Aquí está el código para el plan B:
{| class = "infobox"{{#if: {{{foo |}}} |{{!}} -! Foo{{!}} {{{foo}}}}}| -! Bar| {{{bar}}}|}
El código anterior está en {{ Tablas condicionales / ejemplo 2b }}. Como antes, la siguiente tabla demuestra el efecto cuando se usa:
Llamada de plantilla | Resultado | ||||
---|---|---|---|---|---|
{{Conditional tables/example 2b|bar=nobar}} |
| ||||
{{Conditional tables/example 2b|foo=|bar=vbar}} |
| ||||
{{Conditional tables/example 2b|foo=value}} |
| ||||
{{Conditional tables/example 2b|foo=value|bar=vbar}} |
|
Plan C
Quizás la opción más simple es usar el condicional con la propiedad CSS "display: none" de la siguiente manera:
{| class = "infobox"| - {{#if: {{{variable_foo |}}} | | style = "display: none;" }}! Foo| {{{variable_foo}}}| -! Bar| {{{variable_bar}}}|}
De esta forma, no es necesario que el carácter de barra vertical de wikitables aparezca en el condicional #if. Sin embargo, las fuentes y notas a las que se hace referencia en las celdas silenciadas no se suprimirán con el resto de contenidos, en el sentido de que continúan apareciendo al final de un artículo sin ninguna referencia a ellas en el texto del artículo. Además, este método solo funciona con navegadores compatibles con CSS.
El código anterior está en {{ Tablas condicionales / ejemplo 2c }}. Como antes, la siguiente tabla demuestra el efecto cuando se usa:
Llamada de plantilla | Resultado | ||||
---|---|---|---|---|---|
{{Conditional tables/example 2c|variable_bar=bar}} |
| ||||
{{Conditional tables/example 2c|variable_foo=|variable_bar=bar}} |
| ||||
{{Conditional tables/example 2c|variable_foo=foo}} |
| ||||
{{Conditional tables/example 2c|variable_foo=foo|variable_bar=bar}} |
|
Obteniendo ayuda
Si no puede conseguir una plantilla que se comporte como le gusta, puede intentar preguntar en Village Pump , realizar una solicitud en Requested templates o ponerse en contacto con un editor a través de IRC .
Ver también
Para evitar filas en blanco en el caso de filas opcionales sucesivas, consulte m: Ayuda: Tabla # Fila de tabla condicional .
Para obtener más información sobre #if
(y otras # funciones), consulte:
- mw: Ayuda: Extensión: ParserFunctions
Los siguientes temas de ayuda tratan con las plantillas:
- m: Ayuda: Plantilla
- m: Ayuda: Plantillas avanzadas
Este tema de ayuda trata sobre el diseño de tablas (dado que la mayoría de las plantillas usan tablas, esto puede ser útil):
- Ayuda: Tabla
Y finalmente:
- Plantilla: Infobox : una plantilla de infobox "genérica" que demuestra estos métodos.
- Ayuda: expresiones condicionales
notas y referencias
- ^ El uso de código de tabla HTML en plantillas puede hacer que no sean portables a otras wikis de MediaWiki . Esto se debe a que Wikipedia y otros wikis de la Fundación Wikimedia procesan el wikitexto a través de HTML Tidy ; la mayoría de las otras wikis no tienen la misma configuración y las etiquetas de la tabla HTML no se procesan. Ver Wikipedia: WikiProject Transwiki # Plantillas especiales .