Etant utilisateur depuis quelque temps de l’agenda annuel proposé dans le squelette d’Epona. J’ai voulu profiter du nouveau critère agenda développé dans SPIP 1.8.2 afin d’éliminer le code php présent dans l’ancien squelette et ainsi permettre une mise en cache.
Premier cas
J’ai découpé cette contrib en deux parties l’une qui permet d’afficher tous les articles durant une période reposant sur les critères agenda et periode de la boucle articles.
Exemple : tous les évènements de l’année 2005 sur mon site
Elle est composé des fichiers :
agenda.css
agenda.html
agenda_annee_fonctions.php3
agenda_annee.html
agenda_longperiode_fonctions.php3
agenda_longperiode.html
agenda_saison_fonctions.php3
agenda_saison.html
agenda.html
Le fichier agenda_longperiode.html est une légère variante de agenda_periode.html de SPIP en changeant agenda_affiche_annuel par agenda_affiche comme vous le montre la suite :
Les fichiers agenda_annee.html, agenda_saison.html sont de légères variantes de agenda_longperiode.html.
Les fichiers agenda_annee_fonctions.php3, agenda_longperiode_fonctions.php3, agenda_saison_fonctions.php3 sont identiques et sont le coeur de cette contrib.
Essentiellement la fonction agenda_affiche_annuel qui permet de restituer les articles mémorisés gràce aux filtres agenda_memo sur forme d’une liste.
Ensuite vous pouvez modifier l’aspect visuel en modifiant le fichier agenda.css. Il existe deux archives annee_date.zip et anne_date_redac.zip. Personnellement j’utilise la deuxième archive qui utilise la date de publication antérieure des articles.
Deuxième Partie
Le second a en plus un classement par mot clé présent dans le squelette Epona. On peut sélectionner les évenement dans le groupe de mot clé nommé « type de manifestation ».
Exemple : tous les évènements de l’année 2005 sur mon site Elle est composé des fichiers :
agenda.css
agenda.html
agenda_annee_mot_fonctions.php3
agenda_annee_mot.html
agenda_longperiode_mot_fonctions.php3
agenda_longperiode_mot.html
agenda_saison_mot_fonctions.php3
agenda_saison_mot.html
agenda.html est le meme dans toutes les archives.
agenda_longperiode_mot.html
agenda_longperiode_mot_fonctions.php3
De meme que dans la première partie il y a deux versions l’une où l’on utilise la date de publication de l’article l’autre où l’on utilise la date de publication antérieure.
Comment utiliser cette contribution
Cette contribution nécessite SPIP 1.8.2
Téléchargez une des 4 archives, puis décompressez la dans votre dossier squelette.
Vous ferez les appels aux différents agenda en utilisant les urls suivantes.
Pour les archives annee_date et annee_date_redac les urls à utiliser sont :
Pour afficher les articles du 4 janvier 2005 au 16 mai 2005
votresite.com/agenda.php3?annee=2005&mois=01&jour=04&annee_fin=2005&mois_fin=05&jour=16&type=longperiode
Pour afficher les articles de la saison 2004-2005(c’est à dire du 1 septembre 2004 au 31 aout 2005)
votresite.com/agenda.php3?annee=2004&annee_fin=2005&type=saison
Pour afficher les articles de l’année 2005
votresite.com/agenda.php3?annee=2005&type=annee
Pour les archives annee_mot_date et annee_mot_date_redac les urls à utiliser sont :
Pour afficher les articles du 4 janvier 2005 au 16 mai 2005
votresite.com/agenda.php3?annee=2005&mois=01&jour=04&annee_fin=2005&mois_fin=05&jour=16&type=longperiode_mot
Pour afficher les articles de la saison 2004-2005(c’est à dire du 1 septembre 2004 au 31 aout 2005)
votresite.com/agenda.php3?annee=2004&annee_fin=2005&type=saison_mot
Pour afficher les articles de l’annee 2005
votresite.com/agenda.php3?annee=2005&type=annee_mot
Ps : Si vous trouvez que les agendas générés possèdent des couleurs horribles, c’est normal vous avez bon gout, pour en changer modifier agenda.css.
Je regarderais ca plus en détail ce WE. personnellement je n’utilise pas les heures pour les evenement (cad je décoche la case horaire ) donc ca me surprend. (l’inverse c’est a dire que lorsque l’on donne des heures aux evenements la contrib ne marche plus m’aurais moi surpris )
bien mais justement moi non plus je n’utilise pas les heures
mais je ne décoche pas la case car je mets les événements avec Saisie rapide d’une liste
sinon je ne peux pas faire autrement, j’ai un chevauchement de cadre qui m’empêche d’utiliser le formulaire, autre problème
dans ma base mysql, il y a "non" pour la colonne heure et elles sont donc notées 00:00:00
Bonjour, déjà bravo pour cette contrib^^et ensuite ma question, j’ai lut votre réponse au post précèdent, mais cela ne me convient pas. Comment faire pour que seul l’année en cours s’affiche ? Un exemple, dans mon cas je dois faire un calendrier pour l’académie de Toulouse, il me faut donc configurer l’affichage de septembre à Juillet et cela pour l’année 2005 et 2006, et une fois cette année passé il faut effacé les précèdent et recommencé pour l’année 2006-2007, comment faut-il faire ?
Comment faire pour que seul l’année en cours s’affiche ? Un exemple, dans mon cas je dois faire un calendrier pour l’académie de Toulouse, il me faut donc configurer l’affichage de septembre à Juillet et cela pour l’année 2005 et 2006,
Donc le squelette agenda_saison_mot.html
est ton ami. Il va sélectionner tous les évenements qui ont lieu du 1er septembre au 31 aout de l’année suivante.
Il s’utilise comme suit :
et une fois cette année passé il faut effacé les précèdent et recommencé pour l’année 2006-2007, comment faut-il faire ?
Vu que c’est qu’une fois dans l’année on peut faire la modif au moment opportun
J’essayerais de donner une réponse pour résoudre ce problème de maniére plus automatique prochainement (quand j’aurais la solution)
Merci pour cette réponse trés rapide^^
ça marche niquel par contre je dois vraiment être une quiche, j’arrive pas à inverser le sens d’affichage, au lieu de janvier a decembre, afficher de decembre à janvier. J’ai essayer de faire comme indiqué sur le site mais ça ne marche pas. Aprés promis je vous embete plus ^^
Bravo pour cette contrib, elle répond à mes besoins pour un futur site d’office du Tourisme. C’est l’affichage de type=annee que je pense utiliser.
Une question, cependant, auquel je peux trouver la réponse en me creusant la tête, mais comme je débute, le moindre problème me fait perdre des heures !
Alors voila : je veux afficher les évènement à partir de la date du jour, et sans limite de fin de période. En effet, une fois que je livre le site au client, il ne faut pas que je revienne dessus chaque année pour rechanger ma programmation de squelette.
Il faudrait donc quelquechose du genre :
votresite.com/agenda.php3 ?annee=actuelle&mois=actuel&type=annee
Si j’ai bien compris ta demande .Je te proposerais d’utiliser agenda_longueperiode.html tu le copies et tu renommes en agenda_tamodif.html
penses à recopier aussi agenda_longueperiode_fonctions.php3 en agenda_tamodif_fonctions.php3.
Ensuite tu modifies
ensuite tu appelles tonsite.com/agenda.php3?type=tamodif
Tu as compris qu’il fallait remplacer tamodif par un nom plus joli et plus explicite. J’ai essayé vite fait en local donc cette solution est à tester( mais pense quelle est juste)
Cette boucle sert à enregistrer tous les évenements dont la date redac est comprise entre le 1er janvier 2006 et le 1er janvier 2020 dont le date de rédaction (date_redac) n’est n’est pas encore passé (grace au critère age_redac<0)
Bonne contrib, ressemble beaucoup à ce qu’il y a sur le wiki, plus détaillé, mais pas encore assez :/ ! Je m’explique, soucis de recalcul de la page lors du changement de mois ou de jours. Obligation de recalculer pour que cela s’affiche.