2011-04-28 62 views
9

我試圖更新我的主題佈局XML中現有塊的「類型」參數。 在例子中,我想使用Block「catalog/rewrite_navigation」而不是「catalog/navigation」作爲參考名稱「catalog.topnav」。更新塊類型佈局XML更新

我已經通過閱讀核心PHP文件的佈局,塊,更新等測試了幾種方式,但沒有成功。我只想避免使用unsetChild,然後重新創建一個塊。

「常規」的方法是:

<reference name="top.menu"> 
     <action method="unsetChild"><name>catalog.topnav</name></action> 
     <block type="catalog/rewrite_navigation" name="catalog.topnav" template="catalog/navigation/top.phtml"/> 
    </reference> 

但做你們有一個線索,做這樣的事情,而不是:

<reference name="catalog.topnav"> 
     <action method="setType"><name>catalog/rewrite_navigation</name></action> 
    </reference> 

有了這樣的更新的目錄塊類型.topnav將從「目錄/導航」更新爲「目錄/重寫無效」。

非常感謝您的想法!

回答

7

我從來沒有見過這樣的語法,而且我確實知道Magento在對它執行操作之前創建對象(因爲它需要有一個實例才能在該實例上執行方法)。這讓我相信,沒有辦法通過行動來做到這一點。

還要小心試圖通過取消設置塊並重新添加它來完成此操作。在佈局執行時,其他塊可能已經將子項添加到該塊中,並且在刪除塊時它們將簡單地脫落。

執行此操作的規範方法只是覆蓋實際的catalog/navigation塊,以便它返回您打算使用的類。如果出於某種原因,這對您不起作用(例如,其他人已經覆蓋該塊),則可能需要修改XML文件以反映新的類句柄。

希望幫助!

+0

是的 - 這就是我最後的結果:重寫原始塊類。這總是值得問。謝謝約瑟夫。 – 2011-04-28 23:05:31