10 Sep 2020

Comment masquer un prix à 0€ dans Prestashop 1.7

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 :

{if $product.price_amount eq "0"} 
    <p><b>{l s='Sur devis' d='Shop.Theme.Catalog'}</b></p>
{else}
   {block name='product_prices'}
      {include file='catalog/_partials/product-prices.tpl'}
   {/block}
{/if}

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

{if $product.price_amount eq "0"}
  <span itemprop="price" class="price">{l s='Sur devis' d='Shop.Theme.Actions'}</span>
{else}
  <span itemprop="price" class="price">{$product.price}</span>
{/if}

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

7 commentaires sur “Comment masquer un prix à 0€ dans Prestashop 1.7
  1. 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.

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

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

        1. ç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 !

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

          2. Si plus rien ne s’affiche ça doit être bon.
            Je ne peux pas le reproduire, je n’ai pas votre thème.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.