# Box Builder (Mix & Match) — Guide complet

> Présentation Le module Box Builder (Mix & Match) (dfboxbuilder) ajoute une page où vos clients composent leur propre coffret à partir d'une sélection de produits que vous avez choisie. Ils…

- Page: <https://www.datafirefly.com/documentation/dfboxbuilder/>
- Langue: fr
- Mis à jour le: 2026-06-25
- Autres langues: [en](https://www.datafirefly.com/en/documentation/dfboxbuilder/index.md), [es](https://www.datafirefly.com/es/documentation/dfboxbuilder/index.md), [de](https://www.datafirefly.com/de/documentation/dfboxbuilder/index.md), [it](https://www.datafirefly.com/it/documentation/dfboxbuilder/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfboxbuilder/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfboxbuilder/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfboxbuilder/index.md)
- Index: <https://www.datafirefly.com/documentation/llms.txt>

## Présentation

Le module **Box Builder (Mix & Match)** (`dfboxbuilder`) ajoute une page où vos clients **composent leur propre coffret** à partir d'une sélection de produits que vous avez choisie. Ils piochent les articles dans une grille, suivent une **barre de progression**, voient le **prix se mettre à jour en direct**, puis ajoutent le coffret complet au panier en un clic. Idéal pour les coffrets gourmands, box beauté, paniers garnis, packs « 3 produits achetés », abonnements découverte, etc.

Vous créez autant de coffrets que vous voulez, chacun avec ses propres produits, ses règles (minimum / maximum d'articles) et son **modèle de tarification**. Un même catalogue peut alimenter plusieurs coffrets très différents.

## Compatibilité

- PrestaShop 1.7.6 à 8.x et 9.x
- PHP 7.4 à 8.x
- Mono-boutique et multi-boutique
- 5 langues : FR, EN, ES, DE, IT (100 % traduit, sans repli)
- Thème Classic et thèmes personnalisés (compositeur en JavaScript natif, sans dépendance jQuery)
- Aucune dépendance (ni Composer ni framework)

## Installation

1. Dans le back-office, ouvrez **Modules > Gestionnaire de modules**.
2. Cliquez sur **Installer un module** puis sélectionnez le fichier `dfboxbuilder.zip`.
3. Une fois installé, ouvrez l'onglet **Box Builder** ajouté au menu pour créer votre premier coffret.

À l'installation, le module crée ses tables, enregistre ses hooks (`displayHeader`, `actionFrontControllerSetMedia`, `displayHome` et `actionValidateOrder`) et ajoute un onglet d'administration **Box Builder**. À la première sauvegarde d'un coffret, un **produit conteneur caché** est généré automatiquement : il porte la ligne du coffret dans le panier et n'est pas visible dans le catalogue.

## Configuration d'un coffret

Le formulaire d'édition d'un coffret est organisé en cinq onglets.

### Onglet Général

- **Nom, description, libellé du bouton** : traduisibles dans les 5 langues.
- **Articles min / max** : bornes de la composition. Le maximum pilote la cible de la barre de progression.
- **Autoriser les doublons** et **unités max par article** : permettent (ou non) d'ajouter plusieurs fois le même produit, avec un plafond par produit.
- **Masquer les produits en rupture** : retire de la grille les produits indisponibles (en tenant compte du réglage de rupture de chaque produit).
- **Activer « Surprenez-moi »** et **Activer l'enregistrement & partage** : affichent ou masquent ces actions côté client.
- **Actif** : publie ou non le coffret.

### Onglet Tarification

Quatre modèles de prix sont disponibles :

- **Prix fixe** : un prix unique pour le coffret, quel que soit son contenu.
- **Paliers de volume** : le prix change selon le nombre d'articles (ex. 3 articles = 25 €, 6 articles = 45 €). Vous définissez autant de paliers « à partir de X articles » que nécessaire.
- **Somme des produits avec remise** : le prix est la somme des produits composant le coffret, moins un pourcentage de remise.
- **Prix par emplacement** : chaque emplacement (slot) contribue un prix unitaire fixe ; le total dépend des emplacements remplis.

Cet onglet pilote aussi la **gamification** : **cadeau offert quand le coffret est complet** (choix du produit offert, ajouté gratuitement au panier) et **livraison offerte à la complétion**.

Le prix de base / fixe se saisit **hors taxe**. Le module applique ensuite la taxe du produit conteneur et affiche le prix toutes taxes comprises au client.

### Onglet Composition (sources & emplacements)

Vous définissez les **produits éligibles** qui apparaîtront dans la grille du compositeur, via deux types de sources :

- **Produits** : ajoutés un par un grâce à une **recherche avec autocomplétion**.
- **Catégories** : tous les produits actifs de la catégorie deviennent éligibles.

L'option **Utiliser des emplacements par catégorie** active une composition « par étapes ». Chaque emplacement possède son propre nom, ses bornes **min / max**, son éventuel **prix d'emplacement** et ses **propres sources**. Vous pouvez ainsi exiger par exemple « 2 plats + 3 accompagnements + 1 dessert ». Sans emplacements, le client puise librement dans la liste globale.

### Onglet Modèles (coffrets pré-composés)

Vous proposez des **coffrets « prêts à l'emploi »** que le client choisit d'un clic, puis ajuste à sa guise. Chaque modèle a un nom, une description et une liste de produits (ajoutés par recherche avec autocomplétion). Idéal pour guider le client indécis ou mettre en avant un assortiment best-seller.

### Onglet Contraintes

Vous déclarez des **paires de produits incompatibles** qui ne peuvent pas figurer ensemble dans le même coffret. Le compositeur empêche alors leur sélection conjointe et la validation serveur la refuse.

## Utilisation côté client

### Le compositeur interactif

La page de composition affiche la grille des produits (image, nom, alerte « stock faible » le cas échéant) et un **panneau récapitulatif collant** : barre de progression, liste des articles choisis, **prix calculé en direct** (appel AJAX optimisé) et messages de validation. Le bouton d'ajout au panier ne s'active que lorsque la composition respecte toutes les règles.

### Emplacements catégoriels

Quand les emplacements sont activés, des **onglets** guident le client d'un emplacement à l'autre, chacun affichant son compteur (par exemple « Plats 2/3 ») et sa propre sélection de produits.

### Surprenez-moi

Le bouton **Surprenez-moi** remplit automatiquement le coffret avec des produits éligibles, en respectant le maximum d'articles, les bornes de chaque emplacement et les incompatibilités. Le client peut ensuite ajuster la sélection proposée.

### Enregistrer & partager

Le client peut **enregistrer sa composition** et obtenir un **lien de partage**. Toute personne ouvrant ce lien retrouve le coffret pré-rempli, prêt à être ajusté et commandé.

### Ajout au panier et commande

À l'ajout au panier, la **composition est enregistrée comme personnalisation** de la ligne (et reste visible dans le panier puis sur la commande), et le **prix calculé du coffret** est appliqué. Si la gamification est activée, le **cadeau** est ajouté gratuitement. À la validation de la commande, le module **décrémente le stock de chaque produit composant** le coffret et enregistre la vente pour les statistiques.

## Statistiques (back-office)

L'onglet **Statistiques** agrège les coffrets commandés : chiffre d'affaires, nombre de commandes, nombre moyen d'articles par coffret, performance **par coffret** et **combinaisons les plus populaires**. De quoi identifier vos assortiments gagnants et affiner vos sources.

## Affichage en page d'accueil (optionnel)

Un bloc d'accueil facultatif liste vos coffrets actifs avec un lien direct vers leur compositeur. La page d'un coffret est également accessible directement via son adresse : `index.php?fc=module&module=dfboxbuilder&controller=builder&id_dfbox=ID`. Vous pouvez créer un lien depuis votre menu, une page CMS ou une bannière.

## Fonctionnement technique

Pour chaque coffret, un **produit conteneur caché** (visibilité « nulle part », non navigable) porte la ligne dans le panier. Le prix du coffret est appliqué via un **prix spécifique limité au panier** du client, de sorte que le prix catalogue du conteneur n'est jamais montré. La composition est stockée en personnalisation, et le stock des composants est décrémenté à la validation de la commande.

En modèle **Somme avec remise**, si un client ajoute deux coffrets du **même** coffret avec des compositions de prix différents, le dernier prix calculé s'applique aux deux lignes (le prix spécifique est porté par le produit conteneur). En prix **fixe**, **par paliers** ou **par emplacement** à nombre d'articles égal, il n'y a aucun impact.

La suppression d'un coffret ne supprime pas automatiquement son produit conteneur caché (v1). Si vous supprimez un coffret de test, vous pouvez retirer manuellement le produit conteneur associé depuis le catalogue.

## FAQ et dépannage

### Le compositeur ne s'affiche pas ou les boutons ne réagissent pas

Videz le cache de PrestaShop (Paramètres avancés > Performances) et, pendant vos tests, désactivez la combinaison/compression des fichiers (CCC). Assurez-vous que le coffret est **actif** et qu'il possède au moins une source de produits.

### La grille est vide

Vérifiez que les sources (produits ou catégories) contiennent des produits **actifs** pour la boutique courante. Si « Masquer les produits en rupture » est activé, les produits indisponibles n'apparaissent pas.

### Le prix affiché ne correspond pas à mes attentes

Contrôlez le modèle de tarification choisi : le prix fixe ignore le contenu, les paliers dépendent du nombre d'articles, la somme avec remise dépend du prix des produits, et le prix par emplacement dépend des emplacements remplis. Le prix de base se saisit hors taxe.

### Le stock des composants n'est pas décrémenté

Le décrément a lieu à la **validation de la commande** (hook `actionValidateOrder`), pas à l'ajout au panier. Vérifiez que la commande atteint bien un état valide.

### Puis-je exiger une structure précise (par catégories) ?

Oui : activez les **emplacements** et définissez pour chacun un minimum / maximum et ses sources. Vous obtenez une composition guidée du type « 2 + 3 + 1 ».

### Est-ce compatible PrestaShop 9 ?

Oui. Le module est compatible PrestaShop 8 et 9, en multi-boutique et multilingue (FR, EN, ES, DE, IT).
