Bouclothèque SPIP

Diviser le resultat d’une boucle SPIP sur plusieurs colonnes

On prend le résultat d’une boucle et on dispatche le nombre de réponses sur deux colonnes

Le code d’une page

<html>
<head>
<title>Couper une liste en deux colonnes</title>
<style type="text/css">
        .colonne { float:left; margin:5px; width:250px;}
</style>
</head>
<body>
[(#SET{cpt,0})]
<B_article_pop>
        #ANCRE_PAGINATION
        <h3>Les articles de la rubrique sur deux colonnes</h3>
        <h2>#TOTAL_BOUCLE articles sur #GRAND_TOTAL</h2>
        <div class="colonne">
<BOUCLE_article_pop(ARTICLES){id_rubrique=1}{par titre}{pagination}>
                [(#SET{cpt,[(#GET{cpt}|plus{1})]})]
                #TITRE ([(#GET{cpt})]/#TOTAL_BOUCLE)<br/>
        [(#TOTAL_BOUCLE|div{2}|ceil|=={[(#GET{cpt})]}|?{' ',''})
        </div>
        <div class="colonne">
        ]
</BOUCLE_article_pop>
        </div>
        <div style="clear: both"> </div>
        #PAGINATION
</B_article_pop>
</body>
</html>

Pour palier au fait que #COMPTEUR_BOUCLE renvoie la place des éléments sans tenir compte de la pagination (à la page 1 le premier élément aura un #COMPTEUR_BOUCLE==11) ; Ici on utilise un compteur (nommé cpt) pour connaitre la place de chaque élément indépendamment de la pagination : On insère tout simplement la fin du premier div et le début du deuxième si l’on est à la moitié des éléments de la liste.