サードパーティの拡張機能からオブザーバーを削除


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すると問題は解決しますが、コアモジュールファイルの変更を伴わない方法を探しています。

回答:


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.