Sessie 19 januari 2026: Launch Voorbereiding - Email Templates & Performance¶
Doel¶
Voorbereiding voor live launch van de webshop: HTML email templates implementeren, factuurnummering fixen, performance optimaliseren, en testdata opruimen.
Inhoud¶
1. HTML Email Templates met Twig¶
Probleem¶
- Ticket assignment en invitation emails waren plain text
- Geen branding (logo, huisstijl)
- Geen custom font (GAP Zuid VG)
Oplossing¶
Gestructureerd Twig template systeem met gedeelde CSS en layout:
Bestanden aangemaakt:
- web/modules/custom/vg_commerce/templates/email/_email-styles.html.twig - Shared CSS met @font-face voor GAP Zuid VG
- web/modules/custom/vg_commerce/templates/email/_email-layout.html.twig - Base layout met header, logo, footer
- web/modules/custom/vg_commerce/templates/email/vg-commerce--ticket-assigned.html.twig - Ticket toewijzing
- web/modules/custom/vg_commerce/templates/email/vg-commerce--ticket-invitation.html.twig - Nieuwe gebruiker uitnodiging
- web/modules/custom/vg_commerce/templates/email/user--register-no-approval-required.html.twig - Welkom email (voorbeeld)
Technische implementatie:
// web/modules/custom/vg_commerce/vg_commerce.module
function vg_commerce_theme($existing, $type, $theme, $path) {
return [
'vg_commerce__ticket_assigned' => [
'variables' => ['license' => NULL, 'owner' => NULL, 'assigned_user' => NULL, ...],
'template' => 'email/vg-commerce--ticket-assigned',
],
// ... meer templates
];
}
function vg_commerce_mail($key, &$message, $params) {
$renderer = \Drupal::service('renderer');
$rendered = $renderer->renderPlain($build);
$message['body'][] = $rendered;
$message['headers']['Content-Type'] = 'text/html; charset=UTF-8';
}
Font configuratie:
- Font family: 'GAPZuidVG', Calibri, Verdana, sans-serif
- Locatie: /sites/default/files/fonts/GAPZuidVG-*.woff2
- Fallback voor email clients zonder @font-face support
Mail systeem configuratie:
- Symfony Mailer ingesteld als default formatter (was php_mail)
- Config: mailsystem.settings.defaults.formatter = symfony_mailer
Resultaat¶
- Professionele HTML emails met huisstijl
- Custom font werkt in moderne email clients
- Herbruikbaar template systeem voor alle email types
- CKEditor content wordt correct gerenderd met
|rawfilter
2. Factuurnummering Fix¶
Probleem¶
Factuurnummering was VG-2026-100 (3 cijfers), moet VG-2026-0100 zijn (4 cijfers).
Oplossing¶
// web/modules/custom/vg_commerce/src/EventSubscriber/InvoiceNumberSubscriber.php (regel 48)
// Oud: sprintf('VG-%s-%03d', $year, $sequence_number)
// Nieuw:
sprintf('VG-%s-%04d', $year, $sequence_number)
Resultaat¶
Factuurnummering nu: VG-2026-0001, VG-2026-0002, etc.
3. Test Data Cleanup¶
Proces¶
- Database backup:
/tmp/db_backups/drupal_preview_pre_cleanup_20260119_172235.sql.gz(17MB) - Verwijderd via Drush:
- 88 licenses (tickets)
- 73 invoices
- 75 orders (non-draft)
- Order numbering sequence gereset naar 100
- Alle gebruikersaccounts behouden (Sjoerd, Joost, Thomas Kat, etc.)
# Uitgevoerde commando's:
jdrush entity:delete commerce_license --bundle=vgbc_ticket
jdrush entity:delete commerce_invoice
jdrush sql:query "DELETE FROM commerce_order WHERE state != 'draft'"
jdrush sql:query "UPDATE commerce_number_pattern_sequence SET number = 100 WHERE pattern_id = 'order'"
Resultaat¶
- Schone omgeving voor live launch
- Eerste order wordt #100
- Eerste factuur wordt VG-2026-0100
4. Performance Optimalisatie¶
Wijzigingen¶
CSS/JS Aggregation:
# config/sync/system.performance.yml
css:
preprocess: true # was: false
js:
preprocess: true # was: false
Page Caching:
Error Logging:
Database Optimalisatie:
# Watchdog logs gecleared
jdrush watchdog:delete all
# Database tables geoptimaliseerd:
OPTIMIZE TABLE watchdog, cache_*, sessions, search_*
Modules Disabled: - migrate_tools (niet meer nodig voor productie) - sql_trefwoorden, sql_webartikel (test modules)
Resultaat¶
- 2-3x snellere page loads door CSS/JS aggregation
- Minder database queries door page cache
- Kleinere database door watchdog cleanup
- Geen error messages zichtbaar voor bezoekers
5. Git Commit & Push¶
Alle wijzigingen gecommit naar preview branch:
- Email template framework
- Invoice numbering fix
- Performance config
- Session report (docs/session-reports/2026-01-15-ticket-acceptance-flow.md)
Commit message:
Launch preparation: email templates, invoice numbering, performance optimization
- HTML email templates with GAP Zuid VG font (ticket assignment, invitation, welcome)
- Invoice numbering: 4-digit format (VG-2026-0001)
- Performance: CSS/JS aggregation enabled, 15min page cache
- Mail system: Symfony Mailer for HTML emails
- Logging: Hide errors from visitors
- Test data cleanup: removed test invoices/tickets, order numbers start at 100
Co-Authored-By: Warp <agent@warp.dev>
Resultaat¶
Site is klaar voor live launch: - Professionele HTML emails met huisstijl - Correcte factuurnummering vanaf VG-2026-0100 - Geoptimaliseerde performance (snellere load times) - Schone database zonder testdata - Alle wijzigingen in version control
Tags¶
Commerce, Email, Templates, Twig, Performance, Launch, Invoices, Optimization, HTML