2

在配置 xml 中使用 stores 节点 - 是否可以操纵继承值(即确定网站范围或存储值的复选框)

例如,phone 的配置路径为:General > Store Information > Phone

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

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

但是我如何确保这个值在网站上使用。路径似乎是 phone_inherit 虽然我无法通过 xml 直接定位它

4

1 回答 1

4

复选框的状态取决于是否在 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(未选中);否则,它会在范围 config ( ) 中查找值_configRoot并将 $inherit 设置为 true(选中)。

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

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

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

于 2012-05-14T16:24:14.233 回答