Teg*_*der 1 php magento entity-attribute-value
我注意到Magento会将URL保存到您在core_config_data表格中设置的每个商店使用的徽标.
如果我运行这个SQL:
SELECT *
FROM core_config_data`
WHERE path = 'design/header/logo_src'
Run Code Online (Sandbox Code Playgroud)
我得到了商店列表及其相关徽标.我也得到了一个config_id和一个scope_id.
我希望能够在幕后以编程方式更新这些徽标,但我无法弄清楚如何将此表的数据与商店名称相关联.
config_id并store_id以某种方式链接回另一个建立关系的表.Magento的EAV模型,呃:)
有任何想法吗?
Magento提供了一个API来设置和检索配置值.我写了一篇关于从配置中获取数据的文章.如果下面的任何术语让您感到困惑,您将需要查看它.
至于设置变量,它并不像说"我想将design/header/logo_src"变量设置为"this value"那么简单.您还需要指定要保存值的网站,以及要保存值的商店.
在这里要小心很重要.我没有深入研究系统,看看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();
Run Code Online (Sandbox Code Playgroud)
注意事项,代码为您更新顶级商店/网站配置的徽标将是.
//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();
Run Code Online (Sandbox Code Playgroud)
这条线
Mage::getModel('adminhtml/config_data')
Run Code Online (Sandbox Code Playgroud)
实例化Magento模型.
的'design'在setSection方法以及所述'header'和'logo_src'字符串对应于配置URI
design/header/logo_src
Run Code Online (Sandbox Code Playgroud)
我很确定nulls传递给setWebsite并setStore告诉对象你将这个值保存在顶层.您还可以传入商店和网站ID.(我对此感到有点不稳定,但是当您正常保存徽标时,这就是系统正在做的事情)
该'fields'和'values'被硬编码.该对象的目的是从一个部分中的所有组一次保存多个配置值.
saveAction如果你很好奇,请查看上述控制器中的方法.
最简单,最短的方法是:
Mage::getConfig()->saveConfig('design/header/logo_src', $logo);
Run Code Online (Sandbox Code Playgroud)