Jump to content

(tuto-exemple RECAP PANIER) Changer la couleur de l'icone selon la dispo de l'article


Recommended Posts

Bonjour

J'avais besoin pour ma boutique que l'icone de disponibilité dans la récap du panier soit d'une couleur différente quand mon produit est sur commande

Je vous propose ici le code à ajouter (merci aux pros de me dire s'il y a une erreur en sachant que je débute )

Pour celà il faut:
que si votre produit est hors stock, autoriser la commande quand même (soit dans préférences, soit dans la fiche produit)

1-créer l'icone que vous voulez pour indiquer que le produit est sur commande. Moi j'ai pris l'icone de dispo verte (available.gif que j'ai modifiée en couleur orange)

2-enregistrer cette nouvelle icone dans votre dossier icon/img devotre thème (le nom de mon icone est oravailable.gif)

3- ouvrir le fichier shopping-cart-product-line.tpl de votre thème et faire les modifs suivantes:

3a-- vers la ligne 11
trouver

       {if $product.active AND ($product.allow_oosp OR ($product.quantity <= $product.stock_quantity))}

       {else}

       {/if}



et remplacer par:

       {if $product.active AND ($product.quantity <= $product.stock_quantity)}


       {elseif $product.active AND ($product.allow_oosp )}


       {else}

       {/if}



en fait on a rajouté une condition:
si le produit est actif et la quantité supérieure à 0:icone verte
si le produit est actif , plus dispo mais commandable : icone orange
si aucune de ces conditions icone rouge c'est à dire si produit pas dispo et non commandable

4- vous pouvez si vous le souhaitez ajouter une explication pour le client, moi j'ai mis
"icone orange" article sur commande, ce produit ne peut bénéficier de la livraison 48h; merci de vous référer à la fiche produit pour connaitre le délai de livraison

pour celà ouvrez le fichier shopping-cart.tpl de votre thème, vous ajoutez où vous voulez (par ex avant {if $voucherAllowed}) la ligne suivante:

 article sur commande, ce produit ne peut bénéficier de la livraison 48h; merci de vous référer à la fiche produit pour connaitre le délai de livraison



et voilà, pour rappel je ne suis pas un pro j'ai appris grâce au forum, donc n'hésitez pas à me corriger si besoin

miles

Link to comment
Share on other sites

bonjour Miles

merci pour ton idée d'ajout au moins de cette façon pour les clients c'est bien plus clair et moins de probleme pour nous et surtout de discussions.

Car beaucoups ne savent pas lire les stocks semble t'il !

cordialement

Link to comment
Share on other sites

  • 3 months later...
  • 1 year later...
  • 1 month later...

Bonsoir,

Je viens de mettre en place cette technique en place, sur PS 1.4.9.0, ça marche très bien !

Par contre je souhaiterai que l'explication au client (expliqué en étape 4 par Miles) n’apparaissent que quand il y a un produit dans le cas "orange" dans le panier. Sinon, inutile qu'il apparaissent.

Actuellement, ce commentaire apparait de manière permanente.

Comment faire ?

J'imagine qu'il faut faire un bout de code avec {if} {/if}, mais je ne sais pas comment faire.

Quelqu'un pourrait m'aider.

Merci d'avance pour les bonnes volontés.

Edited by A1TH (see edit history)
Link to comment
Share on other sites

Bonsoir,

J'avais déjà essayé quelque chose comme ça

{if $product.active AND ($product.allow_oosp )} mon texte {/if}

Le problème, c'est que ça s'affichait tout le temps.

 

En insérant cette condition dans

{foreach from=$products item=product} ... {/foreach}

