Marcas loop y nifloop

La marca loop te permite definir áreas en plantillas de portada y taxonómicas, de tags, listados y tags jerárquicos. Prontus procesa cada bloque loop que encuentra iterando sobre los artículos que ese loop tenga asignados -ya sea manualmente en portadas o automáticamente en portadas taxonómicas- y mostrando los datos que correspondan de cada artículo. La marca nifloop te permite especificar código a mostrar si un loop está vacío.

Publicado: Jueves 4 de octubre de 2018 por David García
Última modificación: Viernes 21 de agosto de 2020
Nombre de la marca
loop, nifloop
Sintaxis básica
%%loop1(area 1)%% ... %%/loop%% , %%nifloop1%% ... %%/nifloop%%
Usable en:

Portadas

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

Marcas relativas:

_loopcounter

_totartics

La marca loop te permite definir áreas en plantillas de portada y taxonómicas, de tags, listados y tags jerárquicos. Prontus procesa cada bloque loop que encuentra iterando sobre los artículos que ese loop tenga asignados -ya sea manualmente en portadas o automáticamente en portadas taxonómicas- y mostrando los datos que correspondan de cada artículo.

En Portadas

El inicio del área se define %%loop(nº)(descripcion)%%, donde nº corresponde al número de área (1, 2, etc.) y para finalizar el área %%/loop%%.

La descripción del loop es opcional. Sirve para mostrar en el administrador de portadas de Prontus el significado de cada área.

Ejemplo de loop en Portadas:

%%loop70( descripción )%%
  %%if(_txt_titular)%%
    <li>%%_titular%%</li>
  %%/if%%
%%/loop%%
Opciones avanzadas para loops en portadas

Las portadas permiten especificar un límite máximo de artículos a procesar y mostrar, y también delimitar por tipos de artículos, con el formato siguiente

%%loop[n](título[,fids separados por |][,límite])%%

Estos últimos parámetros son opcionales, por ejemplo uno puede definir un loop especificando FIDs, o especificando un límite, o ambas cosas. En este último caso, el orden es "FIDs, límite".

Como mencionamos, puedes especificar que un área puede contener múltiples FIDs separándolos con un símbolo | ("pipe").

Estos son ejemplos de posibles loops:

%%loop1%% # loop básico, sin descripción.
%%loop1(destacados)%% # descripción
%%loop1(destacados,3)%% # descripción, límite.
%%loop1(destacados,fid_general,3)%% # descripción, un fid especificado, límite.
%%loop1("destacados, importantes",3)%% # descripción, límite. Una descripción con múltiples palabras que no incluya comas no necesita estar rodeada por comillas.
%%loop1(destacados importantes,fid_general|fid_link,3)%% # descripción, múltiples FIDs separados por |, límite.
%%loop1("destacados, importantes",fid_general)%% # descripción, FID.
%%loop1("destacados, importantes",fid_general|fid_link)%% # descripción, múltiples FIDs separados por |.
%%loop1("destacados, importantes",fid_general|fid_link,3)%% # descripción, múltiples FIDs separados por |, límite.
En Portadas Taxonómicas y Tags

En el caso de las Portadas Taxonómicas y Tags es opcional el número despues de la marca.

%%loop%%
  <div class="epigrafe">
    %%_secc_tema_stema_nom%%
  </div>
  <div class="titular">
    <a href="%%_file%%"><p>%%_titular%%</p></a>
  </div>
  %%if(_fechap)%%
    <div class="fecha">%%_fechapshrt%%</div>
  %%/if%%
  <div class="bajada">
    <p>%%_bajada%%</p>
  </div>
%%/loop%%

De todos modos, puedes usar múltiples loop en portadas taxonómicas o de tags, distinguiéndolos con números:

%%loop1%% ... %%/loop%%
%%loop2%% ... %%/loop%%
Uso de la marca _loopcounter

La marca _loopcounter es un contador de loop dentro de un área. Sirve para consultar en qué iteración del loop te encuentras.

Por ejemplo, si han publicado 5 artículos en el Area 1 de una portada y necesitas mostrar el primero publicado con una clase CSS distinta, podrías hacer lo siguiente:

%%loop1(área 1)%%
   %%if(_loopcounter = 1)%% 
     <div class="clase1">
       %%_txt_titular%%
     </div> 
   %%/if%%
      %%if(_loopcounter > 1)%% 
     <div class="clase2">
       %%_txt_titular%%
     </div> 
   %%/if%%
%%/loop%%

También es posible imprimir el dato en pantalla en caso de necesitarlo para algo, por ejemplo si necesitamos aplicar un id distinto a cada div, se podría hacer algo como esto:

%%loop1(área 1)%%
 <div id="titular%%_loopcounter%%">
   %%_txt_titular%%
 </div>
 %%/loop%%
Uso de la marca _totartics

La marca _totartics almacena el total de artículos publicados en un area. Sirve para saber la cantidad de artículos que se han publicado en un area específica.

Por ejemplo, si en el Area 1 de una portada se necesita mostrar una lista de artículos siempre y cuando el número de artículos publicados en dicha area sea mayor o igual 5, se podría hacer lo siguiente:

%%loop1(área 1)%%
  %%if(_totartics >= 5)%%
    <div>
      %%_txt_titular%%
    </div>
  %%/if%%
%%/loop%%
Comparación en Bloque IF entre _loopcounter y _totartics

Es posible comparar las marcas _loopcounter y _totartics para saber si estamos en el último ítem de la lista, por ejemplo:

%%loop1(área 1)%%
   %%nif(_loopcounter eq _totartics)%% 
     <div>
        %%_txt_titular%% 
     </div>
   %%/nif%%
   %%if(_loopcounter eq _totartics)%% 
     <div class="ultimo">
       Para terminar, %%_txt_titular%% 
     </div>
   %%/if%%
 %%/loop%%
Marca nifloop

Por el modo en que Prontus procesa los loops, no puedes hacer la comparación %%if(_loopcounter == 0)%% para cubrir el caso en que no hayan artículos cargados. Para eso puedes usar la marca nifloop:

%%nifloop[identificador]%%
  <h2>Solo verás este código si no hay artículos en el loop</h2>
%%/nifloop%%