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

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