2014-12-23 125 views
3

我想重寫本地代碼池中的插件與本地代碼池中的另一個插件,但我需要重寫的塊不是重寫。我的config xml中的幫助器覆蓋得很好。任何關於我的問題可能是什麼的想法?Magento本地塊不會被覆蓋

我還使用了模塊衝突檢測器,並確保我們在magento實例中沒有任何衝突。

模塊我試圖重寫

應用程序/代碼/本地/ IDEV/OneStepCheckout的/ etc/config.xml中

<blocks> 
    <onestepcheckout> 
     <class>Idev_OneStepCheckout_Block</class> 
    </onestepcheckout> 
</blocks> 

應用程序/代碼/本地/ IDEV/OneStepCheckout /Block/Checkout.php

class Idev_OneStepCheckout_Block_Checkout extends Mage_Checkout_Block_Onepage_Abstract { 
    public function getBillingFieldsOrder($fields = array()){ 
    .... 
    } 
} 

我的模塊

應用的/ etc /模塊/ KNG_OneStepCheckout.xml

<config> 
    <modules> 
     <KNG_OneStepCheckout> 
      <active>true</active> 
      <codePool>local</codePool> 
      <depends> 
       <Idev_OneStepCheckout /> 
      </depends> 
     </KNG_OneStepCheckout> 
    </modules> 
</config> 

應用程序/代碼/本地/ KNG/OneStepCheckout的/ etc/config.xml中

<global> 
    <blocks> 
     <onestepcheckout> 
      <rewrite> 
       <checkout>KNG_OneStepCheckout_Block_Checkout</checkout> 
      </rewrite> 
     </onestepcheckout> 
    </blocks> 
    <helpers> 
     <onestepcheckout> 
      <rewrite> 
       <checkout>KNG_OneStepCheckout_Helper_Checkout</checkout> 
      </rewrite> 
     </onestepcheckout> 
    </helpers> 
</global> 

app/code/local/KNG/OneStepCheckout/Block/Checkout.php

class KNG_OneStepCheckout_Block_Checkout extends Idev_OneStepCheckout_Block_Checkout { 
    public function getBillingFieldsOrder($fields = array()) { 
    .... 
    } 
} 

回答

2

我發現他們的模塊已經有另一個類覆蓋了我想要覆蓋的類。不知道爲什麼當我檢查衝突時沒有顯示爲衝突。

他們班一個已經覆蓋

應用程序/代碼/本地/ IDEV/OneStepCheckout /座/ Fields.php

class Idev_OneStepCheckout_Block_Fields extends Idev_OneStepCheckout_Block_Checkout 
{ 
.... 
} 

爲了讓我重寫工作我只是推翻領域而不是結帳類,它像一個魅力。

工作代碼

應用的/ etc /模塊/ KNG_OneStepCheckout.xml

<config> 
    <modules> 
     <KNG_OneStepCheckout> 
      <active>true</active> 
      <codePool>local</codePool> 
      <depends> 
       <Idev_OneStepCheckout /> 
      </depends> 
     </KNG_OneStepCheckout> 
    </modules> 
</config> 

應用程序/代碼/本地/ KNG/OneStepCheckout的/ etc/config.xml中

<global> 
    <blocks> 
     <onestepcheckout> 
      <rewrite> 
       <fields>KNG_OneStepCheckout_Block_Fields</fields> 
      </rewrite> 
     </onestepcheckout> 
    </blocks> 
    <helpers> 
     <onestepcheckout> 
      <rewrite> 
       <checkout>KNG_OneStepCheckout_Helper_Checkout</checkout> 
      </rewrite> 
     </onestepcheckout> 
    </helpers> 
</global> 

app/code/loca l/KNG/OneStepCheckout/Block/Fields.php

class KNG_OneStepCheckout_Block_Fields extends Idev_OneStepCheckout_Block_Fields { 
    public function getBillingFieldsOrder($fields = array()) { 
    .... 
    } 
} 
+0

不錯的一個。謝謝 –