Bucles condicionales en SPIP (tipo IF)
Septiembre 2nd, 2008 | by Marga |Como es sabido, SPIP permite asociar un esqueleto específico a una sección específica. Esto permite tener diferentes vistas para distintas secciones. Hasta ahí todo va bien. Pero el problema surge cuando:
- Se crea una nueva sección: hay que crear (aunque sea copiando) un esqueleto específico para ella.
- Se realiza mantenimiento: hay que tener en mente el número de cada sección (y su significado en la estructura de contenidos).
Para evitar estos inconvenientes, una opción es tener un solo esqueleto rubrique.html y en él un estructura condicional (tipo if) controlada por palabras clave, de manera que asociando una determinada palabra clave a una sección se ejecute una parte del esqueleto u otra.
La sintaxis básica de un if de este tipo sería esta:
<BOUCLE_a(MOTS){id_rubrique}{titre=palabra_a}>
[(#REM) - Código que se ejecuta
si la sección tiene asociada la palabra "palabra_a"]
</BOUCLE_a>
</B_a>
[(#REM) - Código que se ejecuta en cualquir otro caso ]
<//B_a>
A continuación un ejemplo de la vida real, por partes.
Primero, un bucle que lista las subsecciones de una sección, poniendo un código HTML <ul> y </ul> antes y después de los <li>:
<B_lista_secciones>
<h2>Artículos en esta sección:</h2>
<ul>
<BOUCLE_lista_secciones(RUBRIQUES){id_parent}{par date}{inverse}>
<li><a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a></li>
</BOUCLE_lista_secciones>
</ul>
<//B_lista_secciones>
Segundo, un bucle similar que lista los artículos de una sección:
<B_lista_articulos>
<h2>Artículos en esta sección:</h2>
<ul>
<BOUCLE_lista_articulos(ARTICLES){id_rubrique}{exclus}{par date}{inverse}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
</BOUCLE_lista_articulos>
</ul>
<//B_lista_articulos>
Tercero, todo junto en una estructura if controlada por palabras clave. Si la sección tiene asociada la palabra clave “tipo_artículo” se listan sus subsecciones (como si fueran artículos) y si no, se listan sus artículos propiamente dichos:
[(#REM) - Lista las subsecciones como si fueran articulos si la palabra clave de la rubrique es = tipo_articulo ]
<BOUCLE_tipo_articulo(MOTS){id_rubrique}{titre=tipo_articulo}>
<B_lista_secciones>
<h2>Artículos en esta sección:</h2>
<ul>
<BOUCLE_lista_secciones(RUBRIQUES){id_parent}{par date}{inverse}>
<li><a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a></li>
</BOUCLE_lista_secciones>
</ul>
<//B_lista_secciones>
</BOUCLE_tipo_articulo>
</B_tipo_articulo>
[(#REM) - Sino, lista los articulos de la sección]
<B_lista_articulos>
<h2>Artículos en esta sección:</h2>
<ul>
<BOUCLE_lista_articulos(ARTICLES){id_rubrique}{exclus}{par date}{inverse}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
</BOUCLE_lista_articulos>
</ul>
<//B_lista_articulos>
<//B_tipo_articulo>
En otro artículo vamos a pner un ejemplo más complejo, con dos if anidados:
if else if else fin fin
Si, mientras lo ponemos, quieren ir haciendo sus propias conjeturas… ![]()

