【问题标题】:Magento Local Block Won't OverrideMagento 本地块不会覆盖
【发布时间】:2015-02-21 23:22:15
【问题描述】:

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

我还使用了 Modules Conflict Detector 并确保我们的 magento 实例中没有任何冲突。

我要覆盖的模块

app/code/local/Idev/OneStepCheckout/etc/config.xml

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

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

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

我的模块

app/etc/modules/KNG_OneStepCheckout.xml

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

app/code/local/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()) {
    ....
    }
}

【问题讨论】:

    标签: php xml magento


    【解决方案1】:

    我发现他们的模块已经有另一个类覆盖了我试图覆盖的类。不知道为什么当我检查冲突时它没有显示为冲突。

    他们已经覆盖的类

    app/code/local/Idev/OneStepCheckout/Block/Fields.php

    class Idev_OneStepCheckout_Block_Fields extends Idev_OneStepCheckout_Block_Checkout
    {
    ....
    }
    

    为了让我的覆盖工作,我只是覆盖了字段类而不是结帐类,它就像一个魅力。

    工作代码

    app/etc/modules/KNG_OneStepCheckout.xml

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

    app/code/local/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/local/KNG/OneStepCheckout/Block/Fields.php

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

    【讨论】:

      猜你喜欢
      • 2014-12-31
      • 2014-05-21
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多