CGCalendar : affichage conditionnel - Version imprimable +- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr) +-- Forum : Ressources (https://forum.cmsmadesimple.fr/forum-4.html) +--- Forum : Développement et Astuces (https://forum.cmsmadesimple.fr/forum-15.html) +--- Sujet : CGCalendar : affichage conditionnel (/thread-861.html) |
CGCalendar : affichage conditionnel - nicks - 06/01/2011 Bonjour, cette petite astuce est plus ou moins une conclusion des discussions suivantes, pour lesquelles je dois avouer les avoir noté comme [résolu] un peu hâtivement... http://www.cmsmadesimple.fr/forum/viewtopic.php?id=3030 http://www.cmsmadesimple.fr/forum/viewtopic.php?id=3029 Voici donc la solution finale, qui fonctionne (on va dire que cette fois c'est "certain"... soyons optimiste en ce début d'année :) )! Donc, admettons que vous utilisez CGCalendar et notamment les gabarits "d'évènements à venir" et/ou "d'évènements passés". C'est vachement bien de pouvoir filtrer des évènements en fonction de leur chronologie, seulement lorsqu'un évènement est passé, par défaut vous vous retrouvez avec un emplacement "vide" sur votre page, ce qui est un peu dommage... Ce que je vous propose ici, c'est de faire en sorte que les "évènements à venir" "périmés" soient automatiquement remplacés par autre chose (comme par exemple un paragraphe indiquant qu'il n'y a pas de manifestations de programmées, ou encore d'afficher le dernier évènement passé). Nous disposons d'une rubrique (une page) "à suivre" qui recense uniquement les évènements à venir : Code : {cms_module module='CGCalendar' display='upcominglist' detailpage="a-suivre" category='a-suivre' upcominglisttemplate="template-a-suivre"} Cette page appelle le gabarit d'évènements à venir de CGcalendar : "template-a-suivre" qui se présentera de cette manière : Code : {foreach from=$events key=key item=event} Dans l'état, si maintenant nous avons uniquement un évènement qui se passe le 6 janvier, le 7 janvier la page "à suivre" n'affichera plus rien! On veut donc qu'un message s'affiche (automatiquement) indiquant qu'il n'y a rien de programmé dans les prochains temps. On va alors ajouter le code suivant dans notre gabarit de CGCalendar "template-a-suivre" : Code : {assign var='compteur' value=count($events)} En gros, on ajoute une variable qui va déterminer si il y a des évènements "à suivre" ou pas. (merci à Bess pour ce bout de code.) Dans notre rubrique (page) "à suivre", on va mettre en place une condition. On commence par entrer la balise indiquant qu'on veut afficher les évènements à venir et juste en dessous préciser que s'il n'y a rien à afficher, alors on affiche autre chose! Code : {cms_module module='CGCalendar' display='upcominglist' detailpage="a-suivre" category='a-suivre' upcominglisttemplate="template-a-suivre"} Et voilà le travail! A noter que j'ai énormément "galéré" car j'essayais à tort de mettre la condition avant d'essayer d'afficher CGCalendar, par exemple comme ca : Code : {if $compteur==null} Je ne sais pas trop pourquoi (...) mais ca ne marche pas! Autre détail qui a l'air également important, j'ai pris l'habitude d'utiliser 'null' plutôt que '0', puisque dans le cas des tableaux (array) 0 est en fait le premier éléments de la liste, donc ca peut éventuellement poser des problèmes... Je laisse le soin à des personnes plus calés en prog que moi de nous éclairer sur ces derniers points... ;) CGCalendar : affichage conditionnel - bess - 06/01/2011 je ne peux pas me pencher énormément sur le sujet mais je te remercie d'avoir compilé tes investigations si quelqu'un à l'occasion de tester... CGCalendar : affichage conditionnel - Ouik - 07/01/2011 mortel, je pense tester ça un de ces 4. Merci ! CGCalendar : affichage conditionnel - ppatrick - 25/07/2011 Bonjour, J'ai testé : Code : {assign var='compteur' value=count($events)} Code : {if $compteur==null} Extra... Merci... |