SPIP-Contrib

SPIP-Contrib

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

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

Accueil du site > Dates, calendriers et agendas > Calendriers > Archives Calendriers > Boucle « MESSAGES »

Boucle « MESSAGES »

2 août 2006 – par elafargue – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Cet article décrit la création d’une nouvelle boucle, qui tire parti du nouveau compilateur de Spip 1.8.2+, et permet de créer de nouvelles boucles avec un minimum d’efforts

Spip 1.8.2 a introduit de nouveaux filtres permettant d’afficher des éléments sous forme de calendrier, similaire au calendrier de l’espace privé.

Ces filtres (agenda_memo et agenda_affiche) peuvent récupérer des brèves, des articles, ou d’autres éléments Spip qui sont atteignables dans des boucles, puis les injecter dans des filtres qui génèrent un calendrier en HTML.

Ce calendrier partage son code avec le calendrier de l’espace privé, ce qui est parfait en terme d’interface utilisateur.

Cette interface utilisateur commune entre espace public et espace privé m’a logiquement conduit a également vouloir pouvoir faire apparaitre les messages et rendez-vous qui sont d’habitude uniquement visibles dans l’espace privé, à l’intérieur du calendrier de l’espace public.

Plutôt que d’adopter une approche ’brutale’ et forcer la génération des évènements via des requêtes SQL à l’intérieur du filtre de génération du HTML du calendrier, j’ai décidé de mettre à contribution les nouvelles fonctions du compilateur de boucles Spip, et de créer une nouvelle boucle ’MESSAGES’ qui permet de taper dans la table ’spip_messages’. Ensuite, il suffit simplement d’utiliser ’agenda_memo’ pour y ajouter les messages privés.

Cet article constitue donc également un bon exemple de comment créer une nouvelle boucle facilement.


Que faut-il mettre dans ’mes_fonctions.php3’ ?

Plutôt qu’un long discours, je pense que du code commenté sera plus parlant. Attention, le nouveau compilateur est puissant, ça va très vite !

Pour une introduction à la notion de nouvelles boucles, voyez le ’Spikini’, et particulièrement l’entrée NouvelleBoucle qui pose les bases... mais ne dit pas tout ! En particulier, aucune mention des tableaux ’$table_des_tables’ et compagnie :

... et c’est tout ! Efficace, non ?

En utilisation pratique, il suffira simplement d’utiliser des boucles ’MESSAGE’ comme suit :

Cette boucle mérite tout de même quelques commentaires :

-  texte == Key_Word$ : permet de ne choisir que les rendez-vous qui contiennent ’Key_Word’ en fin de descriptif. Très commode pour contourner le fait que les rendez-vous et messages ne sont pas liés à des catégories
-  id_auteur=#USERID est une balise ’perso’, dont le code est ci-dessous : ceci empêche de sortir des messages qui n’appartiennent pas à leur auteur. (attention, pour que cette balise fonctionne correctement, il faut que le cache du squelette ait un délait de 0)

Note : ceci est le mieux que j’ai trouvé pour introduire la notion « d’utilisateur courant », avec un impact négatif sur le cache de Spip... Si quelqu’un a une solution plus élégante, je suis preneur !

En ce qui concerne la définition de la boucle « MESSAGES », il pourrait être judicieux d’introduire un contrôle à l’intérieur de la boucle même, pour éviter qu’une erreur de codage dans le squelette puisse permettre à un utilisateur de voir les rendez-vous de quelqu’un d’autre.

J’espère que ceci vous aura plu, et que cela aura un peu éclairci la manière de définir de nouvelles boucles. Si un ’vrai’ développeur de Spip peut ajouter ses commentaires pour dire si effectivement, il s’agit de la bonne manière ou non, allez-y !

Edouard Lafargue

Retour en haut de la page

