-
Bucles condicionales en SPIP (tipo IF)
No CommentsComo 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…
