SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 31 visiteurs en ce moment

Accueil du site > Interactivité, échanges > Forums > Tutorial : les boucles forums

Tutorial : les boucles forums

7 avril 2004 – par BoOz – 29 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

5 votes

Nous allons faire ici le tour de ce qu’il faut savoir pour bien manipuler la boucle forum.

Ce tutorial est une application de la boucle forum décrite ici dans la documentation de Spip

Préalable

Créez une nouvelle rubrique et dedans un nouvel article, notez le numéro de la rubrique et créez un fichier vide que vous nommez article-XX.html ou XX est le numéro de la rubrique.

Le tutorial suivant va vous permettre de voir comment gérer les différents affichages utiles pour des forums étape par étape.

Les types de messages

On distingue deux types de messages :

-  Les sujets

Les sujets sont les messages de niveau 1, c’est à dire que l’on créer un sujet en répondant à un article (ou une brève, ou encore une rubrique).

-  Les réponses

Les réponses sont des messages de niveau 2 ou plus, une réponse est postée en répondant à un sujet ou à une réponse.

Répondre à un article

Pour répondre à un article il faut ajouter l’appel que voici

Ce code appelle par défaut la page forum.php3/html de Spip qui permet de rédiger un message, il faut impérativement le mettre dans le corps de la boucle article pour permettre à Spip de calculer correctement la valeur de #PARAMETRES_FORUM.

Afficher tous les Sujets

Voici une boucle qui permet de créer un sujet en réponse à un article, d’afficher les sujets et d’en compter le nombre. Recopiez la dans votre fichier article-XX.html et créez un certain nombre de sujets.

Afficher les 5 derniers sujets et leurs réponses directes

Voici maintenant comment lister les 5 derniers sujets, permettre d’y répondre et afficher les réponses directes à ces sujets (on comptera les réponses pour la forme)

Permettre de répondre aux réponses et voir ces réponses

Chaque message, quelque soit son niveau dans la hiérarchie des réponses, est considéré comme un élément de type (FORUMS), cela permet à Spip gérer les réponses aux réponses indéfiniment.

On accède aux réponses du niveau d’en dessous en utilisant le critère {id_parent} dans une boucle (FORUMS) contenue dans la boucle (FORUMS) du niveau supérieur.

Fort bien, mais comme on ne peut pas savoir par avance combien de niveaux de réponses va engendrer un sujet, il est impossible de prévoir le nombre de boucles de forum imbriquées nécéssaires, on utilisera donc une astuce qui va nous permettre de prendre en compte tous les cas de figure d’un coup : une boucle récursive.

Voici donc la même boucle que précédement, mais qui permet en plus de répondre aux réponses indéfiniment.

Compter les messages

Il peut etre intérressant pour une page d’accueil de formum de savoir le nombre de sujets et de contributions totales à un article.

-  Compter les sujets

Si vous êtes observateur vous avez remarqué que l’on compte les sujets comme ca :

On ne met qu’un espace au milieu de la boucle car ce qui nous intérresse c’est juste qu’elle tourne pour qu’on puisse compter le nombre de tour.

Vous voyez qu’avec le critère {id_article} Spip compte par défaut le nombre de réponses directement lié à l’article (donc Spip compte les sujets). Si on veut prendre en compte les réponses et les réponses de niveaux inférieurs (les réponses au sujet et les réponses à ces réponses), il faut ajouter le critère {plat} ca donne :

-  Compter tous les messages

En intégrant tout ça notre fichier article-XX devient :

Lister les sujets par date inverse des réponses

Âmes sensibles s’abstenir...

Jusqu’ici on listait les sujets du plus récent au plus ancien, mais bien souvent ce qui nous interesse quand on liste les sujets c’est de faire « remonter » un sujet en haut de la pile lorsqu’il recoit une nouvelle réponse. Il faut donc trier les sujets par rapport à la date de leur dernière réponse. Vous êtes bien accrochés ???

-  Récupérer le sujet à l’origine de la discussion où le dernier message a été posté

Pour cela il va falloir utiliser le critère {id_enfant} qui permet de remonter d’un cran. On peut donc savoir de quel message le message courant est la réponse. Mais pour retrouver le sujet il va falloir remonter jusqu’en haut, c’est à dire jusqu’a ce que le message courant n’ai plus de message père car le sujet c’est précisement le message qui n’a pas de père.

