Sessie 2025-11-20: Nieuwsbrief Integratie, User Profielen & Pathauto URLs¶
Datum¶
20 november 2025
Deelnemers¶
Sjoerd, AI Agent (Warp)
Doelen Sessie¶
- MailChimp nieuwsbrief integratie definitief maken
- User profielen (Customer + Openbaar) optimaliseren
- URL structuur voor users en profielen instellen
Uitgevoerd¶
1. MailChimp Subscribe Oplossing - Custom Module + Toggle Block¶
Besluit: Custom module vg_mailchimp_subscribe behouden als primaire methode
Aanpak onderzocht: - ECA/BPMN: Gisteren geprobeerd maar subscribe action ontbrak - MailChimp signup block: Vraagt dubbele data entry (email + naam) - Custom module: Beste oplossing voor automatische sync
Implementatie:
- Module uitgebreid met hook_user_update() voor unsubscribe functionaliteit
- Subscribe bij user insert als field_nieuwsbrief = TRUE
- Unsubscribe bij user update als checkbox wordt uitgezet
- Custom toggle block aangemaakt: "Aanmelden nieuwsbrief"
- Block toont simpele checkbox met huidige status
- Gebruikt user account veld field_nieuwsbrief (niet customer profiel)
- Automatische MailChimp API calls via hooks
- Error handling en user feedback messages toegevoegd
Bestanden:
- /web/modules/custom/vg_mailchimp_subscribe/vg_mailchimp_subscribe.module
- /web/modules/custom/vg_mailchimp_subscribe/src/Plugin/Block/NewsletterToggleBlock.php
- /web/modules/custom/vg_mailchimp_subscribe/src/Form/NewsletterToggleForm.php
2. Velden Structuur Opgeschoond¶
field_nieuwsbrief verplaatst naar User Account: - Was: Customer profiel - Nu: User account entity - Reden: Alle users hebben dit nodig, ook oude accounts zonder customer profiel - Beide profielen kunnen nu optioneel de waarde lezen
field_website verwijderd van User Account: - Was: Onnodig dubbel met website veld in profielen - Verwijderd via config delete
field_beroep op Openbaar profiel verwijderd: - Optie A gekozen: Eén bron (Customer profiel), toon waar nodig - Voorkomt data sync issues en dubbele entry - Bij weergave via Customer profiel veld tonen
field_locatie verwijderd van Openbaar profiel: - Was afkomstig van event/agenda entity - Niet relevant voor gebruikersprofielen
field_bio opnieuw aangemaakt: - Oude veld had Field Permissions issue (grijs/disabled) - Nieuw veld zonder restricties - Type: text_long met text_textarea widget - Text format: Eenvoudige HTML
3. Profile Types Configuratie¶
Customer profiel:
- multiple: false ingesteld (was: true)
- Voorkomt dat users meerdere klantprofielen aanmaken
- Tab "Adresboek" verdwenen, nu "Klantgegevens"
- Verplicht bij registratie
- Conditional fields werkend:
- Beroep "student" -> Opleiding veld
- Beroep "anders" -> Anders namelijk veld
- Velden niet meer required by default, alleen via conditional
Openbaar profiel: - Optioneel, users kunnen later aanmaken - Velden: Weergavenaam, Profielfoto, Over mij, Website - Beroep wordt getoond vanuit Customer profiel
4. Permissions Ingesteld¶
Authenticated rol toegevoegd:
- create openbaar profile
- update own openbaar profile
- view own openbaar profile
- delete own openbaar profile
- create customer profile
- update own customer profile
- view own customer profile
- use text format basic_html
Text format restricted_html verwijderd voor authenticated: - Te verwarrend om te kiezen tussen Eenvoudige en Beperkte HTML - Authenticated users hebben nu alleen Eenvoudige HTML
Content_editor rol:
- use text format email_html toegevoegd
5. Pathauto URL Patterns Geconfigureerd¶
User account URL:
- Pattern: /user/[user:uid]/[user:name]
- Voorbeeld: /user/44/sjoerd-aangemeld
- Combineert ID (uniek) met naam (leesbaar)
Openbaar profiel URL:
- Pattern: /profiel/[profile:uid:entity:name]
- Voorbeeld: /profiel/sjoerd-aangemeld
- Alleen username, leesbaarder voor publiek
Bulk update uitgevoerd:
- Alle bestaande user en profiel aliases geregeneerd
- Oude incorrecte aliases (zoals /44/usersjoerd-aangemeld) opgeruimd
Pathauto pattern aangemaakt: - Entity type: Profile - Bundle: Openbaar - Weight: -5 - Selection criteria: alleen openbaar profiel type
6. Text Formats Opgeschoond¶
Verwijderd: - Podcast URL (was overbodig)
Toegevoegd aan rollen: - Beperkte HTML: Authenticated (later weer verwijderd) - Email HTML: Content_editor (Redacteur)
Eindresultaat text formats:
- Beheer: Beheerder
- Redactie: Redacteur, Beheerder
- Eenvoudige HTML: Geverifieerde gebruiker, Abonnee, Beheerder
- Podcast: Redacteur, Beheerder
- Mailchimp campaign: Redacteur, Beheerder
- Platte tekst: Iedereen
- Email HTML: Redacteur, Beheerder
7. Layout Builder Voorbereiding¶
User account pagina: - Layout Builder al actief - Two-column layout (75% / 25%) - Nieuwsbrief toggle block toegevoegd aan sidebar - Klaar voor verdere aanpassingen
Technische Details¶
Custom Module Hooks¶
vg_mailchimp_subscribe_user_insert() // Subscribe bij registratie
vg_mailchimp_subscribe_user_update() // Subscribe/unsubscribe bij wijziging
MailChimp Configuratie¶
- DEV lijst ID: 0dc076aa56
- Merge fields: EMAIL, FNAME, LNAME, MMERGE3 (beroep)
- Double opt-in: enabled
- Webhook hash: e64fc24e1027ae0a5c4130de188fadf5
Drupal Entities Structuur¶
User Account
├─ field_nieuwsbrief (boolean)
├─→ Customer Profiel (1:1, verplicht)
│ ├─ Adres velden
│ ├─ field_beroep (met conditionals)
│ ├─ field_telefoon
│ ├─ KVK, BIG nummers
│ └─ field_website_praktijk
└─→ Openbaar Profiel (0:1, optioneel)
├─ field_weergavenaam
├─ field_foto
├─ field_bio
└─ field_website_praktijk
Openstaande Punten¶
Voor Volgende Sessie¶
- Layout Builder verder uitwerken voor user account pagina
- Customer profiel velden mooi groeperen en tonen
- Openbaar profiel layout via Layout Builder
- Beroep veld van Customer tonen op Openbaar profiel
- Validaties toevoegen (KVK 8 cijfers, BIG 11 cijfers)
Voor Winkel (Later)¶
- Custom font in PDF facturen
- Nieuw product type: Ticket met QR-code generatie
Deployment Checklist - KRITIEK voor Migratie naar LIVE¶
STAP 1: Pathauto Patterns (EERST DOEN!)¶
WAARSCHUWING: Dit MOET voor config import, anders krijgen bestaande users verkeerde URLs
- User account pattern instellen:
- Ga naar:
/admin/config/search/path/patterns - Bewerk user pattern
-
Zet op:
/user/[user:uid]/[user:name] -
Openbaar profiel pattern aanmaken:
- Maak nieuw pattern voor Profile entity
- Bundle: Openbaar
-
Pattern:
/profiel/[profile:uid:entity:name] -
Bulk update aliases uitvoeren:
- Ga naar:
/admin/config/search/path/update_bulk - Selecteer Users en Profiles
-
Run update
-
Oude incorrecte aliases verwijderen:
- Check path_alias tabel voor patronen zoals
/44/usersjoerd-aangemeld - Verwijder handmatig
STAP 2: Standaard Migratie¶
- Config import vanuit DEV
- MailChimp lijst ID wijzigen (0dc076aa56 -> LIVE lijst)
- MailChimp webhook URL updaten
- Mollie naar live mode
- Base URL in settings.php
- Test registratie flow
- Test MailChimp subscribe/unsubscribe
Configuratie Exports Nodig¶
Nieuwe/Gewijzigde Configs¶
profile.type.customer(multiple: false)pathauto.pattern.user(nieuw pattern)pathauto.pattern.profile_openbaar(nieuw)user.role.authenticated(nieuwe permissions)user.role.content_editor(email_html permission)field.storage.user.field_nieuwsbrief(nieuw)field.field.user.user.field_nieuwsbrief(nieuw)field.field.profile.openbaar.field_bio(opnieuw aangemaakt)filter.format.podcast_url(verwijderd)- Diverse entity form/view displays
Custom Module¶
/web/modules/custom/vg_mailchimp_subscribe/(gehele module)
Geleerde Lessen¶
- Field Permissions module kan velden blokkeren ook al zijn entity permissions goed
- Pathauto patterns moeten VAN TEVOREN op LIVE staan voor config import
- Shared field storage betekent niet automatische data sync tussen entities
- User ID in URL is niet onveilig en helpt bij debugging
- Text format keuzes simpel houden voor eindgebruikers
- Profile multiple setting moet FALSE zijn voor 1-op-1 relatie
Status¶
Sessie succesvol afgerond. User registratie en profielen zijn nu goed werkend met:
- Automatische MailChimp sync
- Nette URL structuur
- Correcte permissions
- Gebruiksvriendelijke forms
Volgende focus: Layout Builder voor mooie profiel weergave, daarna verder met winkel (facturen, tickets).