2014-06-10 50 views
3

我試圖擴展第三方Magento擴展的類。如何在現有的第三方擴展中重寫/擴展Magento類

我模塊的xml:

配置>模塊>標籤中

<EDPA_MegaNavigation> 

     <active>true</active> 

     <codePool>local</codePool> 

     <depends> 
      <Infortis_UltraMegamenu /> 
     </depends> 

    </EDPA_MegaNavigation> 

我的XML配置:

配置中的>全球>塊>標籤

<ultramegamenu> 

     <rewrite> 

      <Infortis_UltraMegamenu_Block_Navigation>EDPA_MegaNavigation_Block_Navigation</Infortis_UltraMegamenu_Block_Navigation> 

     </rewrite> 

    </ultramegamenu> 

我的擴展類(Navigation.php)具有

class EDPA_MegaNavigation_Block_Navigation extends Infortis_UltraMegamenu_Block_Navigation 
{ 
######## 
} 

在系統>配置>先進EDPA_MegaNavigation列出並顯示爲啓用。

Infortis> UltraMegamenu> Block中的我的目標navigation.php沒有被重寫。

任何幫助/指導非常感謝。

+0

放Infortis> UltraMegamenu>等> config.xml爲作品 –

+0

其中codepool你ultramegamenu模塊位於?在當地還是社區? –

+0

本地代碼池 - 但請檢查阿米特貝拉的答案,因爲這有助於我的擴展工作。 – strawbicus

回答

3

在這裏,在 的問題,如果Infortis_UltraMegamenu模塊塊標記爲ultramegamenu然後

<ultramegamenu> 

     <rewrite> 

      <navigation>EDPA_MegaNavigation_Block_Navigation</navigation> 

     </rewrite> 

    </ultramegamenu> 
+0

完美!我將標記更改爲,刷新了瀏覽器,工作。謝謝阿米特貝拉! – strawbicus

0

您的<rewrite>看起來沒有正確設置,它應該引用另一個配置節點而不是直接類名。檢查UltraMegamenu的​​3210以從中獲取節點。

例如如果UltraMegamenu設置如下:

<blocks> 
    <ultramegamenu> 
     <class>Infortis_UltraMegamenu_Block_Navigation</class> 
    </ultramegamenu> 
</blocks> 

然後你重寫子節點將是「ultramegamenu」,而不是類名。