Vos commentaires

  • Le 26 janvier 2009 à 20:34, par ? En réponse à : Boucle « MESSAGES »

    Bien pratique effectivement...

    Répondre à ce message

  • Le 30 septembre 2008 à 13:43, par pips_s En réponse à : Boucle « MESSAGES »

    J’ai pensé m’inspirer de ce tuto pour écrire une boucle qui me retournerait tous les mots clés (classés pas ordre alphabétique) utilisés dans les articles publiés.

    La requête SQL est la suivante :

    SELECT spip_mots.titre
    FROM spip_mots
    WHERE id_mot IN (
    SELECT id_mot
    FROM spip_mots_articles WHERE id_article IN (
    SELECT id_article
    FROM spip_articles WHERE statut=’publie’
    )
    )
    ORDER BY titre ;

    et si j’ai bien compris avec la méthode décrite on ne peut requêter qu’une base à la fois.

    Quelqu’un a une idée ?

    Répondre à ce message

  • Le 29 décembre 2006 à 12:42, par jjmeric En réponse à : Boucle « MESSAGES » en version 1.9.1

    en version 191, le boucle MESSAGES n’existe toujours pas dans
    ecrire/public/boucles
    Je l’ai donc créé comme en 1.8.2 dans mes_fonctions et suivant les conseils de cette excellente contrib....

    MAIS je reçois le message d’erreur suivant :

    Parse error : parse error, unexpected ’=’, expecting ’)’ in C :\Program Files\EasyPHP 2.0b1\www\ecrire\public\composer.php(73) : eval()’d code on line 20

    Avez-vos une idée de ce qui se passe ?

    • Le 25 janvier 2007 à 00:19, par libertoun En réponse à : Boucle « MESSAGES » en version 1.9.1

      Avec la version 191 il semblerait que la nouvelle écriture utilise des tableaux. Donc il faut corriger le code par ce genre de ligne :

      $boucle->where[] = array("’=’", « ’messages.statut’ », "’\"publie\"’") ;
      $boucle->where[] = array("’=’", « ’messages.rv’ », "’\"oui\"’") ;

    • Le 20 février 2008 à 20:47, par reda En réponse à : Boucle « MESSAGES » en version 1.9.1

      Bonjour,

      je suis novice avec spip et je vois que pas mal de monde a déjà tenté de rajouter le calendrier des rendez vous (par exemple) dans l’espace public et notament dans sommaire.html. j’ai moi même regardé et j’avoue avec le peu de temps que j’ai eu rien n’en n’est sorti.

      Avez vous une méthode pour spip 1.9.2d ?

      merci d’avance pour votre contribution :)

    • Le 21 février 2008 à 10:12, par libertoun En réponse à : Boucle « MESSAGES » en version 1.9.1

      C’est tout à fait possible d’insérer le calendrier de la partie privée dans la partie public. Il faut d’abord suivre les explications du sujet ci-dessus en faisant attention de remplacer ces 2 lignes :

      $boucle->where[]= « messages.rv=’oui’ » ;

      $boucle->where[’statut’] = « messages.statut=’publie’ » ;

      par :

      $boucle->where[] = array("’=’", « ’messages.statut’ », "’\"publie\"’") ;

      $boucle->where[] = array("’=’", « ’messages.rv’ », "’\"oui\"’") ;

      ensuite il faut s’inspirer des fichiers agenda.html et agenda_xxx.html du squelette par défaut (dans le répertoire « dist ») en changeant les anciennes boucles par les nouvelles boucles MESSAGES comme dans l’exemple de l’"utilisation pratique".

      Voici un exemple de ma boucle MESSAGES dans agenda_mois.html :

      < BOUCLE_rdvs(MESSAGES){agenda date_heure, mois, #ENV{annee}, #ENV{mois}} >

      [(#DATE_HEURE|agenda_memo{#TEXTE,
                                #TITRE,
                                [(#URL_PAGE{message,id_message=#ID_MESSAGE})],
                                calendrier-couleur[(#ID_SECTEUR|modulo{14,1})]
                                })]

      < / BOUCLE_rdvs>

      [(#NOM_SITE_SPIP| agenda_affiche { <:aucun_article:>, 'mois'})]       

      Après à vous de vous créer un fichier message.html avec une boucle MESSAGES pour afficher votre message lorsqu’on clique dessus dans le calendrier.

      En espérant que ceci vous mettes dans la bonne piste.

    • Le 21 février 2008 à 10:36, par reda En réponse à : Boucle « MESSAGES » en version 1.9.1

      merci pour le coup de main :)
      je vais regarder ca quand je rente ce soir !

    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

  • 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 (...)

  • Plugin Vidéo(s)

    23 novembre 2010 – 293 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Interface de gestion et modèle d’insertion des vidéos : Dailymotion Vimeo Youtube Modèle de la balise HTML5 video avec alternative flash html5media : Lecture HTML5/Flash pour tout navigateur des fichiers MP4/H264/Ogg/WebM/Mkv Support mobile, (...)

  • Plugin SPIPAL

    10 janvier 2011 – 79 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Pour intégrer un système de paiement immédiat via PayPal à certains de vos articles . Ce plugin est une mise à niveau pour la version SPIP 2.1.8 du Plugin GoPayPal qui était resté en SPIP 1.9.2 depuis 3 ans. Il change de nom pour ne pas faire trop de (...)

  • Le menu déroulant Babbibel

    2 juin 2009 – 303 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Un menu déroulant horizontal en jQuery sans limitation de profondeur et configurable avec CFG.

  • Traductions d’articles autrement 3

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

    Adaptation pour SPIP 3 du plugin Traductions d’articles autrement Ce plugin modifie légèrement l’interface de SPIP afin de rendre la traduction des articles plus aisée. Principe Des liens de langues, affichés en haut de l’article, permettent de (...)