Textes

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.


Mutins :) , le 7/08/2008 (dernière modif : 25/08/2010)

FORUM : Ils ont donné leur avis