Magento提供了一个API来设置和检索配置值。我写了一篇关于fetching data out of the config的文章。如果您有任何下列术语使您感到困惑,您将需要查看它。
至于设置变量,它并不像说“我想将design/header/logo_src”设置为“this value”那么简单。您还需要指定要为其保存值的网站以及要保存其值的存储区。
在这里要小心很重要。我没有深入研究系统,看看Magento是否在后端/资源级别或仅在UI级别强制执行“show for website,show for site”配置值的粒度。我的直觉说这是后者,这意味着你最终可能会在网站/商店层面保存一个价值,而这个价值并不打算在这个层面上被保存下来,这可能会导致可怕的未定义行为。
在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的模型。
中setSection
方法还有'header'
和'logo_src'
串'design'
对应配置URI
design/header/logo_src
我敢肯定的null
秒后,以setWebsite
和setStore
告诉你保存对象这个值在顶层。您还可以传入商店和网站ID。 (对此我有点不稳定,但是当您保存标志时通常这就是系统正在做的)
'fields'
和'values'
是硬编码的。该对象的目的是从一个节中的所有组一次保存多个配置值。
如果您好奇,请在上述控制器中签出saveAction
方法。
谢谢你,对我来说是非常有益的。 – Rakward 2010-08-30 11:36:24