L’idée est donc de remonter la hierarchie depuis le dernier message grâce à une boucle récursive et quand on ne trouve plus de résultat (ce qui veut dire qu’on est arrivé en haut) on affiche (donc en code alternatif) le titre du message : qui sera le sujet.

Bon maintenant qu’on a réussit à récupérer le sujet du dernier message on va pouvoir continuer avec les autres messages les plus récents, mais on risque d’avoir un problème si les messages proviennent d’un sujet déjà listé en effet il ne faudrait pas re lister même le sujet.

En général dans Spip il suffit de mettre le critère {doublons} pour s’assurer que Spip ne re affiche pas un élément déjà affiché par une autre boucle, mais malheureusement ca ne marche pas à l’intérieur d’une même boucle.

Donc pas la peine de tenter de lister les messages issus du sujet qu’on vient de trouver dans une boucle imbriquée avec un {doublons} et de mettre un {doublons} à la boucle liste, ca ne marchera pas parce qu’on reste dans la boucle liste. Du coup on va utiliser un tableau php et vérifier que le sujet n’est pas déjà dedans avant de l’afficher.

Et au final notre tutorial devient :

Voilà vous savez tout, c’est grâce à ces notions qu’on peut réaliser un forum style phpBB en Spip

Retour en haut de la page

