Réaliser un agenda avec SPIP 1.4.2 (Archive)

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

Il peut être tentant d’utiliser SPIP pour présenter un agenda d’événements sous forme de calendrier. Plutôt que devoir intégrer un logiciel externe spécialisé, et en attendant que SPIP intègre un nouveau type de données, voici un squelette mélant boucles SPIP et code PHP.

REMARQUE : Cet article présente une très ancienne manière de faire un agenda, pour SPIP 1.4.2. Il y a désormais un plugin Agenda qui permet de faire un agenda de manière plus propre et plus efficace.

ATTENTION : Cet article présente une ancienne version du mécanisme utilisé sur le site Gastero Prod, sur lequel est disponible un article de présentation du nouveau système plus performant.

[SPIP 1.4.2] Il peut être tentant d’utiliser SPIP pour présenter un agenda d’événements sous forme de calendrier. Plutôt que devoir intégrer un logiciel externe spécialisé, et en attendant que SPIP intègre un nouveau type de données, voici un squelette mêlant boucles SPIP et code PHP.

Exemple d’agenda
L’agenda de Gastero Prod

De quelles informations avons-nous besoin ?

La première étape consiste à déterminer comment les informations seront stockées dans SPIP, et donc saisies par les rédacteurs.

L’objectif principal étant qu’un rédacteur puisse définir une date à laquelle un événement donné doit avoir lieu, nous avons besoin des éléments suivants :

-  Au moins un champ de type texte ;
-  Un champ de type date.

Pour le champ texte, c’est simple, et nous allons même pouvoir nous régaler. SPIP nous en propose au moins 3 très utiles et systématiquement présents quel que soit le paramétrage du site : le titre, le descriptif et le texte.

La date de publication antérieure ou la vraie date de publication ?

La date de publication d’un article est déterminée automatiquement lors de sa validation, ce qui signifie que l’auteur ne peut pas la préciser à l’avance. Elle peut en revanche être modifiée par le valideur, mais elle n’est donc pas vraiment utile pour indiquer une date d’événement - surtout si on a configuré son site pour que SPIP ne publie pas les articles post-datés.

Heureusement, SPIP propose aussi une date de publication antérieure, normalement utilisée pour indiquer à quelle date a été publié un article repris ultérieurement dans SPIP, et qui peut être définie librement par le rédacteur [1].

C’est cette date que nous allons utiliser pour définir les événements de l’agenda.

Utilisation de la date de publication antérieure

Organiser les événements

Si l’agenda doit contenir beaucoup d’informations de nature diverse, il peut s’avérer utile de les qualifier (concert, film, réunion ?) pour les mettre en évidence et éventuellement ensuite les afficher de manière sélective.

Dans SPIP deux méthodes de classement viennent immédiatement à l’esprit :
-  Classement par rubrique (et éventuellement sous-rubriques) ;
-  Classement par mot-clé.

Dans cet exemple, nous allons utiliser les rubriques, ce qui nous permettra de constituer toute une arborescence pour stocker les articles événements ; cela va nous permettre de filtrer les types d’événements avec une notion de granularité progressive (c’est pas chic ça ?).

Dans l’agenda de Gastero Prod, le rubriquage n’est pas très développé, mais il est déjà possible de sélectionner uniquement les événements musicaux, et éventuellement de filtrer encore plus en ne considérant que les concerts.

Notez au passage que les logos des rubriques sont utilisés pour illustrer les événements.

Une hiérarchie de rubriques pour les thèmes
Le rendu de la sélection thématique

Intégrer l’agenda dans la partie publique

Voilà, les événements sont créés dans une arborescence de rubriques thématiques et sont positionnés à une date, passons aux choses sérieuses, l’intégration de l’agenda résultant dans les pages du site.

Première chose à faire, télécharger le package qui va grandement vous simplifier la tâche :

agenda.zip
Les fichiers pour mettre en place l’agenda

Ce package contient les fichiers suivants :

agenda.css La feuille de style permettant de personnaliser l’affichage de l’agenda
agenda.html/php3 Le squelette de l’agenda, à inclure dans vos propres squelettes, et son .php3 associé
agenda_themes.html/php3 Le squelette des thèmes de l’agenda, à inclure dans vos propres squelettes, et son .php3 associé

