Marcas condicionales if y nif

Las marcas if y nif permiten implementar comparaciones y condiciones para mostrar u ocultar bloques de código.

Publicado: Jueves 4 de octubre de 2018 por David García
Última modificación: Miércoles 28 de diciembre de 2022
Nombre de la marca
if, nif
Sintaxis básica
%%if([marca o condición])%% [código] %%/if%%, %%nif([marca o condición])%% [código] %%/nif%%
Usable en:

FID

Artículos

Portadas

Portadas taxonómicas, tags, listados, tags jerárquicos

Marcas relativas:

ifv

nifv

ifvc

Condicional if

El caso más sencillo es cuando la condición es el chequeo de la existencia o valor de una marca:

 %%if([nombre de marca])%%
  //código
%%/if%%

El código dentro de ese %%if%% solamente se mostrará si la marca %%_txt_bajada%% existe y tiene contenido (valores vacíos o número 0 validan de forma negativa). Otro caso común es para desplegar fotos si se cargaron.

%%if(fotofija_port_principal)%%
<img src="%%fotofija_port_principal%%">
%%/if%%

Si usas %%if([marca prontus] = [valor] )%% entonces el trozo delimitado se incluirá siempre que la variable posea un valor igual al que se indica dentro de la condición.

Operadores para comparaciones numéricas:

  • = o ==
  • !=
  • >
  • <
  • >=
  • <=

Ejemplos:

%%if(_seccion1 == 4)%%
//codigo usado si en el artículo se especificó la sección 1 como aquella con ID = 4.
%%/if%%

%%if(_seccion1 != 4)%%
//codigo usado si en el artículo se especificó en cualquier sección, excepto en aquella con ID = 4.
%%/if%%

%%if(valor_numerico > 2)%%
//codigo usado si el contenido de la marca %%valor_numerico%% es mayor que 2.
%%/if%%

%%if(valor_numerico >= 2)%%
//codigo usado si el contenido de la marca %%valor_numerico%% es mayor o igual que 2.
%%/if%%

%%if(valor_numerico < 2)%%
//codigo usado si el contenido de la marca %%valor_numerico%% es menor que 2.
%%/if%%

%%if(valor_numerico <= 2)%%
//codigo usado si el contenido de la marca %%valor_numerico%% es menor o igual que 2.
%%/if%%

Operadores para comparación de textos

  • eq (igualdad para texto)
  • ne (desigualdad para texto)
  • lt ("menor que para texto)
  • le ("menor o igual que" para texto)
  • gt ("mayor que" para texto)
  • ge ("mayor o igual que" para texto)
  • ~ (permite implementar comparaciones contra expresiones regulares)
%%if(_txt_titular eq un titular de prueba)%%
//codigo usado si el contenido de la marca %%_titular%% es exactamente "Un Titular de Prueba".
%%/if%%

%%if(marca_textual ne evitar)%%
//codigo usado si el contenido de la marca %%marca_textual%% no es "evitar".
%%/if%%

%%if(_fid ~ fid_general|fid_galeria )%%
//codigo usado si el valor de la marca %%_fid%% es "fid_general" o "fid_galeria".
%%/if%%

Uso erróneo

Las marcas condicionales realizan el chequeo en base al nombre real de la marca y no a su salida. Esto afecta por ejemplo a las marcas de texto txt_[identificador] y texto enriquecido vtxt_[identificador], donde el nombre real incluye el prefijo txt_ o vtxt_, y el identificador solo es una salida. Para la marca _txt_titular, el nombre de marca es _txt_titular, y _titular es una salida de esta marca. Si realizas la comparación en el bloque de condición del if usando la salida _titular, este condicional no funcionará. Ejemplo:

Ejemplo:

  %%loop70(pruebas)%%
%%if(_titular)%%
<a>%%_titular%%</a>
<h2> esto NO funcionará </h2>
%%/if%%
%%/loop%%

Uso Correcto

  %%loop70(pruebas)%%
%%if(_txt_titular)%%
<a>%%_txt_titular.raw%%</a>
<h2> Esto sí funcionará </h2>
%%/if%%
%%/loop%%

Condicional nif

Permite incluir un trozo de código siempre que la condición especificada no exista, ya sea porque el dato no existe (no fue ingresado por el operador) o porque no corresponda a un valor específico.

Debes usar %%nif(marca o comparación)%% para abrir una condición y cerrarla con %%/nif%%.

%%nif(fotofija_port200)%%
%%if(fotofija_port150)%%
<img src="%%fotofija_port150%%" width="%%_wfotofija_port150%%" height="%%_hfotofija_port150%%">
%%/if%%
%%/nif%%

Todas las reglas mencionadas para la marca if aplican también a nif.

Bloque ELSE

Prontus no soporta la marca ELSE actualmente. Para implementar un bloque if - else debes usar if y nif combinados:

%%if(condición)%% ... %%/if%%
%%nif(condicion)%% ... %%/nif%%