Change layout of categories on base of categoy level in magento 2

Vendor/Module/etc/frontend/events.xml


<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nonamespaceschemalocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="layout_load_before">
        <observer instance="Vendor\Module\Observer\CategoryLayout" name="vendor_module_layout_load_before">
    </observer></event>
</config>


Create File

namespace Vendor\Module\Observer;
use Magento\Framework\Registry;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer;

class CategoryLayout implements ObserverInterface
{
    const ACTION_NAME = 'catalog_category_view';

    /** @var Registry */
    private $registry;

    public function __construct(
        Registry $registry
    ) {
        $this->registry = $registry;
    }

    public function execute(Observer $observer)
    {
        if ($observer->getFullActionName() !== self::ACTION_NAME) {
            return;
        }

        $category = $this->registry->registry('current_category');

        /** @var \Magento\Framework\View\Layout $layout */
        $layout = $observer->getLayout();
        $layout->getUpdate()->addHandle(self::ACTION_NAME . '_' . $category->getLevel());
    }
}

Vendor/Module/view/frontend/layout/catalog_category_view_1.xml

<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nonamespaceschemalocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceblock name="breadcrumbs" remove="true">
    </referenceblock></body>
</page>



Comments