Pour insérer l’agenda dans votre site, le plus simple est de créer un squelette particulier pour la rubrique de votre agenda. J’ai par exemple créé le squelette rubrique-43.html sur Gastero Prod puisque la rubrique d’agenda porte l’identifiant 43.

Dans ce squelette, les éléments suivant sont à ajouter. Tout d’abord, dans l’entête, il faut ajouter la référence de la feuille de style supplémentaire à utiliser :

<link rel="stylesheet" href="agenda.css" type="text/css" />

Ensuite, il faut ajouter l’agenda lui-même, grâce à un simple INCLURE [2] placé à l’intérieur de la boucle principale RUBRIQUE :

<INCLURE(agenda.php3){id_rubrique}>

Enfin, il faut ajouter la sélection de l’arborescence thématique :

<INCLURE(agenda_themes.php3){id_rubrique=43}>

Notez que pour cette fois-ci, il faut préciser l’identifiant de la rubrique de l’agenda. C’est pour que l’arborescence thématique soit toujours complète, même si l’on n’affiche qu’une thématique particulière.

Quelques remarques techniques

Les paramètres de navigation d’un mois à l’autre sont passés dans l’URL au travers des variables var_nav_month et var_nav_year. On utilise la notation var_xxx pour indiquer à SPIP de ne pas prendre en compte ces variables pour le calcul du cache de la page, ce qui permet à la fois de limiter l’impact sur le cache (un seul fichier cache traitera toutes les pages de l’agenda) et d’accélérer l’affichage (puisque SPIP n’aura besoin d’aller chercher les données dans la base qu’une seule fois pour toutes ces pages).

La sélection des événements à afficher se fait en PHP car il n’est pas possible de sélectionner une plage de dates dans une boucle SPIP. Une boucle avec pour seul critère la restriction thématique éventuelle est donc utilisée, et une variable PHP de type tableau nommée $events est remplie avec la liste des événements susceptibles d’être affichés dans le calendrier du mois demandé.

Notes

