Utilisation de {page_image} : une image spécifique par page -
Jean le Chauve - 17/02/2010
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
.
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
Utilisation de {page_image} : une image spécifique par page -
bess - 17/02/2010
ca serait bien de le mettre dans astuce celui là
Utilisation de {page_image} : une image spécifique par page -
Jean le Chauve - 17/02/2010
C'est l'explication d'une tag + une astuce. Il faudrait un raccourci
.
Le mieux serait de la placer dans l'aide de la balise (qui est un peu courte...)
Utilisation de {page_image} : une image spécifique par page -
Ouik - 06/09/2012
AHHHHH ! J'ai cherché la doc de cette balise qui est plus que succincte. J'en suis arrivé à la même conclusion qu'il fallait l'inclure dans une balise <img>.
Je ne comprends pas que cette balise n'insère pas automatiquement l'image elle-même directement, ça me semble bien plus logique, pas vous ?
Utilisation de {page_image} : une image spécifique par page -
bess - 06/09/2012
Utilisation de {page_image} : une image spécifique par page -
Ouik - 06/09/2012
jolie image :lol:
Utilisation de {page_image} : une image spécifique par page -
Jean le Chauve - 06/09/2012
Ce ne serait pas des plus efficace qu'elle insère la tag <img ; imagine, ce qui est des plus probable, que tu désires l'intégrer avec CGSmartImage, tu serais obligés de nettoyer tout le code avec une regex... n'oublie pas que c'est un noob qui va uploader cette image, et donc, avec un poids sans doute incompatible avec le net.
Utilisation de {page_image} : une image spécifique par page -
Ouik - 06/09/2012
En effet, je n'avais pas songé à ces possibilités.
En l'occurrence pour mon projet actuel, j'aurais trouvé plus pratique de pouvoir insérer directement l'image ainsi (il n'y a pas d'interaction utilisateur).
Utilisation de {page_image} : une image spécifique par page -
Jean le Chauve - 06/09/2012
Tu confortes mon explication. L'utilisateur n'a de toutes façons qu'une interaction : uploader l'image ; c'est toi qui insères la tag dans le gabarit (et cela te laisse le choix de l'utiliser comme bon te semble).