# DataFirefly Maattabel: documentatie

> Overzicht DataFirefly Maattabel voegt aan uw PrestaShop-webshop een volledig systeem toe van maattabellen die u per categorie, fabrikant of product kunt instellen, met omrekentabellen EU/US/UK/FR/JP, een interactieve calculator die een…

- Pagina: <https://www.datafirefly.com/nl/documentation/guide-des-tailles-prestashop/>
- Taal: nl
- Bijgewerkt op: 2026-09-01
- Andere talen: [fr](https://www.datafirefly.com/documentation/guide-des-tailles-prestashop/index.md), [en](https://www.datafirefly.com/en/documentation/guide-des-tailles-prestashop/index.md), [es](https://www.datafirefly.com/es/documentation/guide-des-tailles-prestashop/index.md), [de](https://www.datafirefly.com/de/documentation/guide-des-tailles-prestashop/index.md), [pl](https://www.datafirefly.com/pl/documentation/guide-des-tailles-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/guide-des-tailles-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/guide-des-tailles-prestashop/index.md)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

## Overzicht

**DataFirefly Maattabel** voegt aan uw PrestaShop-webshop een volledig systeem toe van maattabellen die u per categorie, fabrikant of product kunt instellen, met omrekentabellen EU/US/UK/FR/JP, een interactieve calculator die een maat aanbeveelt, een indexeerbare SEO-pagina per categorie, en een feedbackwidget na aankoop met een geaggregeerde afwijkingsscore.

De module richt zich op webshops in kleding en schoenen, waar meer dan 20 % van de retouren met de maat te maken heeft. Hij zet die wrijving om in een geruststellend aankooptraject: de klant ziet automatisch de juiste tabel, kan zijn lichaamsmaten invoeren voor een persoonlijke aanbeveling, en u krijgt gekwalificeerde feedback waarmee u slecht gegradeerde producten opspoort.

### Compatibiliteit

- PrestaShop 8.0.x, 8.1.x, 8.2.x, 9.0.x
- PHP 8.1, 8.2, 8.3
- Multistore (alle toewijzingen zijn gescopeerd op `id_shop`)
- Polylang FR/EN/ES/DE/IT/NL/PL meteen bruikbaar
- Thema's classic en hummingbird en maatwerkthema's (7 verschillende posities beschikbaar)

## Installatie

1. Upload het ZIP-bestand `dfsizeguide.zip` via **Modules → Modulebeheer → Een module uploaden**.
2. Klik op **Installeren**. De 13 vooraf ingestelde tabellen (textiel dames en heren boven en onder, jurken, beha's, schoenen dames, heren en kinderen, kinderkleding, handschoenen, hoeden, ringen, riemen) worden automatisch in 7 talen aangemaakt, en er wordt een standaardtoewijzing op de tabel textiel dames gemaakt.
3. Zodra de installatie klaar is, verschijnt het tabblad "Maattabel" op al uw productpagina's, zonder verdere configuratie.
4. Ga naar **Modules → DataFirefly Maattabel → Configureren** om de posities, de standaardeenheid en de actieve functies bij te stellen.

## Kernbegrippen

### De tabelkeuze op 5 niveaus

Wanneer een klant op een productpagina komt, zoekt de module welke tabel hij moet tonen via een strikte, aflopende prioriteit:

1. **Product**: hebt u uitdrukkelijk een tabel aan dat specifieke product toegewezen, dan wint die.
2. **Categorie + Fabrikant**: zo niet, de tabel die is toegewezen aan het paar van een categorie van het product en zijn merk. Omdat dit niveau specifieker is dan elke dimensie afzonderlijk, gaat het voor op de twee volgende. De categorieën worden doorlopen van de diepste naar de meest algemene.
3. **Fabrikant**: zo niet, de tabel die aan het merk van het product is toegewezen.
4. **Categorie**: zo niet, de eerste categorie van het product met een tabel, te beginnen bij de diepste (de specifiekste wint).
5. **Standaard**: zo niet, de tabel die als globale terugval is aangeduid.

Met die hiërarchie onderhoudt u één tabel per merk of per afdeling zonder de afzonderlijke productpagina's aan te raken, terwijl u toch chirurgisch kunt afwijken.

### Kolomtypes

Elke tabel bestaat uit kolommen met een type:

- **Kolom "maat"**: één tekstwaarde per rij (S, M, 38, XL). Wordt gebruikt voor de internationale omrekening (EU, US, UK, FR, JP).
- **Kolom "meting"**: een numeriek bereik min/max per rij (bijvoorbeeld borstomtrek 88–92 cm). Wordt gebruikt om aan te geven welke lichaamsmaten bij elke maat horen.

De interactieve calculator steunt uitsluitend op de kolommen van het type "meting" om de aanbevolen maat te bepalen.

## Configuratie

### Posities op de productpagina

De module biedt 7 posities die u afzonderlijk kunt activeren in **Configureren → Posities productpagina**:

- **Producttabblad** (standaard aan, aanbevolen): hook `displayProductExtraContent`, voegt een net tabblad toe naast "Beschrijving" en "Details". Werkt op vrijwel alle thema's vanaf PS 1.7.
- **Onder de prijs**: hook `displayProductPriceBlock` (type `after_price`), rendert een compacte link net onder de prijs.
- **Bij de knop "Toevoegen aan winkelwagen"**: hook `displayProductActions`, rendert een compacte knop.
- **Onder de productinfo**: hook `displayProductAdditionalInfo`, rendert een prominente knop.
- **In het vertrouwensblok**: hook `displayReassurance`, sluit visueel aan bij uw andere argumenten (levering, retour).
- **Na de productafbeeldingen**: hook `displayAfterProductThumbs`, rendert een compacte knop net onder de galerij.
- **Onderaan de productpagina**: hook `displayFooterProduct`, rendert een prominente knop in de voettekst.

U kunt meerdere posities tegelijk activeren: het modaal van de maattabel wordt maar één keer in de DOM geplaatst (geen dubbels), en de extra knoppen openen datzelfde modaal.

Het producttabblad is de enige positie die de tabel _inline_ rendert. De 6 andere posities tonen een knop die het modaal opent.

### Algemene instellingen

- **Standaardeenheid**: cm of inches. De klant kan ter plekke omschakelen en die voorkeur wordt in de berekening meegenomen.
- **Interactieve calculator**: activeert de invoer van de lichaamsmaten en de maataanbeveling (standaard aan).
- **Klantfeedback na aankoop**: activeert de widget die de klant vraagt of de maat paste (standaard aan).
- **Gestructureerde data JSON-LD**: activeert de injectie van de Schema.org-opmaak voor een betere vindbaarheid (standaard aan).
- **Accentkleur**: kleur van de knoppen, de actieve eenheid en de gemarkeerde rij. Stem ze af op uw thema; de hovertint wordt automatisch berekend.
- **Slug van de SEO-pagina**: voorvoegsel van de URL van de eigen maattabelpagina's (standaard `size-guide`, te vertalen naar `maattabel` als u een Nederlandstalige URL wilt).

## Een tabel aanmaken en bewerken

Menu **Modules → Maattabellen → Tabellen**. Klik op "Toevoegen" om een nieuwe tabel aan te maken, of op het potloodpictogram om een bestaande tabel te bewerken.

### Velden van de tabel

- **Interne code**: unieke technische identificatie (bijvoorbeeld `dames-jurken-2026`). Wordt gebruikt in de SEO-URL's en de logs.
- **Type**: textiel boven, textiel onder, jurk, schoenen of maatwerk.
- **Naam**: meertalig label dat de klanten zien (titel van het tabblad, titel van het modaal, h1 van de SEO-pagina).
- **Inleiding (HTML)**: meertalige inhoud die boven de tabel verschijnt.
- **Meetinstructies (HTML)**: een inklapbaar kader dat uitlegt hoe elke maat wordt genomen.
- **Voettekst (HTML)**: meertalige inhoud onder de tabel (waarschuwing, link naar het retourbeleid enzovoort).
- **Meta title / Meta description**: voor de eigen SEO-pagina.
- **Actief**: aan/uit-schakelaar. Een inactieve tabel wordt nooit getoond, ook niet wanneer ze is toegewezen.

### De tabel bewerken

Onder het formulier van de tabel bouwt u met een visuele editor de tabel op:

1. Klik op **Kolom maat** om een tekstkolom toe te voegen. Vul de code in (bijvoorbeeld `eu` of `intl`) en het meertalige label.
2. Klik op **Kolom meting** om een numerieke kolom toe te voegen. Vul de code in (bijvoorbeeld `chest_cm`) en de eenheid (cm, inches, mm).
3. Klik op **Rij** om een rij toe te voegen. Vul de cellen in: gewone tekst voor de kolommen "maat", waarden min/max voor de kolommen "meting".
4. Klik op **Opslaan**. Het bewaren gebeurt in een atomaire SQL-transactie: ofwel wordt alles opgeslagen, ofwel niets.

### Een tabel dupliceren

De knop **Dupliceren** in de lijst kopieert de tabel volledig: haar vertalingen, haar kolommen met hun labels, haar rijen en alle cellen. Handig om een variant af te leiden van een bestaande tabel in plaats van met een lege te beginnen.

Twee dingen om te weten. Toewijzingen worden niet gekopieerd: ze zijn uniek per doel, dus ze dupliceren zou de doelen van de oorspronkelijke tabel afnemen. En de kopie wordt **inactief** aangemaakt, zodat ze niet getoond kan worden voordat u ze hebt nagekeken. De interne code wordt automatisch afgeleid (`dames-boven` wordt `dames-boven-copy`) omdat die uniek moet blijven.

## Een tabel toewijzen

Menu **Modules → Maattabellen → Toewijzingen**.

1. Kies in de lijst de tabel die u wilt toewijzen.
2. Kies het type doel: Standaard (globale terugval), Categorie, Fabrikant, Categorie + Fabrikant of Product.
3. Afhankelijk van het type verschijnt een tweede veld om de categorie te kiezen (in een ingesprongen boom), het merk (keuzelijst) of het product-ID (rechtstreekse invoer).
4. Klik op **Toevoegen / Bijwerken**. Bestaat er al een toewijzing voor dat doel, dan wordt ze overschreven (upsert).

Alle toewijzingen zijn in multistore per winkel gescopeerd. U kunt dus voor dezelfde categorie een andere tabel tonen op twee winkels binnen dezelfde groep.

### Een toewijzing bewerken

Het potlood aan het einde van de rij laadt de toewijzing terug in het formulier, met haar tabel, haar doeltype en haar doel. U kunt dan de tabel wijzigen, maar ook de toewijzing naar een ander doel verplaatsen of een enkelvoudige toewijzing omzetten in een combinatie categorie + fabrikant. De bewerkte rij wordt in de lijst gemarkeerd, en met een knop Annuleren stapt u eruit zonder iets te wijzigen.

Een toewijzing verplaatsen naar een doel dat al door een andere bezet is, wordt geweigerd met een duidelijke melding, want een doel kan maar één tabel dragen.

## De maatcalculator

De calculator verschijnt onder de tabel, alleen wanneer de tabel minstens één kolom van het type "meting" heeft.

### Scoringsalgoritme

De klant voert zijn maten in de velden in (één veld per kolom "meting"). Bij het verzenden:

1. De waarden worden naar centimeters genormaliseerd (met automatische omrekening wanneer de gebruiker inches heeft gekozen: ×2,54).
2. Voor elke rij van de tabel berekent de module een score: **+2 punten** wanneer de maat van de klant precies binnen het bereik min/max van de cel valt, **+1 punt** wanneer ze dichtbij ligt (op ±5 % van het bereik), en **0 punten** in de overige gevallen.
3. De rij met de hoogste score wint.
4. Bij een gelijke stand wordt de rij gekozen waarvan de bereiken het best rond de waarden van de klant liggen.
5. De aanbevolen maat wordt bij voorkeur uit de kolom `eu` gehaald, daarna uit `fr`, `intl`, `uk`, `us` en `jp`.

### Terugkoppeling aan de gebruiker

De calculator toont de aanbevolen maat met een betrouwbaarheidsscore in procenten, de top 3 van mogelijke kandidaten elk met hun score, een markering van de aanbevolen rij in de tabel erboven, en de lijst met maten die met geen enkele rij overeenkomen (met een waarschuwing).

## Klantfeedback na aankoop

Onderaan de productpagina verschijnt een widget "Paste de maat?" met 5 keuzes: te klein, wat klein, perfect, wat groot, te groot. Hij wordt alleen getoond wanneer aan deze voorwaarden is voldaan:

- De klant is ingelogd (actieve sessie).
- De klant heeft dat product daadwerkelijk gekocht (join met `orders` en `order_detail`, met een geldige status).
- De klant heeft over dat product nog geen mening gegeven.

De toegangscontrole gebeurt volledig aan de serverzijde, zonder risico op omzeiling.

### Feedbackdashboard

Menu **Modules → Maattabellen → Klantfeedback**. Boven de tabel toont een samenvatting het aantal antwoorden per categorie over de 5 niveaus. Daaronder staat de volledige lijst met feedback per product, met het klant-ID, de gekochte maat en de datum.

### Afwijkingsscore

Voor elk product met minstens 3 reacties wordt een afwijkingsscore berekend:

```
score = ((te_groot × 2 + wat_groot) − (te_klein × 2 + wat_klein)) / totaal
```

Een **positieve** score betekent dat het product stelselmatig groot uitvalt (een maat naar beneden bijstellen). Een **negatieve** score betekent dat het klein uitvalt (een maat naar boven bijstellen). Een score dicht bij nul wijst op een goede gradatie.

## Eigen SEO-pagina

De module biedt een publieke route per categorie: `/{slug}/{category-link-rewrite}`, waarbij `{slug}` het ingestelde voorvoegsel is (standaard `size-guide`).

Voorbeeld: `https://uwwinkel.com/size-guide/damesjurken`

De pagina bevat een kruimelpad, de h1-titel van de tabel, de inleiding, de meetinstructies en de volledige tabel, de calculator (indien actief), de HTML-voettekst van de tabel, en JSON-LD-opmaak `WebPage` volgens Schema.org die Google helpt begrijpen dat de pagina een praktische gids is.

De meta title en de meta description komen uit de SEO-velden van de tabel. Stel ze goed in om longtail-zoekopdrachten op te vangen, van het type "maattabel damesjurken".

## Meertaligheid en multistore

De module is meertalig op het niveau van de tabellen (naam, inleiding, instructies, voettekst, meta), op het niveau van de kolomlabels, en op het niveau van de Polylang-labels voor de URL's.

In multistore is elke toewijzing (tabel naar doel) gescopeerd op `id_shop`. U kunt dus tabel A tonen voor de categorie "Schoenen" op de Franse winkel, en tabel B voor diezelfde categorie op de Duitse winkel.

## Technische structuur

### Database

8 tabellen met het voorvoegsel `dfsg_`: `dfsg_guide`, `dfsg_guide_lang`, `dfsg_column`, `dfsg_column_lang`, `dfsg_row`, `dfsg_cell`, `dfsg_assignment` en `dfsg_feedback`. Alle tabellen worden bij het verwijderen netjes gewist.

### Gebruikte hooks

- `actionFrontControllerSetMedia`: injectie van CSS en JS aan de frontend
- `displayBackOfficeHeader`: injectie van CSS en JS in de beheeromgeving
- `displayProductExtraContent`: tabblad op de productpagina (aanbevolen)
- `displayProductPriceBlock`, `displayProductActions`, `displayProductAdditionalInfo`, `displayReassurance`, `displayAfterProductThumbs`, `displayFooterProduct`: alternatieve posities
- `displayHeader`: injectie van de JSON-LD op de productpagina's
- `actionValidateOrder`: trigger voor eventuele opvolging (v2)
- `moduleRoutes`: de eigen SEO-pagina

## Veelgestelde vragen

### De maattabel verschijnt niet op mijn productpagina, wat nu?

Controleer eerst in **Configureren → Posities productpagina** of er minstens één positie geactiveerd is (standaard het producttabblad). Rendert uw maatwerkthema de native hooks van PrestaShop niet, activeer dan meerdere posities tegelijk: minstens één van de 7 zou moeten werken. Controleer ook of er minstens één actieve tabel en een standaardtoewijzing bestaan in **Maattabellen → Toewijzingen**.

### Kan ik tabellen importeren vanuit een CSV?

Voorlopig niet. Met de visuele editor bouwt en bewerkt u de tabellen ter plekke, kolom per kolom en rij per rij. Een CSV-import wordt overwogen voor een latere versie.

### Werkt de calculator zonder JavaScript?

Nee, de calculator is interactief en heeft JavaScript nodig voor het AJAX-verzoek naar de server. De statische tabel verschijnt daarentegen prima zonder JavaScript, wat de toegankelijkheid en de vindbaarheid behoudt.

### Is er een risico op dubbele JSON-LD-opmaak?

Nee. De hook `displayHeader` zendt één enkel JSON-LD-script per productpagina uit, en de eigen SEO-pagina heeft haar eigen aparte `WebPage`-opmaak. De Schema.org-validator van Google meldt geen enkel dubbel.

### Compatibel met de migratie van PrestaShop 8 naar 9?

Ja. De module declareert `ps_versions_compliancy` van 8.0.0 tot 9.99.99, gebruikt de klassen ObjectModel en HelperForm die in PS 9 ondersteund blijven, en gebruikt geen enkele verouderde API.

### Hoe wis ik alle gegevens van de module?

Het verwijderen via het Modulebeheer wist alle tabellen `dfsg_*` en alle instellingen `DFSG_*`. Er blijft niets in de database achter.

## Support

E-mail: [support@datafirefly.com](mailto:support@datafirefly.com). Antwoord binnen 5 werkdagen in het Frans of het Engels.
