Mon, 22 Feb 2010 00:06:32 +0100, Miguel:
Me intenté basar en este contrib
Lister par année puis par mois - SPIP-Contrib
Si, pero quitaste el criterio {fusion} que es esencial. Éste es
necesario para hacer sólo un paso de bucle por año (por ejemplo), y no
por cada artículo.
Puedes seguir el ejemplo, pero síguelo totalmente, y lo vas adaptando
paso a paso, comprobando que siga funcionando cada vez.
Tengo un cacao mental y no acabo de ver lo que me intentas explicar
Lo que te explicaba en el mensaje anterior es que tu organización tal y
como la hiciste, no puede funcionar: tu boucle2 recorre cada artículo
y va escribiendo su fecha, lo cual no quieres: sólo quieres cada fecha
distinta una vez. El hecho de añadirle boucle3 adentro, sólo aumenta el
número de cosas escritas por boucle2.
Entonces te hablé de una manera de hacer que consiste en recorrer
efectivamente cada artículo con boucle2 (así normal, sin agregarle
boucle3 adentro), y controlar con |unique si pones o no la fecha. Y el
separador lo puedes poner incluir antes de la fecha, para que aparezca
a cada cambio de fecha.
[<div class="archive-separator"></div>
<div class="archive-post-date">
<div class="archive-post-day">(#DATE|jour|unique{dia})</div>
<div class="archive-post-month">[(#DATE|mois|couper{3})]</div>
<div class="archive-post-month">[(#DATE|annee)]</div>
</div>]
Como ves, todo el bloque se escribe sólo si #DATE|jour|unique{dia}
tiene un valor, es decir sólo la primera vez que se encuentre el día.
De esta forma vas recorriendo los días uno por uno sin complicación
adicional, omitiendo sólo la fecha cuando ya se ha encontrado antes.
Otra técnica es la que está explicada en el artículo que mencionaste de
spip-contrib, usando el criterio {fusion}, es decir el GROUP BY de SQL.
Lee la documentación de éste si no tienes claro qué hace.
(Por cierto, como detalle: deberías intentar hacer la separación visual
sin añadir un elemento HTML falso. Jugando con CSS lo puedes conseguir,
pero ya es otro asunto.)
--
davux