当前位置: 技术文章>> 如何在Magento 2中使用观察器从任何页面中删除块

文章标题:如何在Magento 2中使用观察器从任何页面中删除块
  • 文章分类: Magento
  • 28205 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


在Magento 2中使用观察器从任何页面中删除块的步骤

第 1 步:我们需要 在扩展中以以下路径创建一个“events.xml”文件

app\code\Vendor\Extension\etc\

然后添加代码,如下所示

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="layout_generate_blocks_after">
        <observer name="removeblock" instance="Vendor\Extension\Observer\Removeblock" shared="false" />
    </event>
</config>

第2步: 之后,我们需要在扩展名中在以下路径中创建一个“Removeblock.php”文件。

app\code\Vendor\Extension\Observer\

现在,附加以下代码

<?php
namespace Vendor\Extension\Observer;
 
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
 
class Removeblock implements \Magento\Framework\Event\ObserverInterface
{
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $layout = $observer->getLayout();
        $your_condition = 1; // write your conditional logic here
        if($your_condition == 1)
        {
                // you need to modifed block name as per your requirement.
                $layout->unsetElement('customer-account-navigation-orders-link');
        }
    }
}

结论:

通过这种方式,您可以使用Magento 2中的观察器轻松地从任何页面中删除块。


推荐文章