Sessie 5 januari 2026: Dev→Preview winkelmigratie en Layout Builder stabilisatie¶
Doel¶
- Webshopfunctionaliteit van dev naar preview overzetten zonder live te beïnvloeden.
- Winkelweergaves en basisproductaanbod op preview beschikbaar maken.
- Layout Builder-issues op preview structureel oplossen (geen quick fixes).
Inhoud¶
Code en dependencies¶
- Merge dev → preview uitgevoerd (met allow-unrelated-histories), merge-conflicten opgelost in voordeel van dev-implementatie (custom module
vg_commerce, themevg25, composer patches). - Composer install (no-dev) succesvol op preview; Drush gebruikt via
vendor/bin/drush.php.
Commerce-config en data¶
- Gerichte import van commerce/winkelconfig (±120 items): product types, number patterns, invoice types, view/form displays, standaard views.
- Toegevoegde dependency:
taxonomy.vocabulary.product_categories(vereist voorfield_productcategorie). - Store aangemaakt (online/EUR).
- Producten toegevoegd op preview:
- VGBC 2026 tickets: Standaard, Studenten (nieuw i.p.v. profielkoppeling), Standhouder.
- Los nummer 2025: nummers 3, 4, 5, 6.
- Winkelviews geïmporteerd (losse nummers, tickets, abonnementen, merchandise, uitgaven); UUID-conflicten opgelost door normalisatie van view-UUID’s.
ECA, CKEditor en formulieren¶
eca_rendergedeïnstalleerd i.v.m. fatals in form alter; overige ECA-deprecation niet blokkerend.- CKEditor5 waarschuwing “ListPlugin styles” genoteerd; productformulier functioneel.
Layout Builder¶
- Defaults-editor crasht door sample entity image-generatie:
- Initieel “undefined function image()” (fallback naar
imagepng()toegepast). - Daarna “Path cannot be empty in imagepng()” → root cause: ontbrekende tijdelijke map;
system.file:path.temporaryis null, sample preview kan geen image wegschrijven. - Individuele entity layout via
/editie/{id}/layoutwerkt wel (geen sample, echte entity). - Conclusie: structurele fix is het configureren van een geldige tijdelijke directory voor preview.
Volledige config-sync dev→preview¶
- Eerste import geblokkeerd door bestaande shortcut-set/link entiteiten (UUID-conflict).
- Blokkade opgeheven door shortcut-entiteiten te verwijderen; import succesvol vervolgd.
- Bijeffect: admin crashte door ontbrekende default shortcut set; hersteld door default set aan te maken en aan user 1 te koppelen (aanbevolen: systeem-breed normaliseren).
Rollen en permissies¶
- Administrator rol bevestigd; specifieke LB/ECK-permissies op preview nog normaliseren.
- Redactie-rol validatie/naam controleren en permissies aanvullen.
Resultaat/Oplossing¶
- Preview bevat nu commerce code, winkelconfig en basisproducten; shop-views werken.
- Defaults Layout Builder blijft crashen zolang de tijdelijke directory niet is ingesteld; entity-specifieke layout werkt wel.
- Admin-toegang hersteld na shortcut-set herstel.
Volgende stappen¶
- Temporary directory instellen (structureel, vereist voor LB sample preview)
- Stel in:
/var/www/sites/prev.voedingsgeneeskunde.nl/tmp drush cset system.file path.temporary /var/www/sites/prev.voedingsgeneeskunde.nl/tmp -ydrush cr- Rollen/permissies normaliseren
- Administrator en Redactie: LB-permissies voor ECK Editie (configure/edit layout overrides).
- Editor/Filter-config importeren of aanvullen
- CKEditor5 “ListPlugin styles” configureren;
filter.format.*eneditor.*uit dev importeren of handmatig aanvullen. - TaxRateResolver controleren
los_nummer→ 9%,vgbc_ticket→ 21% automatisch.- Winkelpagina afronden met Layout Builder
- Dossier en korte artikelen-blokken plaatsen (views aanwezig).
- Checkout testen (Mollie test) en factuur genereren.
- Shortcut-sets system-wide normaliseren
- Alle users zonder geldige set koppelen aan ‘default’.
- QR-code generator implementeren in
vg_commerce(order/attendee).
Notities¶
- Geen database-overwrite gebruikt (content veilig gehouden).
- Geen quick toggles in productieconfig: LB-defaults structureel fixen via tempdir-config i.p.v. UI-omwegen.
Einde sessie.
Learnings¶
- Ontbrekende tijdelijke map (
tmp) op preview zorgde voor subtiele Layout Builder-crashes bij sample images; dev had deze map al. Dit benadrukt dat file-system setup per omgeving expliciet gecontroleerd moet worden. - Unix-socket authenticatie (www-*) werkt alleen correct als Drush CLI als dezelfde Unix-user draait én de Drush binaries uitvoerbaar zijn; anders lijken DB- of codeproblemen op te treden terwijl het feitelijk om permissies gaat.