我正在尝试用本地代码池中的另一个插件覆盖本地代码池中的插件,但我需要覆盖的 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/