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>                

Discussion

No discussion

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparait.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

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