According to magento 2 theme specification about Layout files processing :
The Magento application processes layout files in the following order:
1/ Collects all layout files from modules. The order is determined by the
modules order in the module list from app/etc/config.php.2./ Determines
the sequence of inherited themes [, …,
]3./ Iterates the sequence of themes from
last ancestor to current:a. Adds all extending theme layout files to the list.
b. Replaces overridden layout files in the list.
4./ Merges all layout files from the list.
How can I debug and view the layout file for every step of this process ?
Best Answer
Finally, I can print all loaded xml layout and know how magento 2 layout is working. It also help us to check whether our custom module layout is loaded or not. The idea is :
We listen to an event “layout_generate_blocks_after” and get all loaded tree from that point.
Save all loaded tree to an xml file.
1/ We create a new directory
Sample/Dev
. CreateSample/Dev/registration.php
to declare with Magento 2 about our module directory.2/ Create
Sample/Dev/etc/module.xml
: To let Magento 2 know about setup version of our module3/ Create
Sample/Dev/etc/frontend/events.xml
. In this file, we will listen to event “layout_generate_blocks_after”4/ Create
Sample/Dev/Model/Layout.php
with the content as below5/ Set up new module . In your home website directory. enter CMD command line:
– php bin/magento module:enable Sample_Dev
– php bin/magento setup:upgrade
6/ Refresh the page that you want to see xml file (for example: your home page) and check your handle xml file in
var/log/layout_block.xml
.