Template
L'attribut Template révolutionne la gestion des templates dans WordPress en remplaçant les fichiers de template traditionnels (comme page.php, single.php, archive.php) par une approche orientée objet basée sur des contrôleurs et des vues Twig.
Utilisation de base
app/Controllers/BlogController.php
use Elementum\Attributes\Template; class BlogController extends Controller { #[Template('front_page')] public function homePage() { $currentDate = date('d/m/Y'); $readingTime = 5; return $this->render('@theme/front-page.html.twig', [ 'currentDate' => $currentDate, 'readingTime' => $readingTime ]); } }
Paramètres
Paramètre obligatoire
name
- Type :
string - Description : Identifiant du template
- Valeurs courantes :
'front_page': Page d'accueil'home': Page des articles'page': Page simple'single': Article unique'archive': Page d'archive'post_type_archive': Archive de type de contenu personnalisé'taxonomy': Page de taxonomie'author': Page d'auteur'search': Page de recherche'404': Page 404
Paramètres optionnels
id
- Type :
string - Défaut : Généré automatiquement
- Description : Identifiant unique du template
- Recommandé : Spécifiez un ID explicite pour faciliter la maintenance
priority
- Type :
int - Défaut :
10 - Description : Priorité d'exécution du template
- Utilisation : Contrôle l'ordre d'exécution des templates
params
- Type :
array - Défaut :
[] - Description : Paramètres supplémentaires pour le template
- Exemple :
['post_type' => 'mon_type']
customTemplate
- Type :
string - Défaut :
'' - Description : Nom du modèle personnalisé
- Utilisation : Remplace les fichiers comme
page-{template}.php
Cas d'utilisation courants
Page d'accueil personnalisée
#[Template('front_page')] public function homePage() { // Logique de la page d'accueil return $this->render('@theme/home.html.twig', [ 'featuredPosts' => $this->getFeaturedPosts() ]); }
Archive de type de contenu personnalisé
#[Template('post_type_archive', params: ['evenement'])] public function evenementArchive() { $events = $this->getUpcomingEvents(); return $this->render('@theme/archive-evenement.html.twig', [ 'events' => $events, 'currentDate' => new \DateTime() ]); }
Page avec modèle personnalisé
#[Template('page', customTemplate: 'a-propos')] public function aboutPage() { $teamMembers = $this->getTeamMembers(); return $this->render('@theme/page-a-propos.html.twig', [ 'team' => $teamMembers, 'companyHistory' => $this->getCompanyHistory() ]); }
Bonnes pratiques
- Nommage : Utilisez des noms de templates descriptifs et cohérents
- ID uniques : Toujours spécifier un ID explicite pour faciliter le débogage
- Documentation : Commentez les templates complexes ou nécessitant une attention particulière
- Performance : Optimisez les requêtes dans les méthodes de contrôleur
- Séparation des préoccupations : Gardez la logique métier dans les contrôleurs et le rendu dans les templates
Configuration requise
Assurez-vous d'avoir configuré correctement le fichier config/templates.yaml pour activer la gestion des templates personnalisés. Consultez la documentation de configuration pour plus de détails.
Remarques
- Les templates sont chargés en fonction de leur priorité, du plus élevé au plus bas
- Il est possible d'avoir plusieurs contrôleurs pour le même type de template avec des priorités différentes
- Utilisez les namespaces pour organiser vos contrôleurs de manière logique