2

我正在尝试覆盖 Magento 管理区域中的 phtml 文件。具体来说,我试图覆盖的文件是:app/design/adminhtml/default/default/template/catalog/form/renderer/fieldset/element.phtml

app/code/local/CompanyName/Website/etc/config.xml,我有:

<rewrite>
    <catalog_form_renderer_fieldset_element>CompanyName_Website_Block_Adminhtml_Catalog_Form_Renderer_Fieldset_Element</catalog_form_renderer_fieldset_element>
</rewrite>

我已放入app/code/local/CompanyName/Website/Block/Adminhtml/Catalog/Form/Renderer/Fieldset/Element.php的覆盖块 PHP 文件。该文件包含:

<?php

class CompanyName_Website_Block_Adminhtml_Catalog_Form_Renderer_Fieldset_Element extends Mage_Adminhtml_Block_Widget_Form_Renderer_Fieldset_Element
{
    public function _construct()
    {
        parent::_construct();

        $this->setTemplate('catalog/form/renderer/fieldset/element.phtml');
    }
}

最后,覆盖模板文件位于app/design/frontend/enterprise/CompanyName/template/catalog/form/renderer/fieldset/element.phtml并包含我要覆盖的实际模板。

我得到一个白屏,在日志中有这个错误:Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 227543041 bytes) in /var/www/html/gold/lib/Varien/Object.php on line 569

有什么想法吗?我在扩展正确的课程吗?文件放置正确吗?等等。在同一个 config.xml 文件中还有其他<rewrite>块可以正常工作,所以我一定是犯了一个错误!

谢谢。

4

1 回答 1

1

这很奇怪,有几个原因。

您似乎只是对更改此块的模板感兴趣。为什么不直接覆盖其默认模板“widget/form/renderer/fieldset/element.phtml”?

你确定你没有像 print_r($someObject->getData()); 这样的东西吗?在您的构造函数或模板中的某个地方?

此外,Mage_Adminhtml_Block_Widget_Form_Renderer_Fieldset_Element::_construct() 只是设置模板文件,因此可能没有理由调用 parent::_construct()。

您是否在构造函数和模板文件中设置了一些 error_log() 以确保它们被调用?该模板的完整路径是什么?即它类似于 /app/design/adminhtml/default/default...?或 /app/design/adminhtml/company/...?如果是后者,我假设您有合适的配置来允许 adminhtml 模板覆盖?

/lib/Varien/Object.php 的第 569 行发生了什么?(我的必须是不同的版本,因为该行在评论中,并且它周围的东西似乎不相关)


编辑:覆盖 adminhtml 模板。将此添加到 /app/etc/local.xml 中的 <config> 节点

<stores>
    <admin>
        <design>
            <package>
                <name>default</name>
            </package>
            <theme>
                <default>companyname</default>
            </theme>
        </design>
    </admin>
</stores>

现在在 /app/design/adminhtml/default/ 中创建一个名为“companyname”的文件夹,并将“template”、“layout”等文件夹放入其中,就像任何主题一样。例如 /app/design/adminhtml/default/companyname/template/widget/form/renderer/fieldset/element.phtml 适合您的情况。

于 2012-12-18T17:26:37.733 回答