Magento Overwrite in Adminhtml failing


Magento Overwrite in Adminhtml failing

所以我已经尝试了我能想到的一切,对于这个订单信息页面,并用尽了我能想到的每一个搜索,所以现在我需要问。我正在尝试重写管理员>销售订单>查看订单页面。我已经创建了模块来覆盖我认为是该区域的内容,但它变得很时髦。

配置.xml模块

<config>
<modules>
    <Mage_Salespage>
        <version>0.1.0</version>
    </Mage_Salespage>
</modules>
<global>
    <blocks>
        <adminhtml>
            <rewrite>
                <sales_order_view>Mage_Salespage_Block_Sales_Order_View_Info</sales_order_view>
            </rewrite>
        </adminhtml>
    </blocks>
    <helpers>
        <mage_salespage>
            <class>Mage_Salespage_Helper</class>
        </mage_salespage>
    </helpers>
    <models>
        <mage_salespage>
            <class>Mage_Salespage_Model</class>
        </mage_salespage>
    </models>
</global>

模块的信息.php

class Mage_Salespage_Block_Sales_Order_View_Info extends Mage_Adminhtml_Block_Sales_Order_View_Info
{
    protected function _construct()
    {
    $this->setTemplate('salespage/sales/order/view/info.phtml');
    }     
}

问题显示在 https://i.stack.imgur.com/QQ2dZ.png,因为我还没有足够的代表我做错了什么?

Fluffs McKenzie,config.xml 的块类型代码存在问题。

您想要重写类Mage_Adminhtml_Block_Sales_Order_View_Info

根据 magento 它块类型是

adminhtml/sales_order_view_info 但是您重写了admihtml/sales_order_view类.

当块类型adminhtml/sales_order_view_info时,它的类模拟者此过程:

  • adminhtml -> Mage_Adminhtml_Block
  • sales_order_view_info -> Sales_Order_View_Info

那么最后一堂课就Mage_Adminhtml_Block_Sales_Order_View_Info

所以你需要改变

<sales_order_view>Mage_Salespage_Block_Sales_Order_View_Info</sales_order_view>

<sales_order_view_info>Mage_Salespage_Block_Sales_Order_View_Info</sales_order_view_info>

这里可能发生了几件事。 首先,您是否确保将其放在正确的文件夹中? 如果你把它放在block/Adminhtml/sales/order/view.php中,那么你需要调整你的类名和xml声明。 您可以通过在 index.php 文件中打开 DEV 模式来快速检查这一点。

另一件更常见的事情是,如果有另一个模块覆盖此方法。 由于Magento按字母顺序加载模块,因此您可能无法首先覆盖该类。 如果是这种情况,您只需要在app/etc/modules/module.xml文件中添加一个依赖子句。

我会下载这个扩展程序:http://www.magepsycho.com/easy-template-path-hints.html

它允许您通过添加一些 url 参数来运行模板路径提示,并在管理员中工作。 这将向您显示您的产品视图块是否正在使用核心,或者它是否使用其他扩展代码。