magento - 如何覆盖销售订单历史记录块类(Mage_Sales_Block_Order_History)

时间:2014-04-23 14:44:28

标签: php magento module override block

我按照这篇文章过滤了客户帐户中的订单集。 "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后台(系统&gt;高级)中,我可以看到我的模块已启用。

3 个答案:

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

试试这个

答案 1 :(得分:1)

错误位于/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>

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

您还应该添加order_history标记而不仅仅是历史记录:

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

答案 2 :(得分:0)

尝试更改/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>