【问题标题】:Overriding a Magento Adminhtml template file覆盖 Magento Adminhtml 模板文件
【发布时间】:2012-07-06 02:07:12
【问题描述】:

我正在尝试覆盖页面上的特定块,在本例中是 Sales_Order_View_History 模板。我看到的问题是这个块已经被覆盖了。

覆盖这个块的自定义模块使用了一个观察者,它基本上是:当要加载 History.php 时,加载 Historytwo.php。 History.php 也被用于后端的两个独立页面。我只能在一页上覆盖它。这让我完全迷失了。我确实相信我想要覆盖模板的模块只是覆盖我想要覆盖的那个。

我认为普遍接受的覆盖块的格式是:

<adminhtml>
    <rewrite>
       <sales_order_view_companyhistory>
       Namespace_Package_Blocks_Adminhtml_Sales_Order_View_Companyhistory_Content</

上面的代码给了我一个损坏的布局,它停止了大多数块/模板的渲染。

【问题讨论】:

    标签: php xml zend-framework magento configuration


    【解决方案1】:

    如果其他模块在“adminhtml_block_html_before”事件中使用了观察者,您是否尝试过重写他们的观察者模型以使其按照您的意愿行事?
    同时,你也可以在同一个事件上添加你自己的观察者,这会做同样的事情,但只有在另一个模块未启用时(例如,通过检查Mage::helper('core')-&gt;isModuleEnabled()),这样它才能工作在所有情况下。

    【讨论】:

    • 我想用它来覆盖模块,所以我希望在启用该模块时完成。然而,看起来我是通过抛出一个新的观察者来让它工作的。
    【解决方案2】:

    这两个配置sn-ps会重写两个单独的类名。

    sales 映射到Mage/Sales/etc/config.xml:

    global/blocks/sales/class>Mage_Sales_Block
    

    adminhtml 映射到Mage/Adminhtml/etc/config.xml:

    global/blocks/adminhtml/class>Mage_Adminhtml_Block
    

    【讨论】:

    • 这些最终会重写同一个模板文件吗?或者您是说这些是网站的两个独立部分?还有一个原始问题,我想我想覆盖另一个自定义模块,我还没有看到任何可用的信息。我想这并不像覆盖原来那么简单。
    • 查看后,他们似乎并没有覆盖 Block 部分中的模板,而是覆盖了 adminhtmlBlockHtmlBefore()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    相关资源
    最近更新 更多