我正在开发一个模块,我们的配置为“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提前)
答案 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>
这对条件删除语句有帮助。