Então, eu quero adicionar um identificador de layout personalizado para todas as páginas de exibição de categoria. O identificador que deve ser carregado depende de certos parâmetros de categoria, portanto, o identificador precisa ser adicionado programaticamente com $page->addPageLayoutHandles()
Parece fácil ..? Aparentemente não
O Magento 2 fornece um bom sistema de afterExecute()
plug-ins que eu usaria naturalmente, basta definir um plug-in para ser executado após a categoria original execute()
e enviar todas as atualizações para o objeto Page a partir daí.
Infelizmente, não funciona dessa maneira. O motivo é que o execute()
método original (no final) será executado $page->getConfig()->addBodyClass()
- uma chamada para esse método forçará automaticamente o layout a ser completamente carregado e gerado, portanto, qualquer tentativa subsequente de adicionar novos alças de layout para a página são completamente inúteis. Olhei em volta para encontrar maneiras não tão elegantes de conseguir a mesma coisa (ainda usando plugins) .. não encontrei nenhuma.
Acabei executando meu próprio controlador para exibição de categoria, no entanto, eu não preferiria deixar dessa maneira.
Então, minha pergunta é .. como posso adicionar novos identificadores de layout de página (programaticamente) para exibição de categoria? e faça-o com elegância.
$page->getConfig()->addBodyClass()
carrega e gera seu layout? Estou tendo uma tarefa semelhante no momento, apenas com páginas do CMS.