Eliminar observador de la extensión de terceros

11

He instalado un módulo de blog en mi plataforma Magento 2. Este módulo de blog tiene un observador que agrega automáticamente un nuevo elemento de menú en la navegación principal. Deseo detener esto.

El events.xmlarchivo se ve así:

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

Como puede ver, hace referencia al observador que agrega el enlace en la navegación principal. Eliminar events.xmlelimina mi problema, pero estoy buscando un método que no implique la modificación de los archivos del módulo central.

Angus
fuente

Respuestas:

14

Todavía puede deshabilitar observadores. En Magento 1 se hizo con <type>disabled</type>, en Magento 2 es 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 agrega este events.xmlarchivo modificado a un módulo personalizado y hace que el módulo personalizado dependa de Aheadworks_Blog, debería anular el original.

Fabian Schmengler
fuente
3
Tengo curiosidad por saber si el proceso de fusión del observador usa solo el nameatributo (ver cómo es único). En cuyo caso, se puede omitir el algo larga instancela propiedad: <observer name="aw_blog_add_topmenu_items" disabled="true".
nevvermind