Magento config xml - 继承值

时间:2012-05-13 21:19:17

标签: magento

在config xml中使用stores节点 - 是否可以操作继承值(即确定网站范围或商店价值的复选框)

因此,例如,一般电话的配置路径是:General>商店信息>电话

所以在xml中我将其定位为:

<stores>
        <my_store_code>
            <general>
                <store_information>
                    <phone>111 222 333</phone>
                </store_information>
            </general>
        </my_store_code>
    </stores>

但是我如何确保在网站上使用此值。该路径似乎是phone_inherit,虽然我无法直接通过xml

进行定位

1 个答案:

答案 0 :(得分:3)

复选框的状态取决于是否在core_config_data表中设置了值。

你可以在Mage_Adminhtml_Block_System_Config :: initFields()中看到这个: 第295行(Magento 1.7.0.0):

if (isset($this->_configData[$path])) {
    $data = $this->_configData[$path];
    $inherit = false;
} else {
    $data = $this->_configRoot->descend($path);
    $inherit = true;
}

_configData是从core_config_data表加载的路径/值数组。如果设置了路径(在数据库中),它将使用该值并将$ inherit设置为false(未选中);否则,它会在范围配置(_configRoot)中查找值,并将$ inherit设置为true(已选中)。

范围配置基于您在“当前配置范围”下在管理中设置的内容。因此,如果您选择了商店视图,它会在general/store_information/phone下查找stores/my_store_code值。根据您的配置,这可能会返回商店价值,网站价值,默认值或什么都没有;商店值覆盖网站值,网站值覆盖默认值。

这意味着,在配置中,没有办法明确说“从网站继承”。相反,Magento通过在更改“使用网站/默认”复选框的值时添加/删除数据库中的值来模仿这一点。取消选中该框并输入自定义值时,Magento会在core_config_data中添加一行。同样,如果您选择使用“网站/默认”值,Magento将删除该行并查看范围配置。

例如,您可以选中“使用网站”,但如果您在config.xml文件中指定了商店值,Magento将使用商店值。有点混乱,但它是如何工作的。因此,如果您希望商店使用网站价值,则需要删除商店配置xml以获取该值。