0

在 Magento xml 布局或配置文件中,我们可以将 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 中包含存储条件和路径。任何帮助将不胜感激。

4

2 回答 2

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;
        }
    }   
}
于 2013-07-23T08:03:12.330 回答
0

尝试条件扩展 Ifconfig扩展

于 2013-07-24T09:04:23.263 回答