2012-02-16 14 views
4

こんにちは私はmagentoコアブロックをオーバーライドする際にいくつかの問題があります。 、Magentoブロックは2つの異なるモジュールからオーバーライドします

<blocks> 
    <catalog> 
    <rewrite> 
     <navigation>Othercompany_Othermodule_Block_Navigation</navigation> 
    </rewrite> 
    </catalog> 
</blocks> 

どちらの拡張子が異なるメソッドをオーバーライドし、彼らは互いに当接し知らない:私のモジュールでは、私はMage_Catalog_Block_Navigation

<blocks> 
    <catalog> 
    <rewrite> 
      <navigation>Mycompany_Mymodule_Catalog_Block_Navigation</navigation> 
     </rewrite> 
    </catalog> 
</blocks> 

をオーバーライドする必要があるが、これは、すでに別の会社から別のMagentoの拡張によって上書きされますmagentoは私の会社ではなく、2番目の会社の上書きを読みます。私はモジュールの依存関係を使いたくありません。 2つの拡張機能を壊さない方法はありますか?

+0

http://www.google.com/search?client=safari&rls=en&q=magento+resolving+module+conflicts&ie=UTF-8&oe=UTF-8 –

+0

Magentoが他の会社の記事を読んだのはちょうど幸運です - アルファベット順注文や何かそのようなものですが、適切に両方を使用する方法については、私の回答を参照してください。 – Max

答えて

7

はい、コアブロックを正式に上書きするものを決定する必要があります。そのうちの1つは、オーバーライドを実行していないものを継承し、コアが継承しているものをとします。

My_Custom_Block extends Other_Custom_Block 
Other_Custom_Block extends Mage_Core_Block 
Mage_Core_Block extends Whatever_Magento_Wants 

config.xmlファイルを編集して、My_Custom_Blockだけがコアブロックをオーバーライドするようにします。

<blocks> 
    <catalog> 
    <rewrite> 
      <navigation>Mycompany_Mymodule_Catalog_Block_Navigation</navigation> 
     </rewrite> 
    </catalog> 
</blocks> 
+0

完全な回答を得るには、xml書き換え宣言を追加することをお勧めします。 – OSdave

+0

上記のコード(config.xmlコード)に基づいて、この書き換え宣言をどのように表示するか教えてください。あなたの答えをありがとう – Deskin

0

Thxを最大:

EDIT は、ここであなたが必要とするXMLです。 あなたの例のように、 "My_Custom_Block"は最後の階層クラスでなければならないと思いますので、 "Other_Custom_Block"クラスでは何も触らないでください。

次に、 "Other Company" config.xmlの書き換えルールにコメントするだけです。

関連する問題