2012-07-17 80 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