Magento Local Block不会覆盖

时间:2014-12-23 19:27:49

标签: php xml magento

我试图用本地代码池中的另一个插件覆盖本地代码池中的插件,但是我需要覆盖的块不会覆盖。我的配置xml中的帮助程序覆盖得很好。关于我的问题可能是什么?

我还使用了模块冲突检测器,并确保我们的magento实例中没有任何冲突。

模块我试图覆盖

应用程序/代码/本地/ IDEV / OneStepCheckout的/ etc / config.xml中

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

应用程序/代码/本地/ IDEV / OneStepCheckout /砌块/ 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>

应用程序/代码/本地/ KNG / OneStepCheckout /砌块/ Checkout.php

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

1 个答案:

答案 0 :(得分: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>

应用程序/代码/本地/ KNG / OneStepCheckout /砌块/ Fields.php

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