Shopware Extensions Shopware

Compteur de Paniers Shopware 6 : preuve sociale « Dans + de 20 paniers » sur la fiche produit

La preuve sociale qui transforme : montrez combien de clients ont déjà ce produit dans leur panier.

Sur Shopware, un panier n'existe pas sous forme de lignes en base : il est sérialisé dans un payload unique de la table cart. Afficher « ce produit est dans 23 paniers » demanderait donc de désérialiser l'intégralité des paniers de la boutique à chaque affichage de fiche, ce qui est impraticable. Ce plugin résout le problème autrement : il maintient son propre index (jeton de panier, produit, canal de vente, statut commandé) alimenté en temps réel par les événements panier de Shopware, puis compte cet index avec une requête indexée unique mise en cache. Résultat : un badge de preuve sociale basé sur vos vraies données de panier, sans impact mesurable sur le temps de rendu de la fiche produit.

En un coup d'œil
  • Badge « Dans + de 20 paniers » affiché sous le bloc d'achat de la fiche produit
  • Comptage réel des paniers en cours, dédoublonné par jeton de panier et scopé au canal de vente
  • Index dédié alimenté par les événements panier, contournement de la sérialisation du panier Shopware
  • Seuil d'affichage, fenêtre temporelle, mode palier arrondi ou nombre exact, cache paramétrable
  • Compatible Shopware 6.5, 6.6 et 6.7, textes traduits en 6 langues
Shopware 6.5 / 6.6 / 6.7 PHP 8.1+ Multi canal de vente 6 langues Code source inclus
  • Remboursement 30 jours
  • 12 mois de mises à jour
  • Support 24h
www.datafirefly.com/
Badge « Dans + de 20 paniers » affiché sous le bloc d'achat d'une fiche produit Shopware 6
v1.0.0 · mis à jour 2026-08-11
Ce que ça fait

La version courte.

01

Preuve sociale instantanée

Un badge « Dans + de 20 paniers » sous le bloc d'achat, déclenché uniquement au-dessus du seuil que vous définissez. En dessous, rien ne s'affiche : le message reste toujours valorisant.

02

Basé sur vos vraies données

Comptage des paniers contenant réellement le produit, dédoublonné par jeton de panier et limité au canal de vente courant. Aucun chiffre inventé, aucune simulation aléatoire.

03

Un index, pas une désérialisation

Shopware sérialise le panier dans un payload unique. Le plugin maintient une table d'index alimentée par CartSavedEvent, ce qui transforme un problème impossible en une requête indexée de quelques millisecondes.

04

Performance maîtrisée

Cache intégré avec durée de vie paramétrable, vidé automatiquement à chaque changement de configuration. Aucun recalcul SQL à chaque affichage de fiche, même en pic de trafic.

05

Déclinaisons agrégées

Sur un produit à variantes, les paniers de toutes les déclinaisons remontent sur le compteur du produit parent. Une taille 42 dans trois paniers et une taille 43 dans deux paniers affichent bien cinq paniers, pas deux compteurs isolés.

06

Paramétrable au détail

Seuil, fenêtre temporelle, paniers actifs uniquement, mode palier ou nombre exact, pas d'arrondi, emplacement au-dessus ou sous le bloc d'achat, trois styles de badge, durée de rétention.

La version longue

Tout ce que vous voudriez savoir avant d'installer.

Un regard détaillé sur le fonctionnement de Compteur de Paniers Shopware 6 : preuve sociale « Dans + de 20 paniers » sur la fiche produit, pourquoi nous l'avons conçu ainsi, et la réflexion derrière les fonctionnalités ci-dessus.

§ 01

Pourquoi ce module n'existe pas nativement sur Shopware

Sur PrestaShop, compter les paniers contenant un produit se fait avec une jointure sur la table des lignes de panier. Sur Shopware, cette table n'existe pas : le panier complet est sérialisé dans une colonne payload de la table cart, souvent compressée. Une requête SQL ne peut donc pas savoir ce que contient un panier sans le désérialiser, et désérialiser plusieurs milliers de paniers à chaque affichage de fiche produit est hors de question. C'est la raison pour laquelle ce type de preuve sociale est courant sur PrestaShop et rare sur Shopware.

§ 02

La solution : un index alimenté par les événements

Le plugin crée une table df_cart_popularity qui associe un jeton de panier, un identifiant produit, un canal de vente, une quantité et un indicateur de commande. Cet index est mis à jour à chaque persistance de panier via l'événement CartSavedEvent : produits ajoutés, quantités modifiées, lignes supprimées, tout est synchronisé en deux requêtes. Le comptage devient alors un simple COUNT DISTINCT sur un index composite, exécuté une fois par durée de cache et par produit. Le surcoût côté panier est de l'ordre de deux requêtes indexées par modification, invisible dans un profil de performance.

§ 03

Deux façons d'afficher le nombre

Le mode palier arrondit le compteur vers le bas selon le pas que vous définissez, pour un effet « Dans + de 20 paniers » qui reste crédible et évolue par tranches. Le mode exact affiche le chiffre réel pour les boutiques qui préfèrent la transparence totale, avec une variante au singulier gérée automatiquement. Les trois formulations vivent dans les snippets Shopware et se modifient par langue depuis l'administration, sans toucher au code, avec un emplacement dynamique pour le nombre.

§ 04

Un comptage honnête, paramétrable

La fenêtre temporelle limite le comptage aux paniers mis à jour récemment, ce qui évite d'accumuler des paniers fantômes vieux de plusieurs mois. L'option paniers actifs uniquement exclut les paniers déjà transformés en commande, détectés via CartConvertedEvent. Le scoping par canal de vente empêche qu'un pic sur votre boutique allemande gonfle le compteur de la boutique française. Chacune de ces options se surcharge canal par canal depuis la configuration du plugin.

§ 05

Compatibilité 6.5 à 6.7 sans compromis

Le template n'étend que le bloc externe du buy-widget et rappelle son parent, ce qui le rend insensible aux renommages de blocs internes intervenus entre 6.5 et 6.7 et compatible avec les thèmes qui personnalisent le bloc d'achat. Le nettoyage de rétention fonctionne sans tâche planifiée ni file de messages, parce que la signature du gestionnaire de tâches a changé entre 6.5 et 6.6 : il s'exécute au maximum une fois par heure, ou à la demande via la commande CLI. La struct d'affichage est attachée à la fois à l'entité produit et à la page, ce qui couvre le rendu par élément Buy box des Shopping Experiences comme la vue rapide.

§ 06

Standards DataFirefly

Plugin développé sans dépendance Composer, rendu côté serveur, aucune bibliothèque JavaScript externe, aucun appel réseau sortant. Une seule table créée, supprimée à la désinstallation lorsque vous ne conservez pas les données. Aucune donnée personnelle enregistrée : l'index ne contient que le jeton de panier pseudonyme et la référence produit, avec une rétention paramétrable. Code source PHP et Twig non obfusqué, licence perpétuelle, 12 mois de mises à jour incluses.