Daher möchte ich ein benutzerdefiniertes Layout-Handle für alle Seiten der Kategorieansicht hinzufügen. Das Handle, das geladen werden soll, hängt von bestimmten Kategorieparametern ab. Daher muss das Handle programmgesteuert mit hinzugefügt werden $page->addPageLayoutHandles()
Scheint einfach ..? Scheinbar nicht
Magento 2 bietet ein nettes Plugin-System, das ich natürlich verwenden wollte. Definieren Sie einfach ein afterExecute()
Plugin, das nach der ursprünglichen Kategorie ausgeführt werden soll, execute()
und übertragen Sie von dort aus alle Aktualisierungen in das Page-Objekt.
Leider funktioniert dies nicht ganz. Grund dafür ist, dass die ursprüngliche execute()
Methode (ganz am Ende) ausgeführt wird. Durch $page->getConfig()->addBodyClass()
einen Aufruf dieser Methode wird das Layout automatisch vollständig geladen und generiert, sodass alle nachfolgenden Versuche, neue hinzuzufügen, ausgeführt werden Layout-Handles zu Seite sind völlig nutzlos. Ich habe mich umgesehen, um nicht so elegante Wege zu finden, um dasselbe zu erreichen (immer noch mit Plugins). Ich habe keine gefunden.
Am Ende habe ich meinen eigenen Controller für die Kategorieansicht ausgeführt, aber ich würde es nicht vorziehen, ihn so zu belassen.
Meine Frage lautet also: Wie kann ich (programmgesteuert) neue Seitenlayout-Handles für die Kategorieansicht hinzufügen? und mach es elegant.
$page->getConfig()->addBodyClass()
Ihr Layout geladen und generiert wird? Ich habe im Moment eine ähnliche Aufgabe, nur mit CMS-Seiten.