Supprimer l'observateur d'une extension tierce

11

J'ai installé un module de blog sur ma plateforme Magento 2. Ce module de blog dispose d'un observateur qui ajoute automatiquement un nouvel élément de menu dans la navigation principale. Je veux arrêter ça.

Le events.xmlfichier ressemble à ceci:

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

Comme vous pouvez le voir, il fait référence à l'observateur qui ajoute le lien dans la navigation principale. La suppression events.xmlrésout mon problème, mais je cherche une méthode qui n'implique pas la modification des fichiers du module principal.

Angus
la source

Réponses:

14

Vous pouvez toujours désactiver les observateurs. Dans Magento 1, c'était fait avec <type>disabled</type>, dans Magento 2 c'est 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>

Si vous ajoutez ce events.xmlfichier modifié à un module personnalisé et que le module personnalisé dépend d'Aheadworks_Blog, il doit remplacer le fichier d'origine.

Fabian Schmengler
la source
3
Je suis curieux de savoir si le processus de fusion d'observateurs utilise uniquement l' nameattribut (voir à quel point il est unique). Dans ce cas, vous pouvez omettre le peu de temps la instancepropriété: <observer name="aw_blog_add_topmenu_items" disabled="true".
nevvermind