Ca me satisfait pas non plus car en effet, si aucun produit dans le panier, le texte ne s'affiche pas, mais dès qu'il y a un produit dans le panier (même s'il est dispo), le texte s'affiche. De plus si il y a 2 produits, le texte va s'afficher 2 fois.

 

Ca fait des heures que je cherche en vain.

 

L'idée c'est que le texte ne s'affiche qu'une seule fois seulement dès qu'il y a un produit "orange" dans le panier si non rien.

Mais je tourne en rond.

Merci d'avance pour un nouveau coup de pouce.

Link to comment
Share on other sites

Bonjour

Merci Franck pour ton temps et ton aide précieuse, mais malheureusement, l'objectif n'est toujours pas atteint.

Je reprécise, que je souhaite que "Mon texte" s'affiche seulement dans le cas où il y a un produit orange dans le panier, si non pas de texte/rien.

Je vais exposé ici tous les tests que j'ai fais, afin de comprendre ce qui ne marche pas :

 

A/ Si je mets seulement

Mon texte

Le texte s'affiche en permanence.

 

B/ si j'ajoute une condition {if} sans {foreach}

{if $product.active AND ($product.allow_oosp )}
Mon texte
{/if}

Ca ne change rien, le texte s'affiche, comme dans le cas A/ quelque soit le nbre de produits et quelque soit si le produit est dispo ou non dispo mais commandable dit "orange"

 

C/ si j'ajoute une condition {if} avec {foreach}

{foreach from=$products item=product}		
{if $product.active AND ($product.allow_oosp )}
Mon texte
{break}
{/if}
{/foreach}

Ca ne change rien, le texte s'affiche qu'une seule fois, comme dans le cas A et B/

 

D/ si je mets seulement

{foreach from=$products item=product}		
Mon texte
{/foreach}

Le texte s'affiche autant de fois qu'il y a de produits dans la panier, quelque soit si le produit est dispo ou non dispo mais commandable dit "orange"

 

E/ si je mets

{foreach from=$products item=product}		
Mon texte
{break}
{/foreach}

Le texte s'affiche qu'une seule fois, comme dans le cas A et B/

 

Conclusion,

- La fonction {break} fonctionne très bien dans le cas d'un {foreach}

- Mais, il y a un problème avec la fonction {if}, car avec ou sans condition, "Mon texte" s'affichera toujours même s'il n'y a pas de produit orange dans le panier.

On doit mal formuler la condition, y a un truc que je ne pige pas.

 

Une idée ?

Link to comment
Share on other sites

Je viens de voir mais en fait le fichier dont tu parles n'est pas shopping-cart.tpl mais shopping-cart-product-line.tpl.

Mais commences déjà par regarder ce que tu fais. Le fichier shopping-cart-product-line.tpl est inclus dans le fichier shopping-cart.tpl et ce fichier est déjà inclus dans un foreach.

Donc partout où tu vas mettre du code dans ce fichier tu seras déjà dans une boucle.

 

Bref, le code que je t'ai donné, mets le dans le fichier shopping-cart.tpl hors de toute boucle foreach et dis moi le résultat. Je sais pas si ça peut marcher, on verra...

Edited by franckm1000 (see edit history)
Link to comment
Share on other sites

Je ne peux que te remercier du temps que tu passes pour m'aider à trouver une solution. C'est très sympa.

 

Je suis confus, tu me dis :

Je viens de voir mais en fait le fichier dont tu parles n'est pas shopping-cart.tpl mais shopping-cart-product-line.tpl.

 

Alors que je travaille bien sur shopping-cart.tpl

 

et voici comment j'ai mis le code exrtrait avant jusque apres vers la ligne 285 du shopping-cart.tpl, juste avant {if $voucherAllowed}:

	{/foreach}
	</tbody>
{/if}
</table>
</div>
{foreach from=$products item=product}		
{if $product.active AND ($product.allow_oosp )}
	TEXT TEXT TEXT
{break}
{/if}
{/foreach}
{if $voucherAllowed}
<div id="cart_voucher" class="table_block">

 

Et dans ce cas, c'est comme j'ai dis avant, la condition ne fonctionne pas. J'ai toujours le texte dès que j'ai un produit dans le panier, quelque soit la disponibilité du produit.

Link to comment
Share on other sites

  • 11 months later...

je déterre ce post car j'essai de mettre un macaron de couleur en fonction d'une case à cocher dans presta.

mais je n'y arrive pas. j'ai créé ma checkbox, elle fonctionne et j'ai esasyé d'ajouter ce bout d code dans shopping-cart-product-line.tpl

mon champ s'appelle commande.

<!--<td class="cart_availability">          {if $product.commande ==0}  <img src="{$img_dir}icon/oravailable.gif" alt="{l s='sur commande'}" width="14" height="14"> 
{else} <img src="{$img_dir}icon/available.gif" alt="{l s='Available'}" width="14" height="14"> {/if}
	</td>-->

j'ai essayé aussi avec {if $product->commande} et j'ai essayé avec online_only (car je m'en sert pour mes produits d'occasion et don j'ai voulu voir si en ajoutant un article d'occase ca marchait)

 

rien n'y fait, pas moyen, soit j'ai 2 rond verts, soit j'ai 2 bleus, pas moyen de différencier un produit en stock et un autre pas en stock.

 

qqun peut il m'aider? merci

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