2012-07-17 61 views
1

我正在一個模塊上用ifconfig頂部導航中,我們有一個配置爲「advanemenu /一般/啓用」刪除在Magento

通過使用這個配置我能夠有條件地將項目添加到我的Magento前端。

Ex。

<reference name="head"> 
    <action method="addItem" ifconfig="advancemenu/general/enabled"><type>skin_css</type><name>css/advancemenu.css</name></action> 
</reference> 

現在同樣我想刪除頂部的導航,如果啓用配置值。

我嘗試以下,但沒有任何結果......

<remove ifconfig="advancemenu/general/enabled" name="catalog.topnav" /> 

櫃面使用ifconfig可與<action>那麼有沒有辦法使用這種方法來去除頂部導航。

如果有人知道如何做到這一點,請幫助我。 (Thnx在先)

回答

5

IfConfig只能使用動作方法。當你在xml佈局中調用動作時,這會在塊實例中調用funcion。

你可以看到這一點:

文件:應用程序/代碼/核心/法師/核心/型號/左右線layout.php中289

protected function _generateAction($node, $parent) 
    { 
     if (isset($node['ifconfig']) && ($configPath = (string)$node['ifconfig'])) { 
      if (!Mage::getStoreConfigFlag($configPath)) { 
       return $this; 
      } 
     } 

但這個更多鈔票的解決方案是增加模板只有在真實值的情況下。例如

<reference name="head"> 
    <action method="setTemplate" ifconfig="advancemenu/general/enabled"> 
     <template>route/to/template</template> 
    </action> 
</reference> 

那麼,只有當你有讓您的模塊,你有模板聯想到這一塊,在另一種情況下,你的塊鴕鳥政策有模板,然後鴕鳥政策負荷。

+0

嗨,感謝您的答案我有辦法添加模板。但是當我的模塊被啓用時,我想刪除默認的magento頂部導航。可以通過使用類似的方法來完成,就像你解釋的添加模板頭部一樣。 – dashbh 2012-07-17 14:30:02

+0

爲什麼不刪除頂部的導航,並添加您的自定義頂部導航與設置模板方法。 – davidselo 2012-07-17 14:47:41

+0

HI,u能請給我perticular代碼,我嘗試,但沒有工作..' \t <刪除名稱= 'catalog.topnav'/> \t \t <引用名= 「top.menu」> \t \t \t <操作方法= 「插入」 的ifconfig = 「advancemenu /普通/啓用」> \t \t \t 目錄/導航 \t \t \t \t \t ' – dashbh 2012-07-17 15:05:14

3

您可以使用unsetchild方法刪除任何塊。

針對上述案例

<reference name="top.menu"> 
      <action method="unsetChild" ifconfig="advancemenu/general/enabled"> 
       <name>catalog.topnav</name> 
      </action> 
     </reference> 

這將有助於爲條件刪除語句。

+1

這是最好的方法。但請注意,unsetChild使用塊別名,而不是塊名稱。 – mimarcel 2015-05-21 09:08:24