Forum CMS Made Simple FR
[RESOLU]CGCalendar : affichage conditionnel du type de liste episode 2 - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Modules, Tags (https://forum.cmsmadesimple.fr/forum-14.html)
+--- Sujet : [RESOLU]CGCalendar : affichage conditionnel du type de liste episode 2 (/thread-781.html)



[RESOLU]CGCalendar : affichage conditionnel du type de liste episode 2 - nicks - 05/11/2010

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS -MLE- : 1.8.2
#~ Nom de l'hébergeur : OVH
#~ Informations Système :
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~

Arf... Déjà désolé, j'ai fermé le précédent topic un peu à la hâte...

Rappel des faits Wink :http://www.cmsmadesimple.fr/forum/viewtopic.php?id=3029

En fait, je pensais que ca fonctionnait, mais aujourd'hui j'ai ajouté une nouvelle entrée... Et du coup j'ai les deux qui s'affichent l'un au-dessus de l'autre (l'élément à venir et celui passé). Ce qui indique donc, que le code n'a pas été pris en compte par le CMS, si je ne m'abuse...

Voici donc le code dans l'état actuel :
Gabarit de la page :
Code :
{cms_module module='CGCalendar' display='upcominglist' detailpage="prochains-rdv" limit='1' upcominglisttemplate='accueil' category='seminaires'}
{if $compteur == 0}
{cms_module module='CGCalendar' display='pastlist' detailpage="prochains-rdv" limit='1' upcominglisttemplate='accueil' category='seminaires'}
{/if}

Gabarit du module (CGCalendar):
Code :
{foreach from=$events key=key item=event}
    <h2>{$event.event_title}</h2>
    
[... ]

{/foreach}

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

Je précise que lorsque je rafraichi la page après des modifs (genre j'ai essayé d'enlever les '' autour de compteur... On fait comme on peut hein Wink) j'ai de temps en temps ce message d'erreur :

string(140) "Smarty error: [in module_db_tpl:CGCalendar;upcominglist_upcominglist-entry-seminaire line 27]: syntax error: assign: missing 'var' parameter"

Il manquerait le paramètre "var", je ne sais pas si c'est judicieux (ou pas)?


[RESOLU]CGCalendar : affichage conditionnel du type de liste episode 2 - nicks - 05/11/2010

... Je précise que la ligne 27 correspond à :
Code :
{assign name='compteur' value=count($events)}

(je précise aussi que oui le template n'est pas celui indiqué dans le gabarit de page, mais en fait je compte utiliser cette astuce sur différentes pages, avec différents template, le système restant le même)


[RESOLU]CGCalendar : affichage conditionnel du type de liste episode 2 - nicks - 05/11/2010

Je regarde un peu la doc smarty est je suis tombé sur ca :
$articleTitle|@count} - affichera le nombre d'éléments dans le tableau $articleTitle en utilisant la fonction PHP count() comme modificateur.

J'ai donc modifié ma "ligne 27" comme ca, mais ca n'a juste aucun effet (si ce n'est d'afficher le msg d'erreur "missing var")...
Code :
{assign name='compteur' value=$events|@count}



[RESOLU]CGCalendar : affichage conditionnel du type de liste episode 2 - nicks - 05/11/2010

Petite évolution minime... Mais lorsque je remplace "name" par "var', il n'y a plus le message d'erreur :

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

Du coup je me demande quand même, comme au départ, si le problème ne vient du fait que les instructions (?) viennent de deux fichiers différents? A savoir : Je créais la variable dans le gabarit du module, puis je donne l'instruction dans le gabarit de la page, est-ce que les connections se font bien? (désolé pour le vocabulaire si ce n'est pas adapté, mais je patoge un peu)


[RESOLU]CGCalendar : affichage conditionnel du type de liste episode 2 - bess - 05/11/2010

http://www.smarty.net/manual/fr/language.custom.functions.php#language.function.assign

Exemple 8-1. {assign}

{assign var='name' value='Bob'}

donc déjà oui il y avait un soucis de code, je te l'avais dit, je pond rarement des codes ok du premier coup en live :]

sinon ca ne marche pas mieux avec la correction du code ? normalement ca fait monter la valeur dans smarty, or c'est le même smarty qui est utilisé dans la compilation du gabarit de la page... donc normalement c'est sencer marcher...

essai

{assign var='name' value='Bob'} dans le gabarit des news
{$name} dans ton gabarit de page. Si le mot 'bob' apparait c'est que le cheminement est bon et que le soucis se pose sur count(ta_liste), sinon il y a un blême dans ma proposition


[RESOLU]CGCalendar : affichage conditionnel du type de liste episode 2 - nicks - 08/11/2010

Bonjour et merci pour ta réponse Bess.

Alors j'ai fait quelques tests qui me permettent d'un peu mieux cerner le problème (enfin je crois).

J'ai donc inséré les bouts de code que tu m'a donné dans mes gabarits respectifs et voilà ce qu'il en est : il semblerait que le code (Bob) ne s'affiche que lorsque le calendrier s'affiche également sur la page (autrement dit lorsque count!=0).

Ce qui me fait dire ca, c'est qu'en fait, j'ai sur une page, les évènements à venir et sur une autre page (avec les même gabarits) les archives des évènements passés.

Sur ma page d'évènement à venir (il n'y en a pas pour l'instant) je n'ai ni évènements, ni Bob ( Smile )
http://lucus-project.eu/fr_FR/infos-pratiques

Par contre, sur ma page archives, j'ai mes évènements et en-dessous 'Bob':
http://lucus-project.eu/fr_FR/infos-pratiques/archives-pratiques

J'éspère être à peu près clair dans mes explications, j'ai un peu de mal ce matin...


[RESOLU]CGCalendar : affichage conditionnel du type de liste episode 2 - nicks - 04/01/2011

Je viens de me repencher sur ce site et j'ai finalement trouvé la solution (à priori). Je pense que le problème provient soit du fait que j'utilisais à tort des espaces dans les balises smarty , soit (et de manière général) que l'emploi de la valeur "null" plutôt que "0" permet de meilleurs résultats (Pourquoi? je n'en ai aucune idée...).

Voici donc ce qui marche chez moi :
1. A la fin du template de calendar, j'insère le code suivant :
Code :
{assign name='compteur' value=count($events)}

2. Dans mon gabarit (ca doit aussi marcher dans une page) j'insère la condition de la manière suivante (attention aux espaces donc Wink ) :
Code :
{if $compteur!=null}
{cms_module module='CGCalendar' display='upcominglist' detailpage="info-pratiques" limit='1' category="pratiques" upcominglisttemplate='accueil-pratique'}
{else}
<p>pas de contenu pour le moment.</p>
{/if}