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.
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.
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.
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 :
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é.
Discussions par date d’activité
64 discussions
Génial !!!
Facile à installer, facile à paramétrer. Juste ce qui me fallait.
Merci pour cette contrib.
Prochainement sur http://www.saint-medard-handball.fr
Roger
Répondre à ce message
J’ai installé l’excellentisime agenda sur mon site mais je rencontre quelques difficultés (mineures) de mise en page...
En effet, sur le site du Gastéroprod, je note que :
- dans la première ligne du titre, il y’a un lien direct vers « aujourd’hui »
- dans l’accès direct, il y a un lien vers « agenda » qui permet de ré-afficher l’ensemble des thèmes après en avoir selectionner un. Sans ce lien, je ne vois pas comment faire réapparaître tous les thèmes.
- les logos affichés pour les thèmes sont parfaitement alignés avec le texte et non pas décalés vers le haut
- les liens sont du type http://monsite/agenda/annee
Comment qu’on fait tout cela ? Merci de votre aide !
Comment qu’on fait tout cela ? Merci de votre aide !
La nouvelle version de Gastero Prod a été l’occasion de refondre pas mal la gestion d’agenda, notamment grace à l’amélioration de la gestion des dates dans les dernières versions de SPIP.
Je pense présenter prochainement ces nouveautés dans un article sur Gastero Prod ...
comment faire pour avoir la nouvelle version ???
comment faire pour avoir la derniére version ?
Le squelette est dispo sur Gastero Prod à l’adresse suivante :
- http://www.gasteroprod.com/agenda.html
Je suis en train de rédiger un article expliquant tout ça, il sera en ligne sur Gastero Prod.
Répondre à ce message
Une simple question stupide : si on utilise les sous-rubriques de l’agenda, existe-t-il un moyen pour qu’une boucle qui indexe tous les articles récemment publiés sur le site « évite » l’agenda et toutes ses sous-rubriques ?
Si ton agenda est constitué par un secteur (rubrique à la racine du site), il suffit d’utiliser comme critère dans la boucle rubrique : id_secteur !=3 (ex. pour un agenda mis dans le rubrique n° 3).
Répondre à ce message
Bonjour,
je viens d’installer l’agenda sur SPIP (désolé je ne peux pas le montrer, c’est sur mon PC).
tout fonctionne très bien.
j’aimerais éviter d’avoir les évennements apparaitres tels des articles dans le menu principal (j’utilise le SPIP de base sans squelette particulier)
comment faire ?
Merci d’avance
Philippe Rousselot
Il faut ôter des boucles la rubrique utilisée pour l’agenda, ainsi que sa branche.
Bonjour,
Sur quelle(s) page(s) faut-il enlever ces boucles ?
Merci
Répondre à ce message
Merci pour cette contribution.
Je débute dans l’utilisation de SPIP et en suivant les indications (page vierge n° de la rubrique agenda à créer)l’agenda s’est mis en ligne tout seul et très simplement.
J’ai simplement ajouté mon entête et mon pied de page.
Pour l’instant je n’ai qu’un article et ne rencontre pas de problème de menu « gênant »...
Merci encore.
Répondre à ce message
Bonjour, comment gérez vous un évènement se déroulant sur plusieurs dates.
par exemple une exposition du 15 juillet au 15 août.
Il faut malheureusement saisir l’événement autant de fois que le nombre de jours couverts.
Répondre à ce message
pour avoir AGENDA plutôt que date de publication antérieure
dans \ecrire\lang\spip_fr.php
’texte_date_publication_anterieure’ => ’AGENDA (ou publication antérieure)’,
’texte_date_publication_anterieure_nonaffichee’ => ’ Pas d\’agenda ni publication antérieure.’,
Répondre à ce message
trop bien l’agenda :-)
merci
Répondre à ce message
Bonjour, je viens d’installer votre agenda en local sur mon pc mais il ne correspond pas trop à celui que je recherche ou je n’arrive pas à le customisé comme je le voudrais.
Je m’explique voici l’agenda que je souhaite réaliser sous spip :
http://www.aix-en-pce.com/fr/rubrique.php3?id_rubrique=2
Ce qui m’intéresse c’est d’avoir une date cliquable qui redirige vers toutes les infos du jour.
Je pense que celà est plus un calendrier qu’un agenda alors si vous pouvez m’aider ou me donner une url ou je peux trouver mon bonheur. Merci
@+
Je crois que tu trouvera la réponse ici
Merci, j’avais reussi à trouvé cette page mais bon ça été galère pour mettre en ligne ce calendrier.
Répondre à ce message
Bonjour,
Je débute avec spip et cet agenda est drolement pratique. Juste un petit problème, je souhaiterais qu’une fois dans le calendrier en cliquant sur un événement celui-ci apparaisse comme une popup. Je trouve que ce serait plus pratique de paramettrer la taille d’une fenetre et de la placer devant l’agenda. Comme ca il suffirait de la fermer pour retourner au calendrier.
Malheureusement je suis bien imcapable de savoir comment m’y prendre !!!
Si quelqu’un l’a déjà tenté ou sais ce qu’il faut modifier ce serait très appréciable.
Merci, et encore bravo pour cette idée de calendrier
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 :
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.
Suivre les commentaires : |