Skip to content

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:

$reduced_types = ['abonnement', 'los_nummer', 'uitgave'];

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-flows bekijken
  • 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 site
  • ddrush - 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.