Por lo tanto, quiero agregar un controlador de diseño personalizado para todas las páginas de vista de categoría ... el controlador que se supone que se carga depende de ciertos parámetros de categoría, por lo que el controlador debe agregarse programáticamente con $page->addPageLayoutHandles()
Parece fácil ..? Aparentemente no
Magento 2 proporciona un buen sistema de complementos que naturalmente iba a utilizar, solo defina un afterExecute()
complemento para que se ejecute después de la categoría original execute()
e inserte cualquier actualización en el objeto Page desde allí.
Desafortunadamente, no funciona de esa manera ... la razón es que execute()
se ejecutará el método original (al final) $page->getConfig()->addBodyClass()
: una llamada a este método obligará automáticamente a que el diseño se cargue y genere por completo, por lo que cualquier intento posterior de agregar nuevos los controladores de diseño de la página son completamente inútiles. Miré a mi alrededor para encontrar formas no tan elegantes de lograr lo mismo (todavía usando complementos) ... no encontré ninguna.
Terminé ejecutando mi propio controlador para la vista de categoría, sin embargo, no preferiría dejarlo así.
Entonces mi pregunta es ... ¿cómo puedo agregar nuevos controladores de diseño de página (programáticamente) para la vista de categoría? y hazlo con elegancia.
$page->getConfig()->addBodyClass()
carga y genera tu diseño? Tengo una tarea similar en este momento, solo con páginas CMS.