# Box Builder (Mix & Match): volledige gids

> Presentatie De module Box Builder (Mix & Match) (dfboxbuilder) voegt een pagina toe waar uw klanten hun eigen geschenkbox samenstellen uit een productselectie die u hebt bepaald. Ze kiezen artikelen…

- Pagina: <https://www.datafirefly.com/nl/documentation/dfboxbuilder/>
- Taal: nl
- Bijgewerkt op: 2026-08-26
- Andere talen: [fr](https://www.datafirefly.com/documentation/dfboxbuilder/index.md), [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), [pt](https://www.datafirefly.com/pt/documentation/dfboxbuilder/index.md)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

## Presentatie

De module **Box Builder (Mix & Match)** (`dfboxbuilder`) voegt een pagina toe waar uw klanten **hun eigen geschenkbox samenstellen** uit een productselectie die u hebt bepaald. Ze kiezen artikelen uit een raster, volgen een **voortgangsbalk**, zien de **prijs live meelopen** en leggen de volledige box met één klik in de winkelwagen. Ideaal voor gourmetboxen, beautyboxen, gevulde manden, packs "3 producten gekocht", ontdekkingsabonnementen enzovoort.

U maakt zoveel boxen aan als u wilt, elk met eigen producten, eigen regels (minimum en maximum aantal artikelen) en een eigen **prijsmodel**. Eén catalogus kan verschillende, heel uiteenlopende boxen voeden.

## Compatibiliteit

- PrestaShop 1.7.6 tot 8.x en 9.x
- PHP 7.4 tot 8.x
- Eén winkel en multishop
- 5 talen: FR, EN, ES, DE, IT (100 % vertaald, zonder terugval)
- Classic-thema en aangepaste thema's (samensteller in native JavaScript, zonder afhankelijkheid van jQuery)
- Geen enkele afhankelijkheid (geen Composer, geen framework)

## Installatie

1. Open in de backoffice **Modules → Modulebeheer**.
2. Klik op **Een module installeren** en selecteer het bestand `dfboxbuilder.zip`.
3. Open na de installatie het tabblad **Box Builder** in het menu om uw eerste box aan te maken.

Bij de installatie maakt de module haar tabellen aan, registreert ze haar hooks (`displayHeader`, `actionFrontControllerSetMedia`, `displayHome` en `actionValidateOrder`) en voegt ze een beheertabblad **Box Builder** toe. Bij het eerste opslaan van een box wordt automatisch een **verborgen containerproduct** aangemaakt: dat draagt de boxregel in de winkelwagen en is niet zichtbaar in de catalogus.

## Een box instellen

Het bewerkingsformulier van een box is opgedeeld in vijf tabbladen.

### Tabblad Algemeen

- **Naam, beschrijving, knoplabel**: vertaalbaar in de 5 talen.
- **Min. en max. artikelen**: de grenzen van de samenstelling. Het maximum bepaalt het doel van de voortgangsbalk.
- **Duplicaten toestaan** en **max. eenheden per artikel**: bepalen of hetzelfde product meermaals mag worden toegevoegd, met een plafond per product.
- **Producten zonder voorraad verbergen**: haalt niet-beschikbare producten uit het raster, rekening houdend met de voorraadinstelling van elk product.
- **"Verras me" inschakelen** en **Opslaan en delen inschakelen**: tonen of verbergen deze acties aan klantzijde.
- **Actief**: publiceert de box al dan niet.

### Tabblad Prijzen

Er zijn vier prijsmodellen beschikbaar:

- **Vaste prijs**: één prijs voor de box, ongeacht de inhoud.
- **Volumestaffels**: de prijs verandert met het aantal artikelen (bijvoorbeeld 3 artikelen = 25 €, 6 artikelen = 45 €). U bepaalt zoveel staffels "vanaf X artikelen" als nodig.
- **Som van de producten met korting**: de prijs is de som van de producten in de box, verminderd met een kortingspercentage.
- **Prijs per plaats**: elke plaats (slot) draagt een vaste eenheidsprijs bij; het totaal hangt af van de ingevulde plaatsen.

Dit tabblad stuurt ook de **gamificatie** aan: **een cadeau bij een volledige box** (u kiest het product dat gratis in de winkelwagen komt) en **gratis verzending bij voltooiing**.

De basis- of vaste prijs vult u **exclusief btw** in. De module past daarna de btw van het containerproduct toe en toont de klant de prijs inclusief btw.

### Tabblad Samenstelling (bronnen en plaatsen)

Hier bepaalt u de **in aanmerking komende producten** die in het raster van de samensteller verschijnen, via twee soorten bronnen:

- **Producten**: één voor één toegevoegd via een **zoekveld met automatische aanvulling**.
- **Categorieën**: alle actieve producten van de categorie komen in aanmerking.

De optie **Plaatsen per categorie gebruiken** activeert een samenstelling in stappen. Elke plaats heeft een eigen naam, eigen grenzen **min. en max.**, een eventuele **plaatsprijs** en **eigen bronnen**. Zo kunt u bijvoorbeeld "2 gerechten + 3 bijgerechten + 1 dessert" verplicht stellen. Zonder plaatsen kiest de klant vrij uit de globale lijst.

### Tabblad Sjablonen (vooraf samengestelde boxen)

U biedt **kant-en-klare boxen** aan die de klant met één klik kiest en daarna naar wens aanpast. Elk sjabloon heeft een naam, een beschrijving en een productlijst (toegevoegd via zoeken met automatische aanvulling). Ideaal om een twijfelende klant te begeleiden of een bestsellerassortiment uit te lichten.

### Tabblad Beperkingen

Hier legt u **paren van onverenigbare producten** vast die niet samen in dezelfde box mogen zitten. De samensteller verhindert dan dat ze samen worden gekozen en de servervalidatie weigert de combinatie.

## Gebruik aan klantzijde

### De interactieve samensteller

De samenstellingspagina toont het productraster (afbeelding, naam, en indien van toepassing een melding "lage voorraad") en een **meelopend overzichtspaneel**: voortgangsbalk, lijst met gekozen artikelen, **live berekende prijs** (geoptimaliseerde AJAX-oproep) en validatieberichten. De knop om in de winkelwagen te leggen wordt pas actief wanneer de samenstelling aan alle regels voldoet.

### Plaatsen per categorie

Wanneer de plaatsen actief zijn, leiden **tabbladen** de klant van de ene plaats naar de andere, elk met een eigen teller (bijvoorbeeld "Gerechten 2/3") en een eigen productselectie.

### Verras me

De knop **Verras me** vult de box automatisch met in aanmerking komende producten, met respect voor het maximum aantal artikelen, de grenzen van elke plaats en de onverenigbaarheden. De klant kan de voorgestelde selectie daarna nog aanpassen.

### Opslaan en delen

De klant kan **zijn samenstelling opslaan** en krijgt daarbij een **deellink**. Wie die link opent, vindt de box vooraf ingevuld terug, klaar om aan te passen en te bestellen.

### In de winkelwagen leggen en bestellen

Bij het toevoegen aan de winkelwagen wordt de **samenstelling als personalisatie** van de regel opgeslagen (en blijft ze zichtbaar in de winkelwagen en later op de bestelling), en wordt de **berekende boxprijs** toegepast. Staat de gamificatie aan, dan wordt het **cadeau** gratis toegevoegd. Bij de validatie van de bestelling **verlaagt de module de voorraad van elk samenstellend product** en registreert ze de verkoop voor de statistieken.

## Statistieken (backoffice)

Het tabblad **Statistieken** bundelt de bestelde boxen: omzet, aantal bestellingen, gemiddeld aantal artikelen per box, prestaties **per box** en de **populairste combinaties**. Zo herkent u uw winnende assortimenten en verfijnt u uw bronnen.

## Weergave op de homepage (optioneel)

Een optioneel homepageblok toont uw actieve boxen met een rechtstreekse link naar hun samensteller. De pagina van een box is ook rechtstreeks bereikbaar via haar adres: `index.php?fc=module&module=dfboxbuilder&controller=builder&id_dfbox=ID`. U kunt er een link naar leggen vanuit uw menu, een CMS-pagina of een banner.

## Technische werking

Voor elke box draagt een **verborgen containerproduct** (zichtbaarheid "nergens", niet doorzoekbaar) de regel in de winkelwagen. De boxprijs wordt toegepast via een **specifieke prijs die tot de winkelwagen** van de klant beperkt blijft, zodat de catalogusprijs van de container nooit wordt getoond. De samenstelling wordt als personalisatie bewaard en de voorraad van de onderdelen wordt bij de validatie van de bestelling verlaagd.

Bij het model **Som met korting** geldt: legt een klant twee exemplaren van **dezelfde** box met verschillend geprijsde samenstellingen in de winkelwagen, dan wordt de laatst berekende prijs op beide regels toegepast (de specifieke prijs hangt aan het containerproduct). Bij een **vaste** prijs, bij **staffels** of **per plaats** met een gelijk aantal artikelen is er geen enkel effect.

Het verwijderen van een box verwijdert haar verborgen containerproduct niet automatisch (v1). Verwijdert u een testbox, dan kunt u het bijbehorende containerproduct handmatig uit de catalogus halen.

## FAQ en probleemoplossing

### De samensteller verschijnt niet of de knoppen reageren niet

Leeg de cache van PrestaShop (Geavanceerde instellingen → Prestaties) en schakel tijdens uw tests het combineren en comprimeren van bestanden (CCC) uit. Controleer of de box **actief** is en minstens één productbron heeft.

### Het raster is leeg

Controleer of de bronnen (producten of categorieën) **actieve** producten voor de huidige winkel bevatten. Staat "Producten zonder voorraad verbergen" aan, dan verschijnen niet-beschikbare producten niet.

### De getoonde prijs komt niet overeen met mijn verwachting

Controleer het gekozen prijsmodel: de vaste prijs negeert de inhoud, de staffels hangen af van het aantal artikelen, de som met korting hangt af van de productprijzen, en de prijs per plaats hangt af van de ingevulde plaatsen. De basisprijs vult u exclusief btw in.

### De voorraad van de onderdelen wordt niet verlaagd

De verlaging gebeurt bij de **validatie van de bestelling** (hook `actionValidateOrder`), niet bij het toevoegen aan de winkelwagen. Controleer of de bestelling wel degelijk een geldige status bereikt.

### Kan ik een precieze structuur per categorie verplicht stellen?

Ja: activeer de **plaatsen** en bepaal voor elke plaats een minimum, een maximum en de bronnen. Zo krijgt u een begeleide samenstelling van het type "2 + 3 + 1".

### Is de module compatibel met PrestaShop 9?

Ja. De module werkt op PrestaShop 8 en 9, in multishop en meertalig (FR, EN, ES, DE, IT).
