在Magento xml layut或配置文件中,我们可以在标签中写入ifconfig作为参数来应用这样的条件
<action method="addLink" translate="label title" module="contacts" ifconfig="contacts/contacts/enabled">
<label>Contact Us</label>
<url>contacts</url>
<title>Contact Us</title>
<prepare>true</prepare>
</action>
我试图找到这个函数的ifconfig替代
Mage::getStoreConfig($path,Mage::app()->getStore());
这样我就可以在ifconfig中包含商店条件和路径。 任何帮助将不胜感激。
答案 0 :(得分:2)
没有内置方法可以做到这一点,主要是因为ifconfig
约束用于当前商店。仅使用一个参数调用Mage::getStroreConfig()
时,当前存储将用作第二个参数。并为当前商店加载布局
但如果你坚持,这里有一个可能的想法,如何做到这一点
布局中的action
标记将在此方法Mage_Core_Model_Layout::_generateAction()
中进行解析和应用。这段代码检查ifconfig
属性。
if (isset($node['ifconfig']) && ($configPath = (string)$node['ifconfig'])) {
if (!Mage::getStoreConfigFlag($configPath)) {
return $this;
}
}
您可以覆盖此方法以允许商店的其他参数。所以你的xml代码看起来像这样:
<action method="someMethod" ifconfig="some/config/path" store="2" />
现在更改上面调用此操作的代码:
if (isset($node['ifconfig']) && ($configPath = (string)$node['ifconfig'])) {
if (isset($node['store'])){//check config setting for supplied store
if (!Mage::getStoreConfigFlag($configPath, $node['store'])) {
return $this;
}
}
else{//default behavior
if (!Mage::getStoreConfigFlag($configPath)) {
return $this;
}
}
}
答案 1 :(得分:0)
尝试Conditive Extended Ifconfig extension