Derniers messages de l’ensemble des forums

Comment afficher pour l’ensemble des articles d’un site une liste chronologique du dernier message forum de chacun des articles ?

Testé avec Spip 2.1.10

Dans Spip les propriétés des articles permettent que chaque article soit suivi d’un forum de discussion.

Un visiteur régulier du site souhaite savoir d’un coup d’oeil quels articles ont eu de nouveaux commentaires dans leur forum. Pour cela on doit créer une liste chronologique du dernier message forum reçu par chacun des articles. Disons par exemple depuis 2 mois. Cette liste ne doit comporter que le dernier message de chaque article, et non pas tous les messages reçus par chaque article depuis 2 mois. Cette liste doit aussi éliminer certaines rubriques et secteurs qu’on ne veut pas montrer sur la page affichée compte tenu du thème de la page, par exemple.

En Spip cela ne peut pas se résoudre par une boucle article, ni par une boucle forum. Par contre l’imbrication de deux boucles et l’utilisation du filtre « doublons » conduit au résultat recherché.

On peut voir le résultat ici en bas de page d’accueil : http://www.plaisance-pratique.com/

Explication :

  • La première boucle “doublons” permet d’éliminer tous les fils de discussion des secteurs X,Y,Z
  • La seconde boucle “doublons” éliminera tous les fils des rubriques X,Y,Z
  • La troisième boucle assure deux fonctions :
    • ne pas montrer des résultats qui appartiennent aux secteurs/rubriques X,Y,Z grâce au filtre “doublons”
    • afficher une liste des 40 derniers messages, et ceci en ne montrant que le dernier message de chaque article grâce au filtre “doublons”, la base de donnée n’est examinée que sur les 60 jours derniers jour.
<!-- Si on veut cacher les réponses forum des articles des secteurs X,Y,Z-->
<BOUCLE_supp_rub_cache(ARTICLES){id_secteur IN X,Y,Z}{tout_voir}>
    <BOUCLE_supp_cache(FORUMS){id_article}{plat}{doublons}>
    </BOUCLE_supp_cache>
</BOUCLE_supp_rub_cache>  
<!-- Si on veut cacher les réponses forum des articles des rubriques X,Y,Z-->
<BOUCLE_supp_rub_cach(ARTICLES){id_rubrique IN X,Y,Z}{tout_voir}>
    <BOUCLE_supp_cach(FORUMS){id_article}{plat}{doublons}>
    </BOUCLE_supp_cach>
</BOUCLE_supp_rub_cach>

<!-- on affiche la liste de 40 items : l'auteur du dernier message, l'URL du message forum, et le titre de l'article -->
<B_sujet_forum>
        #SET{i,0}
        <ul>
        <BOUCLE_sujet_forum(FORUMS){plat}{doublons}{par date}{inverse}{age<60}>
                <B_arti>
                        [(#GET{i}|<={40}|oui)
                        <li>[(#DATE|jour)]-[(#DATE|mois)]
                        ]
                        <BOUCLE_arti(ARTICLES){id_article}{doublons}>
                                [(#GET{i}|<={40}|oui)
                                <a href="#URL_AUTEUR" title="[(#NOM)]">[(#NOM)] : &nbsp;                                
                                <a href="#URL_FORUM" title="[(#TITRE)]">&nbsp;[(#TITRE)]</a></li>
                                ]
                        </BOUCLE_arti>
                        #SET{i,#GET{i}|plus{1}}
                </B_arti>                        
        </BOUCLE_sujet_forum>
        </ul>
</B_sujet_forum>                

updated on 2 May 2012

Discussion

Aucune discussion

Ajouter un commentaire

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom