Tout ce que vous voudriez savoir avant d'installer.
Un regard détaillé sur le fonctionnement de Module Promotions par Quantité PrestaShop 8 & 9 - X Achetés Y Offerts & Badges Promo, pourquoi nous l'avons conçu ainsi, et la réflexion derrière les fonctionnalités ci-dessus.
Le badge fait la vente, pas la règle de panier
Une réduction paramétrée dans PrestaShop reste invisible tant que le client n'a pas atteint la quantité. Le badge inverse la logique : il annonce l'offre pendant que le client parcourt la catégorie, au moment exact où il décide combien il prend. C'est pour cette raison que le module traite l'affichage et le calcul comme un seul objet. Vous créez une offre, le badge et la remise en découlent.
Six mécaniques couvertes
X achetés Y offerts couvre le 2+1, le 3+1 et le 4+2. Le Nième article remisé couvre le 2e à -25 %, le 3e à -50 % et toutes les variantes de rang. Deux déclinaisons complètent ce format : une remise en euros sur le Nième article, ou un prix imposé du type le 2e à 1 euro. Le cinquième type est le prix de lot, 3 pour 10 euros, utile quand vous préférez communiquer sur un prix rond plutôt que sur un pourcentage. Le sixième est la remise par paliers, qui récompense le volume sur tout le panier plutôt que sur un seul article.
Remise par paliers sur une catégorie entière
Vous définissez des seuils de quantité, par exemple -5 % dès 2 articles et -10 % dès 3. Le palier le plus élevé atteint s'applique à chaque article de l'offre : avec 4 articles, les 4 sont à -10 %, et pas seulement le dernier. En mode mix and match, les quantités de tous les produits rattachés à l'offre s'additionnent, donc un client qui prend deux références différentes d'une même catégorie atteint le palier de 2. Une règle de prix catalogue native ne sait pas faire ce cumul : elle compte les quantités produit par produit. Dans le panier, le client voit combien d'articles il lui manque pour passer au palier suivant.
Produits déjà remisés : cumuler ou non
Pour la remise par paliers, un réglage par offre décide du sort des produits qui ont déjà un prix spécifique ou une règle catalogue. En mode cumul, le palier s'applique sur le prix déjà remisé. En mode non cumulé, le palier est calculé sur le prix avant réduction et le client paie le plus bas des deux prix : un produit déjà à -20 % reste à -20 % avec un palier à -10 %, un produit à -5 % passe à -10 %. Les autres types d'offres gardent l'option qui exclut complètement les produits en promotion.
Prix négociés et clients B2B
Sur une boutique qui vend à des professionnels, une partie des clients a déjà un tarif négocié, posé en prix spécifique sur leur compte ou sur leur groupe. L'option d'exclusion des clients ayant un prix spécifique les écarte de l'offre produit par produit : pas de remise dans le panier, pas de badge sur la vignette. Seul le groupe par défaut du client est pris en compte, comme dans le calcul de prix de PrestaShop, et les prix spécifiques ouverts à tous les clients ne déclenchent pas l'exclusion.
Quel article est offert
Pour les offres par lot, le moteur trie les unités éligibles du panier par prix décroissant et applique l'avantage aux moins chères de chaque lot. C'est la règle appliquée par la grande distribution, et celle qu'attend le client. Sur un lot 3+1 composé d'articles à 20, 15, 10 et 5 euros, l'article offert est celui à 5 euros. La remise par paliers, elle, s'applique à chaque article.
Regroupement des quantités
Trois modes de cumul sont disponibles. Par produit, toutes déclinaisons confondues : six flacons du même gel douche déclenchent l'offre même s'il s'agit de trois parfums différents. Par déclinaison : chaque variante compte pour elle-même. Mix and match : toutes les unités des produits rattachés à l'offre entrent dans le même compte, ce qui permet de faire du 4+2 sur une gamme complète plutôt que sur une seule référence.
Priorité et consommation des unités
Quand plusieurs offres visent le même produit, la priorité détermine l'ordre d'application. Une unité déjà consommée par une offre sort du calcul pour les suivantes, ce qui empêche qu'un même article soit offert deux fois. Sur sept articles avec une offre 4+2, six unités sont consommées et la septième reste disponible pour une autre offre.
Ce qui se passe dans le panier
À chaque modification du panier, le moteur recalcule le total des remises et synchronise une règle de panier privée dont le code interne commence par DFQD. Le client voit une ligne de remise unique et n'a aucun code à saisir. Le détail par offre se replie en accordéon sous la ligne Réduction(s), et chaque ligne produit concernée affiche le badge de l'offre, son prix initial barré et le prix remisé. Quand il ne manque que quelques articles pour déclencher une offre ou atteindre le palier suivant, un encart l'annonce avec un bouton qui ajoute les unités manquantes. À la validation de la commande, la règle est désactivée et détachée du module, mais reste rattachée à la commande pour vos exports comptables et vos avoirs.
Personnalisation du badge
Le texte du badge accepte des variables qui reprennent les valeurs de l'offre : la quantité achetée, la quantité offerte, le rang de l'article remisé, la valeur de remise et son équivalent en prix formaté. Vous écrivez « 4+2 gratuits » ou « le 2e à -25 % » directement dans chaque langue de la boutique, ou vous laissez le champ vide pour une génération automatique, « Jusqu'à -10 % » pour une remise par paliers. Couleur de fond, couleur de texte, forme et position se règlent offre par offre, ce qui permet de distinguer une opération saisonnière d'une offre permanente.
Intégration technique
Les badges sont posés par un script front à partir d'un seul appel Ajax, ce qui évite de dépendre du hook displayProductPriceBlock que beaucoup de thèmes personnalisés n'appellent plus. Le placement est rejoué après les rafraîchissements Ajax de la recherche à facettes, de la pagination et du quick view. Pour garder la main, le hook dédié displayDfQdBadge s'appelle depuis n'importe quel template, et un réglage coupe l'injection automatique pour éviter les doublons. Le bloc des offres est rendu par displayProductAdditionalInfo puis déplacé côté navigateur à l'emplacement choisi. Aucun override de classe ni de contrôleur n'est installé, et le CSS est isolé sous le préfixe dfqd.
Il n’y a pas encore d’avis.