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.
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.
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.
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.
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.
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.
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.
Il n’y a pas encore d’avis.