Удалить наблюдателя из стороннего расширения

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решает мою проблему, но я ищу метод, который не включает изменение файлов основного модуля.

Angus
источник

Ответы:

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