Phase 2.2: Implement ticket template system with template parts
Resolved 💬 1 comment Opened Sep 21, 2025 by blegrand Closed Sep 21, 2025
Objectif
Créer un système de templates pour l'affichage des tickets, réutilisable pour l'écran My Account et le futur PDF.
Description
Implémenter un système de template parts PHP natifs pour le rendu des tickets individuels, avec possibilité d'override par attraction via champ ACF.
Principes directeurs
- LEAN : Solution minimale qui apporte de la valeur immédiate
- DRY : Template réutilisable pour web et futur PDF
- YAGNI : Pas de système complexe, juste des includes PHP standards
Architecture proposée
Structure des fichiers
/includes/gc/tickets/
├── functions.tickets.php # Ajouter fonction de rendu
└── template-parts/
└── ticket-default.php # Template par défaut
Fonction de rendu
Ajouter dans functions.tickets.php :
- vef_gc_render_ticket() : Charge et rend le template approprié
- Utilise ob_start() / ob_get_clean() pour capturer le HTML
- Détecte template custom via ACF field 'ticket_template' sur le produit
Template par défaut
Template PHP natif avec :
- Variables PHP directes (pas de placeholders)
- Appel à vef_gc_generate_ticket_code() pour le QR
- Conditionnels PHP pour eventName/eventStart (capacité gérée)
- Tous les champs obligatoires Galaxy Connect
Champs obligatoires à inclure
Tous les produits
- ticketNumber (via QR code + numéro lisible)
- productName
- orderId
Produits à capacité gérée uniquement
- eventName (si présent)
- eventStart (si présent)
Intégration
Remplacer l'affichage actuel dans view-ticket.php par appel à vef_gc_render_ticket()
Extensibilité
- Template custom : copier ticket-default.php vers ticket-{nom}.php
- Définir dans ACF : nom du template sans extension .php
- Fallback automatique sur ticket-default.php si template introuvable
Critères d'acceptation
- [ ] Template affiche tous les champs obligatoires Galaxy Connect
- [ ] QR code généré via fonction existante vef_gc_generate_ticket_code()
- [ ] Template responsive et optimisé pour mobile (scan QR)
- [ ] Override ACF fonctionnel si champ défini
- [ ] Réutilise CSS existant de user-tickets.css
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