从第三方扩展中删除观察者


11

我已经在我的Magento 2平台上安装了一个博客模块。该博客模块具有一个观察者,该观察者自动将新菜单项添加到主导航中。我想停止这一点。

events.xml文件如下所示:

<?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="page_block_html_topmenu_gethtml_before">
        <observer name="aw_blog_add_topmenu_items" instance="Aheadworks\Blog\Observer\AddBlogToTopmenuItemsObserver" />
    </event>
</config>

如您所见,它引用了将链接添加到主导航中的观察者。删除events.xml解决了我的问题,但是我正在寻找一种不涉及修改核心模块文件的方法。

Answers:


14

您仍然可以禁用观察者。在Magento 1中,它是用完成的<type>disabled</type>;在Magento 2中,它是disabled="true"

<?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="page_block_html_topmenu_gethtml_before">
        <observer name="aw_blog_add_topmenu_items"
                  instance="Aheadworks\Blog\Observer\AddBlogToTopmenuItemsObserver"
                  disabled="true" />
    </event>
</config>

如果将此修改后的events.xml文件添加到自定义模块中,并使该自定义模块依赖于Aheadworks_Blog,则它应覆盖原始文件。


3
我很好奇,如果观察者合并过程仅使用name属性(查看其唯一性)。在这种情况下,您可以忽略较长的instance属性:<observer name="aw_blog_add_topmenu_items" disabled="true"
nevvermind
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.