Commerce Product Variaties Setup¶
Datum: 31 oktober 2025
Doel: Product variation types configureren voor Losse nummers en Uitgaven met correcte velden en koppelingen
Uitgangspunt¶
We hadden één generiek "Publicaties" variation type met conditional fields om verschillende velden te tonen op basis van publicatietype (Tijdschrift/Boek). Dit bleek niet te werken met Commerce inline entity forms.
Problemen en Oplossingen¶
Probleem 1: Conditional Fields werkt niet met inline entity forms¶
Symptoom: Conditional fields (velden tonen/verbergen op basis van andere veldwaarden) werkte niet in het product formulier. Field_editie_referentie verscheen niet wanneer "Tijdschrift" werd geselecteerd.
Oorzaak: Conditional Fields module gebruikt JavaScript dat niet goed samenwerkt met Commerce's inline entity form widget voor product variations.
Oplossing: Gesplitst in twee aparte product variation types: - Los nummer - voor tijdschrift edities - Uitgave - voor boeken en andere publicaties
Elk type heeft nu zijn eigen specifieke velden, geen conditional logic meer nodig.
Probleem 2: Nieuwe variation types niet zichtbaar bij product aanmaken¶
Symptoom: Na aanmaken van "Los nummer" en "Uitgave" variation types waren deze niet beschikbaar in de dropdown bij het aanmaken van een product.
Oorzaak: Variation types moeten expliciet gekoppeld worden aan product types.
Oplossing: In /admin/commerce/config/product-types/default/edit de nieuwe variation types aangevinkt bij "Product variation types". Oude "Publicaties" type uitgezet.
Probleem 3: Variation velden niet zichtbaar in product formulier¶
Symptoom: Na aanmaken product waren de variation-specifieke velden (editie referentie, ISBN) niet zichtbaar in het edit formulier.
Oorzaak: De widget voor het Variations veld stond niet op "Inline entity form - Complex".
Oplossing: In /admin/commerce/config/product-types/default/edit/form-display het Variations veld ingesteld op "Inline entity form - Complex" widget.
Gerealiseerde Configuratie¶
Product Variation Types¶
Los nummer
- Doel: Losse tijdschriftnummers verkopen
- Velden:
- field_editie_referentie (Entity reference → Editie ECK entity)
- BTW: 9% (automatisch via vg_commerce_tax module)
Uitgave
- Doel: Boeken en andere publicaties verkopen
- Velden:
- field_isbn (Text, max 17 karakters voor ISBN-13 met streepjes)
- field_gerelateerd_artikel (Entity reference → Artikel node)
- BTW: 9% (automatisch via vg_commerce_tax module)
ECK Entity: Editie¶
Toegevoegd veld:
- field_gekoppelde_producten (Entity reference → Commerce Product, unlimited)
- Label frontend: "Winkel"
- Label backend: "Gekoppelde producten"
- Doel: Terugkoppeling van editie naar shop producten
BTW Configuratie¶
Custom module: vg_commerce_tax
Locatie: /web/modules/custom/vg_commerce_tax/src/TaxRateResolver.php
Aanpassing gemaakt:
Oude 'publicatie' type verwijderd, nieuwe types toegevoegd. Module regelt automatisch: - 9% BTW voor: abonnement, los_nummer, uitgave - 21% BTW voor: ticket, merchandise - Reverse charge (0%) voor B2B met geldig BTW-nummer (automatisch)
Display Configuratie¶
View mode voor Editie: editie-shop
- Toont: Cover afbeelding en beschrijving
- Gebruikt op: Product variation display via field_editie_referentie
- Nog te configureren: Layout builder opmaak
Product display:
Via /admin/commerce/config/product-variation-types/los_nummer/edit/display:
- field_editie_referentie formatter: Rendered entity → editie-shop view mode
Testproduct¶
Aangemaakt: "Voedingsgeneeskunde 4 - 2025" - Type: Los nummer - SKU: 1-VG-20504 - Prijs: €9,95 - Gekoppeld aan: Editie VG 2025-4 (ID: 6) - Productcategorie: Publicaties (term 1968) - Status: Cover en beschrijving worden correct getoond
Views in Progress¶
View: "Winkel - Losse nummers" - Type: Block - Toont: Commerce Products met Los nummer variaties - Format: Grid - Relatie: Product → Variations (verplicht) - Filter: Variation type = Los nummer - Velden (nog te configureren): - Titel - Prijs - field_editie_referentie (rendered entity voor cover) - Link naar productpagina
Vervolgstappen voor Morgen¶
1. View "Winkel - Losse nummers" Afmaken¶
- Velden toevoegen en configureren
- Grid layout instellen
- Sortering configureren (nieuwste eerst?)
- Block plaatsen op winkelpagina
2. Winkelwagen en Navigatie¶
- Shopping cart block plaatsen in Secondary menu regio
- Menu item "Winkel" toevoegen aan Primary menu
- URL bepalen voor winkelpagina (custom page met blocks of view page?)
3. View "Winkel - Uitgaven" Maken¶
- Kopie maken van Losse nummers view
- Aanpassen voor Uitgave variation type
- Beslissen: aparte view of beide types in één view met exposed filter?
4. Checkout Flow Configureren¶
/admin/commerce/config/checkout-flowsbekijken- Benodigde stappen bepalen voor jullie proces
- Velden configureren (adres, verzendmethode?)
- Email notificaties instellen
5. Betaalmethoden Instellen¶
- Welke payment gateway? (Mollie, Stripe, iDEAL?)
- Payment gateway module installeren en configureren
- Test transacties uitvoeren
6. Verzending & Fulfillment¶
- Verzendkosten configureren (indien nodig)
- Beslissen: fysieke producten alleen of ook digitaal?
- Eventueel: Drupal Commerce Shipping module
7. Product Display Templates¶
- Editie-shop view mode verder opmaken met Layout Builder
- Product variation display templates aanpassen indien nodig
- Add to cart button styling
8. Taxonomie & Filtering Opschonen¶
- Bepalen of Productcategorie taxonomie (term 1968) nog nodig is
- Eventueel: Exposed filters op winkelpagina (prijs, type, etc.)
9. Permissies & Rollen¶
- Wie mag producten aanmaken/bewerken?
- Anonieme gebruikers checkout flow testen
- Klant accounts configuratie (verplicht/optioneel?)
10. Producten Importeren/Migreren¶
- Bestaande edities koppelen aan shop producten
- Bulk product creation overwegen indien veel producten
- SKU nummering schema vastzetten
Technische Notities¶
Belangrijke Paden¶
- Product variation types:
/admin/commerce/config/product-variation-types - Product types:
/admin/commerce/config/product-types - Tax configuration:
/admin/commerce/config/tax-types - Checkout flows:
/admin/commerce/config/checkout-flows - ECK Editie bundle:
/admin/structure/eck/entity_type/editie/bundle
Drush Aliassen (uit .bashrc)¶
ldrush- productie siteddrush- development site (gebruikt tijdens deze sessie)jdrush- redactie site
Conditional Fields Routing¶
Voor referentie (niet meer gebruikt):
- Conditional fields lijst: /admin/structure/conditional_fields/commerce_product_variation/publicaties
- Werkte niet met inline entity forms, vandaar de split in aparte variation types
Overwegingen voor Later¶
Product Bundling¶
Als je later "abonnement" producten wilt maken die meerdere edities bevatten, overweeg dan Commerce Product Bundle module.
Digitale Downloads¶
Voor PDF downloads van artikelen: Commerce File module of Commerce License module kunnen handig zijn.
Voorraad Beheer¶
Als voorraad belangrijk wordt: Commerce Stock module installeren en configureren.
Kortingscodes¶
Commerce Promotions module is al aanwezig, configuratie via /admin/commerce/promotions.