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
#2

ca serait bien de le mettre dans astuce celui là Smile
Répondre
#3

C'est l'explication d'une tag + une astuce. Il faudrait un raccourci Wink.
Le mieux serait de la placer dans l'aide de la balise (qui est un peu courte...)
Répondre
#4

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 ?

Ouik - communication . outils numériques . design graphique
Répondre
#5

[Image: k2t6s7ixcn9um1nw78-deterrage.png] Big Grin
Répondre
#6

jolie image :lol:

Ouik - communication . outils numériques . design graphique
Répondre
#7

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.
Répondre
#8

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

Ouik - communication . outils numériques . design graphique
Répondre
#9

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).
Répondre


Atteindre :


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