Forum CMS Made Simple Francophone

Aide francophone sur CMS Made Simple

Vous n'êtes pas identifié(e).

Annonce

ATTENTION

  • Prenez le temps de rechercher si quelqu'un n'a pas déjà proposé une solution à votre problème. Sur le forum français et sur le wiki
  • Pensez à mettre à jour votre version de CMS Made Simple. Nous ne faisons de support que sur LA dernière version de CMS Made Simple.
  • Renseignez impérativement le formulaire de nouveau message de manière la plus complète que possible. Dans votre CMS utiliser le menu Administration du site/Informations du système en haut Vue au format texte. Ces informations demandées nous permettent de mieux vous aider
  • Ajoutez [Résolu] au début du titre de votre 1er message lorsqu'une solution a été trouvée.

#1 06/01/2011 17:16:10

nicks
Membre
Lieu : Strasbourg
Inscription : 24/03/2010
Messages : 75

CGCalendar : affichage conditionnel

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 :

{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 :

{foreach from=$events key=key item=event}
    ... éléments à afficher pour chaque évènement ...
{/foreach}

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" :

{assign var='compteur' value=count($events)}

{foreach from=$events key=key item=event}
    ... éléments à afficher pour chaque évènement ...
{/foreach}

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!

{cms_module module='CGCalendar' display='upcominglist' detailpage="a-suivre" category='a-suivre' upcominglisttemplate="template-a-suivre"}
{if $compteur==null}
<p>Il n'y a actuellement pas d'évènement de programmé.<br/>
{/if}

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 :

{if $compteur==null}
<p>Il n'y a actuellement pas de séminaire(s) programmé(s).<br/>
Vous pouvez toutefois consulter les {cms_selflink page='archives-seminaires' text='archives'} pour en savoir plus sur les séminaires passés.</p>
{else}
{cms_module module='CGCalendar' display='upcominglist' detailpage="a-suivre" category='a-suivre' upcominglisttemplate="template-a-suivre"}
{/if}

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... ;)

Hors ligne

#2 06/01/2011 17:35:18

bess
Administrateur
Lieu : Rennes
Inscription : 16/12/2008
Messages : 6 094
Site Web

Re : CGCalendar : affichage conditionnel

je ne peux pas me pencher énormément sur le sujet mais je te remercie d'avoir compilé tes investigations smile

si quelqu'un à l'occasion de tester... smile

Hors ligne

#3 07/01/2011 02:55:05

Ouik
Modérateur
Lieu : Bourgogne
Inscription : 08/01/2008
Messages : 1 062
Site Web

Re : CGCalendar : affichage conditionnel

mortel, je pense tester ça un de ces 4. Merci !

Hors ligne

Pied de page des forums