我在magento配置中有一个自定义选项列表,当用户点击" Save Config"时,我需要以编程方式更改它们。一般来说,使用观察者完成它并不是一个大问题,但我需要有一个选项,如"选项包"如果用户选择其中一个包,则必须以编程方式更改相应的选项。这也不是什么大问题:
Mage::getConfig()->saveConfig('path/to/config/', 1, 'default', 0);
Mage::getConfig()->saveConfig('path/to/config2/', 1, 'default', 0);
但问题是我不能让它适用于不同的商店,它只适用于默认范围。例如:
Mage::getConfig()->saveConfig('path/to/config2/', 1, 'german', 0);
没有工作。
如何只为某些商店以编程方式更新选项?那么用户可以查看他想要应用选项的巫婆商店吗?
感谢您的帮助。
答案 0 :(得分:3)
试试这个:
$storeCode = 'german';
$store = Mage::getModel('core/store')->load($storeCode);
$path = 'path/to/config';
$config = Mage::getModel('core/config_data');
$config->setValue('Your value here');
$config->setPath($path);
$config->setScope('stores');
$config->setScopeId($store->getId());
$config->save();
答案 1 :(得分:2)
查看函数的定义:
public function saveConfig($path, $value, $scope = 'default', $scopeId = 0)
范围实际上只能包含3个值:'默认''存储'或者'网站'。 让我们假设您的德国商店有3作为Id,这里是可行的代码:
$config = Mage::getModel('core/config');
$config->saveConfig('path/to/config/', 'value_to_set', 'stores', 3);
对于网站范围的配置:
$config->saveConfig('path/to/config/', 'value_to_set', 'websites', $websiteId);