Vos commentaires

  • Le 3 mars 2005 à 09:42, par ? En réponse à : > Tutorial : les boucles forums

    Je tente mais vainement de trouver la solution à ce probleme :
    Lorsqu’une réponse est faite sur un article, elle est redirigée par mail à l’auteur.
    Lorsque l’auteur répond au commentaire, la réponse à la réponse lui est retournée par email. En fait il s’écrit lui même !
    Je n’arrive pas à trouver une solution pour que la réponse de la réponse soit adressée par mail à celui qui a posté la première réponse et ainsi de suite pour les autres commentaires d’autres visiteurs ayant laissé leurs e-mails.
    Est ce insurmontable ?

    • Le 8 septembre 2008 à 13:31, par ? En réponse à : > Tutorial : les boucles forums

      Cette aide est vraiment complete, je vous invite aussi à visiter mon propre site de tutoriaux, en esperant aider à mon tour.

    • Le 13 novembre 2008 à 10:07, par vincseize En réponse à : > Tutorial : les boucles forums

      Merci pour les tutos ;

      Néanmoins j’ai une question qui va vous paraitre simple mais :

      Je souhaite changer de mode de tri dans une boucle :

      if telle URL

      <BOUCLE_messages(FORUMS){id_article}{plat}{ par titre }{pagination #CONFIG{spipbb/fixlimit}}>

      else
      <BOUCLE_messages(FORUMS){id_article}{plat}{ par date_thread }{pagination #CONFIG{spipbb/fixlimit}}>

      J’ai tenté de recupérer les variables en php, pour les utiliser à la place de par titre ou par date_thread

      ou de carrement reécrire la ligne p>

      Quelqu un pourrait il m’expliquer l’astuce pour une utilisation de Boucle Conditionnelles sous Spip, le bon vieux, IF ELSE !?

      Merci d’avance

    • Le 13 novembre 2008 à 11:46, par BoOz En réponse à : > Tutorial : les boucles forums

      Tu peux utiliser le filtre conditionnel.

      si oui : [(#ENV{truc}|?{' ',''}) <INCLURE{fond=uneboucle}{id_article}> ]

      si non : [(#ENV{truc}|?{'',' '}) <INCLURE{fond=uneautreboucle}{id_article}> ]

    Répondre à ce message

  • Le 3 mars 2008 à 22:22, par shinoo En réponse à : Tutorial : les boucles forums

    bonjour

    je souhaiterai realiser un forum exactement comme celui de spip_contrib
    c’est à dire que l’on puisse ecrire une reponse à l’article qui se positionne en tete du forum avec possiblité de repondre a la reponse et qui s’affiche juste en dessous de celle-la.

    serait-il possible que quelqu’un puisse m’envoyer les squelettes utiles à cette présentation ?

    merci d’avance

    Répondre à ce message

  • Le 8 février 2008 à 19:51, par Zeit En réponse à : Tutorial : les boucles forums

    Bonjour,

    J’utilise Spip 1.9.2 et j’aimerais savoir comment empecher les utilisateurs de poster du HTML dans les forums ?

    j’utilise le filtre supprimer_tags, mais ca enleve toute la mise en page faite avec la barre typographique :’(

    Répondre à ce message

  • Le 19 juillet 2007 à 18:36, par Zerocool En réponse à : Tutorial : les boucles forums

    salut

    il parait qu’avec spip 1.9.2 plus besoins de php pour faire remonté un topic qui vient de recevoir une reponse voici ma boucle pour affiché les topic de mes rubriques pouvez-vous m’aider

    <BOUCLE_thread(FORUMS){id_rubrique}{par date}{inverse}>
    <a href="spip.php?page=forum-message&(#PARAMETRES_FORUM)" class="lien_titre">#TITRE</a>
    </BOUCLE_thread>

    Merci

    • Le 20 juillet 2007 à 11:22, par BoOz En réponse à : Tutorial : les boucles forums

      il parait qu’avec spip 1.9.2 plus besoins de php pour faire remonté un topic qui vient de recevoir une reponse

      Tout à fait, depuis spip 1.8 il suffit de classer les messages de la boucle FORUMS avec le critère {par date_thread} et zou, ca remonte tout seul (comme dans phpBB ou Gmail)

    • Le 20 juillet 2007 à 13:07, par zerocool En réponse à : Tutorial : les boucles forums

      ok cool
      sinon on peut mettre un logo devant chaque topic pour voir si il y a eu un nouveau message ou pas (comme sur tous les forums) quelqu’un a reussis a faire ça ?

    • Le 23 août 2007 à 21:25, par ? En réponse à : Tutorial : les boucles forums

      C’est pas simple de connaitre les nouveaux messages, et tout depend de la complexite que tu veux donner au systeme. Mais en gros il faut stocker quelques part les threads qu’il a déjà vu, ce qui peux se reveler un peu compliquer dans la db sinon y a l’option des cookies :)

    Répondre à ce message

  • Le 13 octobre 2004 à 20:52, par ? En réponse à : tentative de BOUCLE forums les + actifs

    bonjour,

    j’ai tenté de faire une boucle de type « les 5 forums les + actifs », mais je n’arrive qu’à remonter une liste de articles qui ont au moins un avis... après je bloque.

    comment faire puisqu’il n’existe pas de #POPULARITE sur les forums ?
    et encore la popularité concerne la lecture, non pas le nombre de posts sur un même forum.

    merci

    • Le 14 octobre 2004 à 11:25, par BoOz En réponse à : > tentative de BOUCLE forums les + actifs

      Les plus actifs, c’est ceux qui ont le plus de contributions par exemple ce mois ci. Donc il suffit de faire une boucles qui compte le nombre de messages pour chaque article ce mois ci, et d’afficher celui dont le total boucle est le plus élevé.

    • Le 9 juillet 2007 à 18:30, par ? En réponse à : > tentative de BOUCLE forums les + actifs

      Bonjour,

      Je suis intéréssé par votre méthode.
      En effet je désire moi aussi créer une boucle de type « les forums les +actifs ».

      Si je suis votre méthode, pas de problèmes pour compter le nombre de message par article, mais je ne comprends pas comment ensuite on peut seulement afficher celui qui en a le plus.

      Voici ce à quoi ressemble actuellement ma boucle :

      <B_most-forum>
      <ul>
      <BOUCLE_most-forum(ARTICLES){id_rubrique=121}{0,2}>
      <BOUCLE_combien2(FORUMS){id_article}{plat}></BOUCLE_combien2>
      [<li><a href="#URL_ARTICLE">(#TITRE|supprimer_numero)</a> : #TOTAL_BOUCLE mess.</li>]
      <//B_combien2>
      </BOUCLE_most-forum>
      </ul>
      </B_most-forum>

      Quelqu’un peut-il m’aiguiller ?

    Répondre à ce message

  • Le 9 juin 2007 à 09:06, par Vincent En réponse à : Notes de bas de page dans les messages du forum ?

    Bonjour,

    J’aimerais savoir s’il est possible que les visiteurs de mon forum (spip 1.9.1) puissent, dans leurs messages, inclure des notes de bas de page. C’est curieux car si j’en mets une ici [1], le lien vers la note s’affiche mais pas la note. :-(
    Merci à ceux qui voudront m’aider.

    [1Notes.

    Répondre à ce message

  • Le 3 mai 2007 à 23:17, par Gwenbzh29 En réponse à : Modifier le mot Répondre dans les forum

    Bonjour, je voudrai changer le mot « Répondre » lors de l’utilisation des forum (répondre à cet article ou répondre à ce message).
    Je voudrai mettre « Réagir ».
    Merci de me dire ou modifier ce paramètre , je ne le trouve pas dans le fichier local_fr du dossier lang.

    • Le 4 mai 2007 à 12:53, par b_b En réponse à : Modifier le mot Répondre dans les forum

      Bonjour,

      Ces informations sont dans le fichier ecrire/lang/public_fr.php vers la ligne 95 :

      ’repondre_article’ et ’repondre_message’

      Tu dois pouvoir modifier ces informations dans un fichier local_fr.php à placer dans ton dossier squelettes, comme ça tu ne perdras pas ces modifications lors d’une mise à jour de Spip.

    Répondre à ce message

  • Le 7 mai 2006 à 16:51, par philou22 En réponse à : créer un forum ss yaaa

    Bjr à tous,

    Bon ! je suis pas un pro de spip mais j’ai quand même créé un site avec le squelette yaaa. Le souci c’est qu’il n’intègre pas de forum. Je voudrai en créer un (qui permette aux visiteurs de réagir aux articles lus ou sur tout autre sujet). J’ai lu « le tutorial forum ». Mais le niveau est un peu haut pr moi...

    Quelqu’un peut il m’aider et m’expliquer simplement, pas à pas ce qu’il faut faire ?

    Merci de votre aide.

    PS : j’aimerais tellement un tel forum sur mon site ;-)

    Répondre à ce message

  • Le 10 août 2005 à 12:39, par thierry En réponse à : > Tutorial : les boucles forums

    Bonjour, une demi-journée que je cherche comment offrir la possibilité de poster un commentaire selon les articles. Ce tuto est absolument parfait sauf que je ne trouve rien de rien sur la manière de personnaliser le formulaire permettant d’entrer une réponse (taille des boite de saisie, couleur etc...). Vraiment je bloque, quelqu’un pourrait-il me mettre sur la voie ?
    Merci.

    Répondre à ce message

  • Le 5 juillet 2005 à 14:58, par Ysengrin En réponse à : Boucle « Les 5 derniers commentaires » -> renvoyer sur l’article

    Bonjour,

    Voici le site : http://www.demain-la-terre.net

    Et voici mon souci :

    En Une du site nous affichons les « 5 derniers commentaires », lesquels, attention, peuvent être d’un article OU d’une brève.

    A l’origine, pas de problème : en cliquant sur le lien, on aboutissait à la page de l’article ou de la brève, c’est exactement ce que je veux.

    MAIS (tiré de http://www.spip.net/fr_article908.html) « #URL_FORUM donne, depuis [SPIP 1.8], l’adresse canonique de la page qui affiche le message de forum ». Et ça ça me plait pas du tout, c’est pas joli, moi, je veux arriver sur la page du texte !

    Quelqu’un saurait-il faire ça ? ? ?

    (j’ai cru trouvé une solution en renvoyant sur la page id = #PARAMETRES_FORUM... mais je coince encore une fois, puisque la page en question peut être brève OU article ! :-( )

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d'abord sur gravatar.com (gratuit et indolore) et n'oubliez pas d'indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Une licence pour un article

    18 avril 2007 – 25 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Sur une idée originale de erational, voici un plugin permettant de lier une licence à un article.

  • Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.

  • Navigation AJAX

    31 janvier – 18 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet de modifier automatiquement une parties des liens internes de manière à ce qu’ils ne déclenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains éléments spécifiés à l’avance. Il permet aussi de (...)