php - Magento 本地 block 不会覆盖

标签 php xml magento

我正在尝试用本地代码池中的另一个插件覆盖本地代码池中的插件,但我需要覆盖的 block 没有被覆盖。我的配置 xml 中的助手很好地覆盖了。关于我的问题可能是什么的任何想法?

我还使用了模块冲突检测器并确保我们的 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()) {
    ....
    }
}

最佳答案

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

他们的类已经被覆盖了

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()) {
    ....
    }
}

关于php - Magento 本地 block 不会覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27626770/

相关文章:

c# - 帮助解析 XML,简单字符串 - 但我似乎无法解析它

c# - 将 XML 值反序列化为枚举时处理额外空格

php - 计算 RSS feed 中的项目标签数量(不知道标签名称)

php - 如何在 Magento 的 pdf 中正确显示 `₹`。?

javascript - 如何将 php 变量值输入 javascript

php - 使用 Docker 工具箱 MySQL 连接超时

php - 从 MYSQL 在 PHP 中显示图像?

PHP Foreach 循环添加空白 MySQL 条目

Magento 购物者主题 "add to cart"上的多个购物车顶部标题

php - 如何从 Magento 的主页提供忘记密码的链接?