【问题标题】:magento - How override sales order history block class (Mage_Sales_Block_Order_History)magento - 如何覆盖销售订单历史记录块类(Mage_Sales_Block_Order_History)
【发布时间】:2014-06-08 11:47:25
【问题描述】:

我按照这篇文章过滤了来自客户帐户的订单集合。 "My order" table just with orders from current store view

但现在我试图覆盖该块(app\code\core\Mage\Sales\Block\Order\History.php)但没有成功。他没有做我应用的过滤器

我创建了以下文件:

/app/code/local/Emm/etc/config.xml

<?xml version="1.0"?>
    <config>
        <global>
           <blocks>
              <sales>
                      <rewrite>
                          <history>Emm_Sales_Block_Order_History</history>
                      </rewrite>        
              </sales>
           </blocks>
        </global>
    </config>

/app/etc/modules/Emm_Sales.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Emm_Sales>
            <active>true</active>
            <codepool>local</codepool>
        </Emm_Sales>
    </modules>
</config>

/app/code/local/Emm/Sales/Block/Order/History.php

require_once 'Mage/Sales/Block/Order/History.php';

class Emm_Sales_Block_Order_History extends Mage_Sales_Block_Order_History
{

我忘记了什么? 在 magento 后台(System > Advanced)我可以看到我的模块已启用。

【问题讨论】:

    标签: php magento module overriding block


    【解决方案1】:

    config.xml path有问题

    应该是的

    app/code/local/Emm/Sales/etc/config.xml
    

    来自app/code/local/Emm/etc/config.xml

    还需要修改config.xml

    <?xml version="1.0" ?>
    <config>
        <modules>
            <Emm_Sales>
                <version>1.0.0</version>
            </Emm_Sales>
        </modules>
        <global>
         <blocks>
                <emmsales>
                <class>Emm_Sales_Block</class>
                </emmsales>
                <sales>
                <rewrite>
                              <order_history>Emm_Sales_Block_Order_History</order_history>
                </rewrite>        
            </sales>
        </blocks>
    </config>
    

    试试这个

    【讨论】:

    • 我同意,我更改了配置文件,将文件夹“etc”移动到“销售”,但没有任何反应。
    • 从 yourmagentodir/var/cache 中删除所有文件
    • 如何在 magento2 中覆盖相同的内容?这是链接:magento.stackexchange.com/questions/246603/…
    【解决方案2】:

    错误在 /app/etc/modules/Emm_Sales.xml 文件中。 XML标签区分大小写,所以你需要用大写字母编写codePool,像这样:

    <?xml version="1.0"?> 
    <config>
        <modules>
            <Emm_Sales>
                <active>true</active>
                <codePool>local</codePool>
            </Emm_Sales>
        </modules> 
    </config>
    

    在您的文件中,您编写了代码池而不是代码池。那是错误。

    您还应该添加 order_history 标签,而不仅仅是 history:

    <config>
        <global>
           <blocks>
              <sales>
                      <rewrite>
                          <order_history>Emm_Sales_Block_Order_History</order_history>
                      </rewrite>        
              </sales>
           </blocks>
        </global>
    </config>
    

    【讨论】:

      【解决方案3】:

      尝试更改您的 /app/code/local/Emm/etc/config.xml 文件。

      通过 order_history 更改标签历史

      <?xml version="1.0"?>
      <config>
          <global>
             <blocks>
                <sales>
                        <rewrite>
                            <order_history>Emm_Sales_Block_Order_History</order_history>
                        </rewrite>        
                </sales>
             </blocks>
          </global>
      </config>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-11
        • 1970-01-01
        • 2022-06-15
        • 1970-01-01
        • 2011-12-03
        • 2013-06-07
        • 1970-01-01
        相关资源
        最近更新 更多