使用magento中的ifconfig删除顶部导航

时间:2012-07-17 13:38:24

标签: magento

我正在开发一个模块,我们的配置为“advanemenu / general / enabled”

通过使用此配置,我可以有条件地向我的magento前端添加项目。

实施例。

<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提前)

2 个答案:

答案 0 :(得分:5)

IfConfig仅适用于操作方法。当你在xml布局中调用action时,这将解析块实例中对funcion的调用。

您可以在以下位置看到:

文件:app / code / core / Mage / core / Model / 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>

然后,只有当您启用了模块时,才会将模板关联到此块,在另一种情况下,您的块没有模板,然后不加载。

答案 1 :(得分:3)

您可以使用unsetchild方法删除任何块。

对于上述情况

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

这对条件删除语句有帮助。