Donc, je veux ajouter une poignée de mise en page personnalisée pour toutes les pages de vue de catégorie. La poignée qui est censée être chargée dépend de certains paramètres de catégorie, donc la poignée doit être ajoutée par programme avec $page->addPageLayoutHandles()
Semble facile ..? Apparemment non
Magento 2 fournit un joli système de plugins que j'allais naturellement utiliser, il suffit de définir un afterExecute()
plugin à exécuter après la catégorie d'origine execute()
et de pousser toutes les mises à jour dans l'objet Page à partir de là.
Malheureusement, cela ne fonctionne pas tout à fait de cette façon. La raison étant que la execute()
méthode d' origine (à la toute fin) s'exécutera $page->getConfig()->addBodyClass()
- un appel à cette méthode forcera automatiquement la mise en page à être complètement chargée et générée, donc toute tentative ultérieure d'ajouter de nouvelles les poignées de mise en page vers la page sont complètement inutiles. J'ai regardé autour de moi pour trouver des moyens pas si élégants de réaliser la même chose (en utilisant toujours des plugins). Je n'en ai pas trouvé.
J'ai fini par exécuter mon propre contrôleur pour l'affichage des catégories, mais je ne préférerais pas le laisser de cette façon.
Donc, ma question est .. comment puis-je ajouter de nouvelles poignées de mise en page (par programme) pour l'affichage des catégories? et faites-le avec élégance.
$page->getConfig()->addBodyClass()
charge et génère votre mise en page? J'ai une tâche similaire en ce moment, uniquement avec les pages CMS.