Usuń obserwatora z rozszerzenia zewnętrznego

11

Zainstalowałem moduł blogu na mojej platformie Magento 2. Ten moduł blogu ma obserwatora, który automatycznie dodaje nowy element menu do głównej nawigacji. Chcę to zatrzymać.

events.xmlPlik wygląda tak:

<?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>

Jak widać, odwołuje się do obserwatora, który dodaje link do podstawowej nawigacji. Usunięcie events.xmlrozwiązuje mój problem, ale szukam metody, która nie wymaga modyfikacji plików podstawowych modułów.

Angus
źródło

Odpowiedzi:

14

Nadal możesz wyłączyć obserwatorów. W Magento 1 zostało to zrobione <type>disabled</type>, w Magento 2 jest to 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>

Jeśli dodasz ten zmodyfikowany events.xmlplik do modułu niestandardowego i uzależnisz moduł niestandardowy od Aheadworks_Blog, powinien on zastąpić oryginalny.

Fabian Schmengler
źródło
3
Jestem ciekawy, czy proces łączenia obserwatora korzysta tylko z nameatrybutu (widząc, jak jest unikalny). W takim przypadku można pominąć nieco długi instancewłaściwość: <observer name="aw_blog_add_topmenu_items" disabled="true".
nevvermind 24.04.16