Quindi, voglio aggiungere un handle di layout personalizzato per tutte le pagine della vista di categoria .. l'handle che dovrebbe essere caricato dipende da alcuni parametri di categoria, quindi l'handle deve essere aggiunto a livello di codice con $page->addPageLayoutHandles()
Sembra facile ..? Apparentemente no
Magento 2 fornisce un bel sistema di plugin che stavo per usare naturalmente, basta definire un afterExecute()
plugin da eseguire dopo la categoria originale execute()
e spingere qualsiasi aggiornamento nell'oggetto Page da lì.
Sfortunatamente non funziona così. La ragione è che il execute()
metodo originale (alla fine) verrà eseguito $page->getConfig()->addBodyClass()
- una chiamata a questo metodo costringerà automaticamente il layout a essere completamente caricato e generato, quindi eventuali tentativi successivi di aggiungere nuovi gli handle di layout della pagina sono completamente inutili. Mi sono guardato intorno per trovare modi non così eleganti per ottenere la stessa cosa (usando ancora plugin) .. non ho trovato nessuno.
Ho finito con il mio controller per la visualizzazione delle categorie, tuttavia non avrei preferito lasciarlo così.
Quindi la mia domanda è ... come posso aggiungere nuovi handle di layout di pagina (a livello di programmazione) per la visualizzazione delle categorie? e fallo elegantemente.
$page->getConfig()->addBodyClass()
carica e genera il tuo layout? Al momento sto svolgendo un compito simile, solo con le pagine CMS.