2012-12-18 38 views
2

我试图覆盖Magento的管理区域内的phtml文件。具体来说,我试图重写文件是:应用程序/设计/ adminhtml /默认/缺省的/模板/目录/表格/渲染/字段集/ element.phtmlMagento:覆盖Adminhtml模板导致内存限制耗尽

应用程序/代码/本地/公司名称/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> 

我已经放入应用程序/代码的首要块PHP文件/本地/公司名称/网站/座/ Adminhtml /目录/表格/渲染/ Fieldset/Element.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'); 
    } 
} 

最后,最重要的模板文件是在应用程序/设计/前端/企业/公司名称/模板/目录/表格/渲染/字段集/ 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>块,它工作得很好,所以我一定犯了一个错误!

谢谢。

回答

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添加到<配置>节点现在

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

使文件夹在/ app /设计/ adminhtml /默认/命名为“公司名称”,并把“模板”,“布局'等文件夹里面,因为你会任何主题。例如/app/design/adminhtml/default/companyname/template/widget/form/renderer/fieldset/element.phtml。

+0

这是我的理解是,你不能简单地覆盖adminhtml模板,你必须创建一个模块来做到这一点。这是不正确的?在Google上搜索“magento override adminhtml模板”会产生非常不一致的结果,其中没有一个是明确的。甚至还有这样令人费解,似乎方法,通过Inchoo,[这里](http://inchoo.net/ecommerce/magento/how-to-override-magento-admin-view-template-files-quick-and-dirty-way/ )。 有没有更简单的方法? – WackGet

+0

你当然可以! (至少是我在...的版本)我会更新我的答案。 –

+0

谢谢!这确实有效(尽管我将''更改为'')。有什么办法可以使它成为“真正的模块化”:即编辑模块文件夹本身中的/etc/config.xml文件,而不是全局应用程序/ etc/config.xml文件? – WackGet