Les boutiques B2B ont souvent besoin de masquer les prix publics : grilles tarifaires personnalisées par client, accords commerciaux confidentiels, ou simple volonté de forcer la création de compte. PrestaShop propose plusieurs approches selon la granularité souhaitée.
Méthode 1 : Mode catalogue natif (la plus simple)
PrestaShop intègre un mode catalogue qui masque les prix et le bouton « Ajouter au panier » pour tous les visiteurs :
- Allez dans Préférences → Produits
- Activez Mode Catalogue → Oui
- Enregistrez
Limite : ce mode masque les prix pour tout le monde, y compris les clients connectés. Ce n’est pas idéal pour du B2B où les clients identifiés doivent voir leurs tarifs.
Méthode 2 : Groupes clients (recommandé pour B2B)
PrestaShop permet de gérer des groupes avec des droits différents :
- Créez un groupe « Visiteur sans prix » dans Clients → Groupes
- Dans les paramètres du groupe, décochez Afficher les prix
- Affectez le groupe par défaut « Visiteur » à ce nouveau groupe
Les clients connectés (groupe « Client » ou « Grossiste ») verront les prix, les visiteurs non.
Configuration du groupe
Clients → Groupes → Modifier le groupe "Visiteur"
├── Afficher les prix : Non
├── Remise : 0%
└── Méthode d'affichage des prix : HT ou TTC selon votre besoin
Méthode 3 : Override Smarty (PS 1.6 et 1.7 classic)
Si vous utilisez un thème basé sur Smarty (le thème classic ou un thème 1.6), vous pouvez conditionner l’affichage via la variable $logged :
Sur la page produit
Dans votre fichier de template produit (par exemple themes/votre-theme/templates/catalog/product.tpl pour PS 1.7, ou themes/votre-theme/product.tpl pour PS 1.6) :
{* Masquer le prix et le bouton panier si non connecté *}
{if $customer.is_logged}
<div class="product-prices">
{block name='product_prices'}
{include file='catalog/_partials/product-prices.tpl'}
{/block}
</div>
<div class="product-add-to-cart">
{block name='product_add_to_cart'}
{include file='catalog/_partials/product-add-to-cart.tpl'}
{/block}
</div>
{else}
<div class="login-to-see-price">
<p>
<a href="{$urls.pages.authentication}" class="btn btn-primary">
Connectez-vous pour voir les prix
</a>
</p>
</div>
{/if}
Sur les listings catégorie
Même logique dans product-miniature.tpl (PS 1.7) ou product-list.tpl (PS 1.6) :
{if $customer.is_logged}
<span class="price">{$product.price}</span>
{else}
<span class="price-hidden">Prix sur demande</span>
{/if}
N’oubliez pas de vider le cache
Après toute modification de template :
- Paramètres avancés → Performances
- Désactivez le cache (temporairement) ou cliquez sur Vider le cache
- Activez Forcer la compilation pendant vos tests
- Remettez les paramètres de production une fois terminé
Méthode 4 : CSS rapide (déconseillé)
On voit parfois cette astuce CSS, mais elle est à éviter car les prix restent visibles dans le code source :
/* NE PAS FAIRE - les prix restent dans le HTML */
.not-logged .product-price { display: none; }
Un concurrent ou un client malin n’a qu’à inspecter le code pour voir vos tarifs. Préférez toujours une solution côté serveur (override PHP ou groupes clients).
Quelle méthode choisir ?
| Critère | Mode catalogue | Groupes | Override Smarty |
|---|---|---|---|
| Complexité | Très simple | Simple | Moyenne |
| Granularité | Tout ou rien | Par groupe client | Par template |
| Version PS | Toutes | Toutes | 1.6 / 1.7 classic |
| Personnalisation | Aucune | Bonne | Totale |
Pour une boutique B2B sérieuse, la méthode des groupes clients est la plus robuste et la plus maintenable. Elle ne nécessite aucune modification de code et survivra aux mises à jour de PrestaShop.
Optimiser votre boutique B2B
Une fois vos prix masqués pour les visiteurs anonymes, assurez-vous que les clients connectés trouvent facilement vos produits. L’optimisation du référencement de votre catalogue PrestaShop — balises meta, descriptions enrichies, maillage entre catégories — reste essentielle pour attirer du trafic qualifié B2B via Google.
Pour aller plus loin :