Magento 提供了一个 API 来设置和检索配置值。我写了一篇关于从配置中获取数据的文章。如果以下任何术语使您感到困惑,您将需要查看它。
至于设置变量,并不是说“我想将design/header/logo_src”变量设置为“这个值”那么简单。您还需要指定为哪个网站保存值,以及为哪个商店保存值。
在这里要小心很重要。我还没有深入研究系统,看看 Magento 是否在后端/资源级别或仅在 UI 级别执行配置值的“显示网站,显示网站”粒度。我的直觉说是后者,这意味着您最终可能会在网站/商店级别保存一个原本不打算在该级别保存的值,这可能导致可怕的未定义行为。
在 1.4 社区版中,您可以看到 Magento 将配置值保存在以下位置
File: app/code/core/Mage/Adminhtml/controllers/System/ConfigController.php
//around line 126
Mage::getModel('adminhtml/config_data')
->setSection($section)
->setWebsite($website)
->setStore($store)
->setGroups($groups)
->save();
请注意,您只更新顶级商店/网站配置的徽标的代码将是。
//create a groups array that has the value we want at the rigth location
$groups_value = array();
$groups_value['header']['fields']['logo_src']['value'] = 'images/logo.gif';
Mage::getModel('adminhtml/config_data')
->setSection('design')
->setWebsite(null)
->setStore(null)
->setGroups($groups_value)
->save();
线
Mage::getModel('adminhtml/config_data')
实例化一个 Magento 模型。
'design'
方法中的setSection
以及'header'
和'logo_src'
字符串对应于配置 URI
design/header/logo_src
我很确定null
s 传递给setWebsite
并setStore
告诉对象您将这个值保存在顶层。您还可以传递商店和网站 ID。(我对此有点动摇,但是当您正常保存徽标时,这就是系统正在做的事情)
'fields'
和'values'
是硬编码的。该对象的目的是一次从一个部分的所有组中保存多个配置值。
saveAction
如果您好奇,请查看上述控制器中的方法。