Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Utilisation de {page_image} : une image spécifique par page
#1

Lors de la création d'une page, les options vous permettent de définir une image (aussi une vignette ou thumbnail).
Vous collez cette balise {page_image} dans le contenu de la page.
Cette balise affiche le nom et l'extension de cette image, mais pas l'image en elle-même.
Une autre manière de récupérer le nom de ce fichier est : {$content_obj->GetPropertyValue('image')} mais c'est plus long Wink.

Pour afficher l'image, vous devez l'inclure dans une balise html <img />.
Ainsi je devrai écrire ce code :
Code :
<img src="uploads/images/{page_image}" alt="{page_image}" class="taClasse" />
C'est assez fastidieux si l'on désire que cela se fasse pour toutes les pages qui doivent contenir une image.
Comment automatiser tout cela ?

Je voudrais que si une page contient une image, elle s'affiche, sinon il ne se passe rien.
Il faut donc travailler dans le gabarit et non plus dans le content.
Logiquement, tu dois faire ceci : {if (!empty({page_image}))} <img... />{/if}
Mais, tu reçois alors une erreur, tu ne peux pas placer des accolades dans une accolade.
Donc, je vais utiliser la fonction capture de smarty pour modifier la syntaxe (bye bye {}).

Cette fonction va récupérer la valeur de {page_image} et la placer dans un attribut de smarty que je récupère avec $smarty.capture.image (j'aurais pu remplacer image par n'importe quel autre nom).
Voilà, notre condition peut maintenant se faire :
Code :
{capture name='image'}{page_image}{/capture}
{if ($smarty.capture.image ne '')}
<img src="uploads/images/{page_image}" alt="{page_image}" class="taClasse" />
{/if}
J'aurais pu également écrire ceci : {if (!empty($smarty.capture.image))} ou {if ($smarty.capture.image != '')}
Pour smarty "ne" signifie not equal, et "eq" signifie equal (équivalent).
Have fun Smile
Répondre


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)