Module AwChromaPick — Sélecteur de teinte PrestaShop
Contexte
Un fabricant de peinture propose ses produits en plusieurs contenances et bases de teinte, avec un nuancier de plus de 1 500 couleurs. L'enjeu : comment permettre au client de choisir sa teinte en ligne sans exploser la base de données PrestaShop ?
La voie classique, les déclinaisons, aurait conduit à un résultat ingérable. Pour un seul produit teintable :
3 contenances × 3 bases × 1 500 nuances = 13 500 déclinaisons
Avec environ 5 produits teintables au catalogue, c'est potentiellement 67 500 déclinaisons à gérer. Les temps de chargement deviennent très long, la gestion du catalogue impossible, et PrestaShop montre rapidement ses limites.
Solution : le système de Customization
Le système de Customization natif de PrestaShop est conçu pour attacher des informations libres à un produit au moment de l'ajout au panier, texte, fichier, ou dans notre cas un code couleur. En s'appuyant dessus :
- Le catalogue reste à 3 × 3 déclinaisons par produit (contenance + base de teinte)
- La teinte est capturée comme customization au moment du choix
- Chaque ligne de panier reste distincte même avec la même déclinaison : on peut supprimer une nuance précise sans affecter les autres, ce qui serait impossible si on avait utilisé les caractéristiques ou simplement greffé l'info au panier.
Réalisations
- Interface de sélection front-office : recherche et visualisation dans un référentiel de +1 500 teintes, déclenchée via le hook
displayChromapickButtonsur la page produit - Intégration Customization : déclaration programmatique du produit comme customizable, puis ajout de la customization via formulaire, l'ordre des opérations est critique et documenté
- Affichage cohérent sur tout le tunnel : teinte visible dans le panier (
displayCartItemExtra), dans les emails de confirmation (displayEmailProductExtra) et dans le back-office commande (displayAdminOrderMain) - Architecture PSR-4 / Symfony : Controllers AJAX, Services métier (
ColorService,CustomizationService), Repositories dédiés, séparation claire des responsabilités - Build de release automatisé : script
build-zip.shgénérant une archive propre avec dépendances Composer en mode production

Difficultés techniques
Le système de Customization de PrestaShop est puissant mais peu documenté dans ses subtilités. Il faut impérativement déclarer le produit comme customizable par voie programmatique (et non via le back-office) avant toute interaction front, sous peine de silences inexpliqués ou de comportements incohérents dans le tunnel de commande.
Résultats
- Catalogue maintenu à 9 déclinaisons par produit teintable, contre 13 500 par produit sans ce système
- Expérience de choix de couleur fluide côté client, sans dégradation des performances
- Teinte traçable à chaque étape : panier, email, back-office