如何以编程方式为不同的商店更改magento配置?

时间:2014-10-21 11:00:22

标签: magento

我在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);

没有工作。

如何只为某些商店以编程方式更新选项?那么用户可以查看他想要应用选项的巫婆商店吗?

感谢您的帮助。

2 个答案:

答案 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);