Aggie1 Posted October 6, 2023 Share Posted October 6, 2023 (edited) Bonjour, Il y a quelque chose qui m'échappe avec les variables smarty. J'avais cru comprendre qu'une fois assignée on pouvait la réutiliser d'un fichier tpl à l'autre. Un peu comme une variable mis en session avec php. Voici un exemple: Dans mon fichier product.tpl qui affiche les miniatures des produits sur mes pages catégories, le fichier product-flags.tpl (qui affiche les réductions, rupture de stock) est appelé via: {include file='catalog/_partials/product-flags.tpl'} Dans product-flags.tpl j'ai une boucle qui créé une liste. Je souhaite abandonner la liste car je ne souhaite pas faire apparaitre la réduction d'un produit à coté du texte rupture de stock. Du coup je voulais conserver la boucle et assigner des variables smarty que j'aurai traiter dans le fichier product.tpl avec un if pour afficher mes réductions ou mes rupture de stock à des endroits différents de ma page. J'ai donc modifié la boucle du fichier product-flags.tpl comme ceci: {block name='product_flags'} {foreach from=$product.flags item=flag} {if $page.page_name != 'product' AND $flag.type == 'discount'} {assign var='montant' value=$flag.label}{/if} {if $page.page_name != 'product' AND $flag.type == 'out_of_stock'} {assign var='stock-hs' value=$flag.label}{/if} {/foreach} {/block} Quand j'appel l'une ou l'autre des 2 variables (après l'include) que j'ai assigné ($montant ou $stock_hs) depuis la page product.pl en faisant un: <div class"test">{$montant}</div> C'est vide. Rien ne s'affiche. Si je place le même bloc après la boucle dans le fichier product-flags.tpl ca fonctionne. Du coup ma question est donc la suivante. Est ce qu'une variable smarty une fois assigné peut être appelé depuis n'importe quelle page tpl? Merci d'avance pour votre aide Edited October 6, 2023 by Aggie1 (see edit history) Link to comment Share on other sites More sharing options...
JulienPct Posted October 9, 2023 Share Posted October 9, 2023 Bonjour, L'information est à prendre avec des pincettes mais ce que j'ai compris des variables smarty est que vous pouvez utiliser une variable déclarée avec un "Scope" global dans tout vos tpl "enfants" (tpl appelés depuis un autre). Vous ne pouvez donc pas appeler votre variable dans votre fichier "product.tpl" car vous avez créé cette dernière dans un tpl enfant. Je ne sais pas si je suis assez clair 😅 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now