Remove Block From Layout on Specific Condition in magento2

If you are working in magento2, and want to remove block from layout without any condition, then you can read blog:

Remove block from layout

Now, if you have a specific condition to display the block or not, then this can be achieve by observer.

Firstly you need to create an events.xml file in your module,

<?xml version="1.0"?>

<config xmlns:xsi="" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="layout_generate_blocks_after">
        <observer name="remove_block" instance="Webkul\Test\Observer\RemoveBlockForDiscount" />

Here, layout_generate_blocks_after observer is called after a block is rendered on the page.
And define the file to execute on observer.

Now, create observer file:



namespace Webkul\Test\Observer;

use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;

class RemoveBlockForDiscount implements ObserverInterface

    public function execute(Observer $observer)
        /** @var \Magento\Framework\View\Layout $layout */
        $layout = $observer->getLayout();
        $block = $layout->getBlock('');

        if ($block) {
            //you can apply or add you condition here.

Here, i am removing discount coupon block from the page.

After adding code in your module, discount coupon block will get removed from pages, as from checkout/cart page.

Hope this blog will help you in implementation of functionality.

Thank you.

. . .


Add Your Comment

Be the first to comment.