Probleme avec les fonctions {if}{else if}{else}

Pinpin31

Nouveau WRInaute
Bonjour,
Je suis en pleine modification/évolution de mon CMS (Arfooo) et je rencontre actuellement un problème en voulant utiliser les fonctions {if}{else if}{else} de smarty.

Je souhaiterais permettre aux webmasters qui inscrivent leurs sites (et à moi même) de soumettre une description courte pour les pages catégories, nouveaux sites, etc... ET une description longue pour la fiche du site.
Je précise que tout ce passe bien jusqu'au moment de l'affichage.

D'origine Arfooo ce contente d'afficher une partie de la description longue. Voici le code utilisé:
Code:
{if isset($display.highlightKeywords)}
{$site.description|htmlspecialchars_decode|strip_tags|truncate:$setting.numberOfCharactersForItemDescription|highlight:$display.highlightKeywords|nl2br}
{else}
{$site.description|htmlspecialchars_decode|strip_tags|truncate:$setting.numberOfCharactersForItemDescription|nl2br}
{/if}
Il va piocher dans la BDD la description du site et la coupe après un nombre de caractères défini par l'admin.

J'ai donc pensé quand rajoutant les lignes ci-dessous je pourrais afficher soit la description courte si elle est présente, soit la description longue.
Code:
{if isset($site.metaDescription)}
{$site.metaDescription}

{elseif isset($display.highlightKeywords)}
{$site.description|htmlspecialchars_decode|strip_tags|truncate:$setting.numberOfCharactersForItemDescription|highlight:$display.highlightKeywords|nl2br}

{else}		{$site.description|htmlspecialchars_decode|strip_tags|truncate:$setting.numberOfCharactersForItemDescription|nl2br}
{/if}
Mais celà ne fonctionne pas... Les sites ne possedant pas de description courte n'affiche plus de texte à coté de leur thumbshot.

J'ai bien essayé plusieurs variantes mais rien à faire...

Merci d'avance
Pinpin31
 

Blount

WRInaute impliqué
spout a dit:
Bah non, ce n'est pas pareil.
Les deux fonctions permettent de tester l’existence d'une variable. Mais empty test aussi que la variable n'est pas vide (vide == null == "" == false == array() et j'en oublie).
En gros :
PHP:
<span class="syntaxdefault"><br />$test </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">var_dump</span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$test</span><span class="syntaxkeyword">));</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// true<br /></span><span class="syntaxdefault">var_dump</span><span class="syntaxkeyword">(!empty(</span><span class="syntaxdefault">$test</span><span class="syntaxkeyword">));</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// false<br /></span><span class="syntaxdefault"></span>

En général, quand on récupère des données de la base, les variables existent toujours mais peuvent être vide.
 

spout

WRInaute accro
Je me suis mal exprimé, et j'ai lu la phrase de M-A à l'envers (plutôt que !empty utilise isset) :D
 

Pinpin31

Nouveau WRInaute
[Résolu] Probleme avec les fonctions {if}{else if}{else}

Merci beaucoup Marie-Aude !
Effectivement, en remplaçant "isset" par "!empty" tout fonctionne parfaitement.

Merci également aux autres intervenants.
 

Discussions similaires

Haut