Jump to content
riverphot

Ajout d'un texte en fonction des caractéristiques [Résolu]

Recommended Posts

Bonjour,

je souhaiterais ajouter un bloc de texte sur la page de récapitulatif Panier.
Ce texte ne devrait s'afficher que si un produit présent dans mon panier contient une caractéristique.

Pour simplifier je n'utilise qu'une seule caractéristique produit, du coup il y a ou il n'y a pas de caractéristique sur mes produits.

A votre avis, cela est il faisable ?

En vous remerciant.

 

Edited by riverphot (see edit history)

Share this post


Link to post
Share on other sites

Et ce bloc de texte que tu dois rajouter, il doit s'afficher en face de chaque produit ou seulement une seule fois si au moins un de tes produits possède cette caractéristique ?

Share this post


Link to post
Share on other sites

Si ce n'est qu'une seule fois, tu peux rajouter quelque chose qui ressemble à ça dans ton fichier templates/checkout/cart.tpl :

{foreach from=$cart.products item=product}
  {if !empty($product.attributes)}
    {l s='Your text' d='Shop.Theme.Checkout'}
    {break}
  {/if}
{/foreach}

 

Pour chaque produit du panier, s'il existe au moins une caractéristique sur le produit on affiche le texte. Le break permet de clore la boucle.

Share this post


Link to post
Share on other sites

Super ça marche.
Merci beaucoup.

J'ai juste modifié $product.attributes par $product.features (pour les caractéristiques).
Mais du coup je comprend mieux comment ça marche.

Je vais essayer d'aller plus loin en stipulant le nom de la caractéristique concernée. 

Je mets le code si je trouve :)

Share this post


Link to post
Share on other sites

J'ai essayé comme ça pour spécifier le nom de ma caractéristique mais il ne reconnait pas la variable name.

J'ai encore pas mal de progrès à faire. Mais encore une fois merci, ton aide à été très précieuse.

{foreach from=$cart.products item=product}
    {if !empty($product.features)} 

        {foreach $product.features as $feature feature=name}
            {if ($feature.name=="NomCaractéristique")}
               {l s="Mon texte"}
             {/if}
        {/foreach}
  
    {break}
  {/if}
{/foreach}

 

Share this post


Link to post
Share on other sites

Essaie comme ça : 

{foreach from=$cart.products item=product}
  {if !empty($product.features)} 

    {foreach $product.features item=feature}
      ...
    {/foreach}
        
    {break}
  {/if}
{/foreach}

 

Item c'est la valeur que prends ton itération (qui correspond à la variable que tu as après "as" dans un foreach classique) :)

Edited by Support Digital (see edit history)

Share this post


Link to post
Share on other sites

Ca me génère une erreur disant qu'il ne connait pas name.
Mais grâce à toi et à un petit tour dans la base de données j'ai compris.
En fait la table product.features n'intègre pas le nom (qui est dans une table de traduction). Donc je fais avec l'ID, ce qui au passage est plus propre et plus pérenne.

Je mets le code si ça peut aussi servir à d'autres.
En tout cas merci, ça m'aide vraiment et surtout je commence à un peu mieux m'y retrouver dans la construction du code de prestashop :)


Voici donc le code final :

{foreach from=$cart.products item=product}
  {if !empty($product.features)} 

    {foreach $product.features item=feature}
      {if ($feature.id_feature=="3")}
   		 {l s="MonTexte" d="Shop.Theme.Checkout"}
      {/if}
    {/foreach}
        
    {break}
  {/if}
{/foreach}  


 

  • Like 1

Share this post


Link to post
Share on other sites

Il faut utiliser le mode {debug} pour voir les valeurs de sortie de chaque variable prestashop.

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More