2012-12-18 40 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