系统学习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中的观察器轻松地从任何页面中删除块。