Jump to content

Utilisation var smarty


Recommended Posts

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 by Aggie1 (see edit history)
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...