[1Vérifiez que vous avez configuré votre site pour gérer ce type de date supplémentaire.

[2Voir la documentation de INCLURE : http://www.uzine.net/article1828.html

Discussion

64 discussions

  • 1

    Les paramètres de navigation d’un mois à l’autre sont passés dans l’URL au travers des variables var_nav_month et var_nav_year

    Et bien, sous SPIP 2.0.5 ça ne marche pas et je comprends pas (encore ?) pourquoi. Ça marchait très bien avant sous 1.9

    • Je viens de migrer de 1.9.3 vers 2.0.10.
      J’ai exactement le même problème. Tu as trouvé une solution, parce que là je vois pas du tout...

    Répondre à ce message

  • 7

    bon j’ai essayé de relir trois 4 fois mais je comprend toujour pas comment on l’intègre a spip l’agenda ou mettre le code du squellette , du php quelle variable appelle l’agenda, bon pour vous ca parait simple mais pour moi ki debut dans spip chui un peu perdu ... :-D

    • bonjour,

      au cinq fichiers présents dans l’archive de cet article il faut ajouter un fichier de plus permettant l’affichage de l’agenda dont le titre a le format rubrique-XX.html où XX correspond au numero de la rubrique agenda. si la rubrique agenda a pour numero 4 le fichier a pour nom rubrique-4.html.

      ce fichier contient dans mon cas
       

      @@ !DOCTYPE html PUBLIC « -//W3C//DTD HTML 4.01 Transitional//EN »>

      @@html lang=« fr »>
      @@head>
      @@title>Agenda@@/title>
      @@meta http-equiv=« Content-Type » content=« text/html ; charset=#CHARSET »>

      @@ !— Ceci est la feuille de style par defaut pour l’agenda de SPIP —>
      @@link rel=« stylesheet » href=« agenda.css » type=« text/css »>

      @@ !— Ceci est la feuille de style par defaut pour les types internes a SPIP —>
      @@link rel=« stylesheet » href=« spip_style.css » type=« text/css »>

      @@ !— Les feuilles de style specifiques aux presents squelettes —>
      @@link rel=« stylesheet » href=« typographie.css » type=« text/css »>

      @@ !— media=« ... » permet de ne pas utiliser ce style sous Netscape 4 (sinon plantage) —>
      @@link rel=« stylesheet » href=« habillage.css » type=« text/css » media=« projection, screen, tv »>
      @@ !— media=« print » permet d’utiliser cette feuille de style quand vous imprimez depuis votre navigateur —>
      @@link rel=« stylesheet » href=« impression.css » type=« text/css » media=« print »>

      @@/head>

      @@body background=« ./IMG/orange_degrade.jpg »>

      @@ !—[if gte IE 5.5]>
      @@div align=« left »>@@DIV ID=« oDiv » STYLE="position:relative ; height:191px ; width:825px ;
      filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
      src=’IMG/light2.png’, sizingMethod=’scale’) ;" >
      @@/DIV>@@/div>

      @@ ![endif]—>

      @@ ![if !IE ]>
      @@div align=« left »>
      @@img src=« IMG/light2.png » alt=« Light » height=« 191px » width=« 825px » ; border=0>
      @@/div>
      @@ ![endif]>

      @@div id=« navigation »>

      @@h1 class=« structure »>Navigation@@/h1>

      @@ !— Menu de navigation general —>

      @@div class=« menu »>
      @@ul class=« general »>
      @@li class=« menu-titre »>
      [@@a href=« (#URL_SITE_SPIP) » title=« Accueil du site »>@@b>#NOM_SITE_SPIP@@/b>@@/a>]
      @@/li>
      @@li class=« menu-item »>
      @@a href=« plan.php3 » title=« Tout le site sur une page »>Plan du site@@/a>
      @@/li>
      @@li class=« menu-item »>
      @@a href=« resume.php3 » title=« Articles populaires et derniers messages de forum »>En résumé@@/a>
      @@/li>
      @@li class=« menu-item »>
      @@a href=« ecrire/ » title=« Accéder à l’espace réservé aux rédacteurs »>Administration@@/a>
      @@/li>
      @@/ul>
      @@/div>

      @@ !— Formulaire de recherche —>
      [(#FORMULAIRE_RECHERCHE)]

      @@ !— Formulaire administrateur —>
      [(#FORMULAIRE_ADMIN)]

      @@/div>

      @@div class=« contenu » id=« principal »>

      @@ !—agenda—>
      @@INCLURE(agenda.php3)id_rubrique>
      @@INCLURE(agenda_themes.php3)id_rubrique=4>
      @@ !—agenda eof—>

      @@/div>

      @@/body>
      @@/html>

      tous les < ont ete remplace par des @@ afin de rendre le code lisible. ce code est basé sur celui du squelette de base de spip
      (il contient egalement un code pour afficher des png transparents sous IE et autres navigateur)

      bonne chance

      Philippe

    • C’est expliqué dans l’article, pourtant :

      Pour insérer l’agenda dans votre site, le plus simple est de créer un squelette particulier pour la rubrique de votre agenda. J’ai par exemple créé le squelette rubrique-43.html sur Gastero Prod puisque la rubrique d’agenda porte l’identifiant 43.

    • keryado

      J’ai eu aussi des difficultés a piger la logique de l’affaire.

      j’ai pas tout reglé comme l’affichage de l’article dans la page principal qui me gene, mais le calendrier marche sa suffit pour débuter.

      J’ai d’abord lu les explications sur le site, ensuite j’ai fini par piger mais avec du mal. J’ai donc noté toutes mes opérations une par une jusqu’a réussite !

      voici ma procedure

      Allez dans site/ecrire

      1- cliquez sur ADMINISTRATION DU SITE

      -  en bas dans articles, cocher la case publication antérieur

      -  creation d’une rubrique agenda ( la premiere rubrique du site ) donc rubrique = 1

      ( ps : si vous avez déjà par exemple 3 rubriques, cette dernière que vous venez de créer aura le numero 4, si j’ai tout pigé")

      -  creation d’un article, validation du nouvelle article,

      -  cliquez sur la petite fleche noir devant « date de publication antérieur »

      -  Un menu apparait avec : afficher la date, ou ne pas afficher la date

      -  cliquez sur afficher la date, ensuite choissez une date futur et validez.

      -  ensuite ne pas oublier de publier l’article en ligne dans le menu « cet article est en cours de redaction »

      2 - deuxieme phase creation et transfert des fichiers

      -  decompression l’archive agenda.zip

      -  copier les fichiers dans la racine du site

      -  faire un copier/coller de rubrique.php3 , Resultat, vous avez un nouveau fichier « copy de rubrique.php3 »

      -  renommer ce fichier « copy de rubrique.php3 » en « rubrique-1.php3 » ou rubrique-3 ou rubrique-4 etc... suivant le numéro de votre rubrique

      -  modifier le code de rubrique-1, $fond = « rubrique-1 » ; à la place de $fond = « rubrique » ;

      -  creation d’un fichier html vierge de tout code, rubrique-1.html ou rubrique-3 ou rubrique-4 etc... suivant le numéro de votre rubrique

      intégration du code ci-dessous :

      Voila allez dans http://wotresite.com/rubrique-1.php3 et l’agenda doit apparaitre !

      cliquez sur la date que vous avez mis dans publication antérieur de l’article et vous devez voir l’article !

      je sais pas si tout est bon mais ca ma permis de voir l’agenda et l’article lié avant d’aller plus loin.

      keryado

    • keryado

      c’est le code donné sur le site dans les explications

    • je suis debutant et je n’arrive pas a afficher l’agenda
      comment faire afficher une rubrique sans creer un article ????
      sam

    • Tu ne peux pas. Il faut obligatoirement publier un article pour voir la rubrique de cet article dans le sommaire. C’est une limitation vraiment minime...

    • Merci beaucoup keryado pour tes explications « pas à pas ». Cela m’a permis de comprendre comment installer l’agenda ! Car tes explications ne sont pas de trop !
      Encore merci !

    Répondre à ce message

  • 3

    Bonjour et merci pour ce superbe agenda que j’ai installé et qui me convient parfaitement.

    Ceci dit j’ai tout de meme une question : j’ai constaté que l’agenda couvre la période 1995 > 2010.

    Ne serait-il pas possible de changer les années pour que l’agenda couvre la période 2000 > 2020 par exemple ? Merci.

    • Nicolas Hoizey

      Il « suffit » de changer ces deux valeurs dans le source.

    • mais c quoi le source ??? quelq’un peut il me dire de kel fichier il s’agit.
      merciiiiii
      nat

    • ok je me reponds a moi meme, le fichier c agenda.html.
      youpi pour une newbie

    Répondre à ce message

  • 1

    je viens de réinstaller l’agenda à partir des fichiers disponibles sur ce site.

    j’ai mon fichier rubrique-numero.html
    qui appelle un fichier agenda.php3

    mais le bouton GO ou le changement de moi aboutit à une erreur 404.

    Aucun événement ne s’affiche dans le calendrier.

    • Même chose pour moi.

      A ceci pres que tout fonctionne (je suis en 1.8.2.g) lorsque l’agenda est appelé sur un squelette rubrique : mois précédent, mois suivant et bouton envoi après sélection d’un mois spécifique.

      Par contre lorsque je rappelle l’agenda dans un article (de la même rubrique) l’agenda s’affiche, mois précédent et mois suivant fonctionne mais plus le bouton envoi qui renvoie sur une erreur 404... normal puisque l’URL est de la forme : http://site.com/{{article.php3?id_rubrique=14}}%23cal&var_nav_month=5&var_nav_year=2006

      Je suis pas assez doué pour corriger... hep !

    Répondre à ce message

  • 1

    Bravo pour ce merveilleux outil.
    J’aimerais savoir s’il est possible de résoudre mon problème.

    Je m’occupe du site web de l’école où j’enseigne et j’aurais besoin d’ajouter les jours cycles à côté de date à chaque jour.

    Ainsi, la date serait à gauche et à droite dans un encadré (table) j’ajouterai le jour cycle par une boucle spip.

    Je n’ai malheureusement pas trouvé où intégrer ma boucle et mon tableau dans le code php.
    Quelqu’un peux m’aider ?

    Merci

    Répondre à ce message

  • 2

    Avec SPIP 1.8.2d, le fichier agenda.html plantait systématiquement. Cela provenait de deux erreurs distinctes :

    1. Il ne faut pas de guillemets dans les titres des articles.
    2. Modification de la boucle évènement dans agenda.html : il faut deux pipes (|) pour appliquer le texte_script à #LOGO_ARTICLE_RUBRIQUE.

    Le résultat était le même dans les deux cas. Cela passait très bien avec SPIP 1.7.2. La version 1.8.2 est bien plus exigeante semble-t-il...

    • Quels sont exactement les modifications à faire pour que l’agenda RE fonctionne avec la version 1.8.2.

      merci

    • J’ai trouvé , il faut trouver la ligne contenant LOGO_ARTICLE et la modifier comme suit :

      $events[$date][] = array(’link’ => ’#URL_ARTICLE’, ’title’ => ’(#TITRE’, ’logo’ => ’[(#LOGO_ARTICLE_RUBRIQUE||texte_script)]’) ;

    Répondre à ce message

  • Merci pour cet agenda très pratique...
    J’ai maintenant une petite question : je souhaite ouvrir cet agenda aux internautes afin qu’ils puissent donner des dates de concerts de leurs groupes... seul soucis je n’ai pas trouvé comment permettre aux rédacteurs comment ajouter une date à leur article et en particulier une date de publication antérieure.
    Comment faire ?

    Répondre à ce message

  • Bonjour,

    Je désire réaliser un mini calendrier sous spip. Les cellules de ce calendrier ne doivent comporter aucun titre d’évenement. Ainsi, le calendrier est beaucoup plus petit, et seules les cellules pour lesquelles il y a un évenement de prévu, seraient coloriées et possèderaient un lien vers une autre page.

    Je n’ai rien trouvé à ce sujet !
    Merci d’avance de votre aide.
    gaotoncar@yahoo.com

    Répondre à ce message

  • 3

    Voilà je suis totalement néophyte dans ce monde merveilleux qu’est spip....et je n’arive pas a installer l’agenda.

    J’ai telecharger les fichiers, créer une rubrique agenda dans la partie admnistration du site, noté le numero de la rubrique est là tout devient flou :)

    Que dois-je mettre dans le fichier rubrique-5.html qu’il faut créer ?? comment se structure-t-il ?? je ne sais pas du tout ce qu’il faut modifier ajouter ect....

    Merci pour votre aide et desolé pour ma question qui paraitra surement inconsequente pour bon nombre d’entre vous, mais bon je debute.

    Boro

    • Moi j’ai le même problème. Certes, je suis un néophyte, mais quand même il doit manquer pour les débutants une info. Mais laquelle ?

    • je bloque également... qui peut nous aider ?
      Je débute et l’agenda est ma première prouesse... Sans grand succès :-(

    • Aide aux débutants : le principal probleme vient du fait que les débutants se lancent directement avec la nouvelle version de SPIP 1.8.
      Cette version n’est pas moins bonne que la 1.7 (bien au contraire) mais la structure des fichiers à changé.
      Certaines contribs ont été conçues pour fonctionner sous 1.7 et donc respectent l’ancienne structure.
      Dans le cas de l’agenda par exemple, si tu rencontre des probleme, essaye de mettre les fichiers rubrique-xx.html et rubrique-xx.php3 dans le repertoire /dist et non pas dans la racine de SPIP.

    Répondre à ce message

  • Bonjour,

    Cet agenda est génial ! Je n’ai pas trouvé des problèmes pour l’installation…
    Je n’utilise pas l’affichage des rubriques, seulement l’agenda et je voudrais que les gens puisent voir les détailles dans une petite fenêtre.
    Je voudrais savoir comment on peut faire pour que les événements s’ouvrant dans une popup. C’est possible ?

    Si quelqu’un sait le code et où il faut le mettre, ça serait vraiment génial parce que je suis absolument ignorante sur tout ce qui est php

    Merci en avance à tous et à toutes et mes excuses pour mon français.

    Répondre à ce message

Ajouter un commentaire

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
  • 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 apparaît.

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.

Qui êtes-vous ?
[Se connecter]

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom