Selon ce que vous vendez, vous pouvez être amené à avoir des produits affichés à 0€ sur votre site Prestashop. Il n’est pas toujours utile dans ce cas-là de montrer cette bulle ronde aux visiteurs de votre site. Voici un tutoriel Prestashop, pour vous permettre de masquer le prix d’un produit à 0€.
Pourquoi masquer le prix d’un produit à 0 euro ?
Selon vos besoins et ce que vous proposez à vos clients, vous pouvez être amené devoir renseigner des produits à ce tarif.
Voici une liste de situations de produit à 0€ :
– Un produit uniquement sur devis
– Un cadeau à offrir aux clients sous une règle panier
– Un produit personnalisable sous Prestashop
– Un produit variable avec des déclinaisons qui impactent le prix
etc.
J’ai rencontré ce besoin sur le site d’un client qui vend des coffrets de produits de terroir. Le site est destiné à des clients B2B. Un produit présent sur le Prestashop peut-être personnalisé sur devis. Le tarif étant à 0€, il était inutile d’afficher le prix sur les pages catégories et sur la fiche produit.
Conditions d’affichages pour ne pas afficher le prix dans Prestashop 1.7
Un produit peut être affiché sur plusieurs pages du site. Il va donc falloir modifier plusieurs fichiers pour indiquer à Prestashop que, si le prix du produit est égal à 0€, alors il ne faut pas afficher le prix.
Ce tutoriel vous indique comment modifier certains fichiers de votre site. Si vous n’êtes pas à l’aise avec ce genre de processus, réalisez une sauvegarde de votre site ou faites appel à un freelance Prestashop.
Je vous conseille d’utiliser un thème enfant pour permettre de récupérer les fichiers natifs si besoin.
Pour ce tutoriel, j’ai mis une condition pour remplacer le prix par un texte, qui peut-être traduit en back-office.
J’ai ajouté “sur devis”. Cependant, vous êtes libre de mettre n’importe quel texte ou rien du tout si vous le souhaitez.
Je vous conseille de mettre un texte pas trop long pour avoir un affichage parfait sur les formats desktop et mobile de votre site Prestashop.
Masquer un prix à 0 euro dans la fiche produit de Prestashop
Nous allons mettre une condition dans un fichier qui permet d’appeler les prix sur la fiche produit de Prestashop.
Cette condition permettra d’afficher un texte, si le produit est à 0€.
Libre à vous de mettre le texte comme bon vous semble.
Sur votre serveur, rendez-vous dans votre thème et suivez ce chemin : template > catalog
Vous pouvez ouvrir le fichier product.tpl et vous rendre à la ligne 87.
Remplacez la condition du bloc prix par :
Avec ce bout de code, vous allez afficher un texte au lieu du prix du produit.
Ne pas afficher un prix à 0 euro dans la liste produit de Prestashop
Pour modifier ce fichier vous devez vous rendre dans votre thème et suivre ce chemin : template > catalog > _partials > miniature.
Ensuite vous avez un fichier product.tpl, ouvrez le et rendez-vous à la ligne 71 environ. Vous devez trouver la variable product.price qui est dans une balise span.
Ci-dessous vous avez la condition à mettre pour masquer le prix du produit s’il est égal à 0€.
Avec cette astuce vous pouvez facilement masquer un prix et informer le client grâce à un texte présent sur le site. Du moment que vous allez modifier le prix de votre produit, instantanément le texte va disparaître pour laisser place au nouveau tarif du produit.
Vous avez besoin d’aide pour masquer un prix à 0€ sur Prestashop ?
– Connexion à votre serveur
– Insertion des conditions dans les fichiers tpl
– Ajout d’un style pour adapter à votre thème
…
Vous pouvez prendre un ticket d’intervention Prestashop sur mon site pour votre boutique en ligne.
Source : Forum Prestashop
Photo by engin akyurt on Unsplash
Cela marche, super génial ! Merci beaucoup pour ce bout de code très astucieux
C’est vraiment une super méthode !
Je l’ai testé et cela fonctionne très bien, j’ai même rajouter un lien derrière “Sur devis” afin de mener vers ma page de contact.
En revanche, sur la liste produit, j’ai encore mon “HT” qui s’affiche. Du coup j’ai : “Sur devis HT”. Savez-vous où supprimer ce “HT” svp?
Merci à vous.
Belle journée.
Alors nativement on a pas le label (ht ou ttc) dans la liste produit sur Prestashop 1.7. Donc c’est spécifique.
Il faut donc vérifier ou est le HT, vous pouvez le masquer, s’il a une class CSS avec un display:none.
Ou bien dans le code, masquer avec la condition, la variable qui affiche le label.
Merci Matthieu pour votre réponse.
Oui c’est un thème que j’ai acheté, il affiche le prix et la mention “HT” ou TTC” à la suite.
Dans le code du fichier product.tpl (catalog\_partials\miniatures) je vois cette ligne qui correspondrait à cette mention :
{if $configuration.taxes_enabled && $configuration.display_taxes_label}
{$product.labels.tax_long}
{/if}
Sachant que j’ai beaucoup de mal avec PHP, est il possible de faire cela :
{if $configuration.taxes_enabled && $configuration.display_taxes_label}
{$product.labels.tax_long}
{else if $configuration.taxes_enabled && $configuration.display_taxes_label && $product.price_amount eq”0″}
{l s=’ ‘}
{/if}
??
Merci à vous
ça peut marcher je pense mais il faut utiliser !$ pour masquer et que ça soit plus propre.
Sinon mettez {$product.labels.tax_long} avec une classe CSS qui se charge avec la condition 0 et vous le masquez. ça sera plus simple et moins de risque d’erreur.
Bon code !
Merci pour votre aide.
comme cela?
{if $configuration.taxes_enabled && $configuration.display_taxes_label}
{$product.labels.tax_long}
{elseif $configuration.taxes_enabled && $configuration.display_taxes_label && $product.price_amount eq”0″}
{$product.labels.tax_long}
{/if}
Si plus rien ne s’affiche ça doit être bon.
Je ne peux pas le reproduire, je n’ai pas votre thème.
Bonjour Mathieu,
Merci beaucoup pour cette astuce sympa, par contre je n’arrive pas à la mettre en oeuvre, je m’explique:
j’utilise la version 1.7.2 de prestashop et dans le fichier product.tpl qui se trouve à l’endroit ou vous avez indiqué (catalog\_partials\miniatures), ne se trouve pas la condition “if $product.price_amount eq “0””
J’utilise le thème Panda au fait, mais même dans le thème ‘classic’ je ne trouve pas cette condition dans le code.
Peut-être auriez une idée ou un petit coup de main svp?
Merci.
C’est normal de ne pas la trouver parce qu’elle n’existe pas.
Je donne le code pour intégrer cette condition justement, c’est noter dans l’article.
olala je suis confus, je m’excuse pour ma bêtise, c’est effectivetivement bien écrit dans l’article, je m’étais rendu compte de l’absurdité de mon commentaire mais comme il n’était pas encore en ligne, je ne pouvais pas me rattraper.
En faisant la recherche ‘price’ dans mon fichier product.tpl, j’ai à une ligne:
“{block name=’product_price_and_shipping’}
{if $sttheme.pro_block_align!=2}{include file=’catalog/_partials/miniatures/product-price.tpl’}{/if}
{/block}”
Je me demande est-ce que c’est bien dans product.tpl que je dois rajouter votre code ou dans mon cas plutot dans product-price.tpl ou j’ai trouvé les span dont vous parliez (je n’arrive pas à inserer le contenu du fichier en commentaire.)
Merci d’avance
La réponse est encore dans l’article. J’entoure le bloc prix et le product-price.tpl avec ma condition. Vous devez faire pareil.
Vous avez un thème particulier et des plus complexes qui existe. Donc les lignes ne peuvent pas être forcément pareilles.
Merci, bon j’avance mais j’ai 2 petits soucis.
J’ai rajouté le code comme ceci:
{block name=’product_price_and_shipping’}
{if $product.price_amount eq “0”}
{l s=’Sur devis’ d=’Shop.Theme.Catalog’}
{else}
{block name=’product_prices’}
{include file=’catalog/_partials/product-prices.tpl’}
{/block}
{/if}
{if $sttheme.pro_block_align!=2}{include file=’catalog/_partials/miniatures/product-price.tpl’}{/if}
{/block}
J’ai donc 2 “block” qui sont affichés, le nouveau qui contient la condition et le second qui est implémenté de base et tout cela uniquement dans la liste des articles et non pas dans la fiche du produit. En rajoutant à cela un petit problème de taille de police, j’imagine que la nouvelle condition ne prends pas en compte le css.
Merci pour votre aide généreuse.
Je ne peux pas faire particulier par thème, je donne une astuce qu’il faut adapter. Peut-être que pour votre thème il faut le mettre ailleurs.
Si vous avez besoin d’une intervention je peux réaliser un devis, il suffit de m’écrire à contact@matthieu-jalbert.fr
Je comprends parfaitement, j’essaie un peu par moi même et je vous envoie un mail.
Merci encore.