Magento предоставляет API для установки и получения значений конфигурации. Я написал статью о извлечении данных из конфига . Вы можете просмотреть его, если любая из приведенных ниже терминов смущает вас.
Что касается установки переменных, это не так просто, как сказать «Я хочу установить переменную design / header / logo_src» на «это значение». Вам также необходимо указать, для какого веб-сайта вы сохраняете значения, и для какого магазина вы сохраняете значения.
Здесь важно быть осторожным. Я не смотрел вглубь системы, чтобы убедиться, что Magento обеспечивает гранулярность «показать для веб-сайта, показать для сайта» значений конфигурации на уровне бэк-энда / ресурса или только на уровне пользовательского интерфейса. Мои инстинкты говорят, что это позже, что означает, что вы можете в конечном итоге сохранить значение на уровне веб-сайта / магазина, которое не было предназначено для сохранения на этом уровне, и это может привести к страшному неопределенному поведению.
В версии 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
переданы setWebsite
и setStore
, чтобы сообщить объекту, что вы сохраняете это значение на верхнем уровне. Вы также можете передать в магазине и идентификаторы сайта. (Я немного потрясен этим, но когда вы сохраняете логотип нормально, это то, что делает система)
'fields'
и 'values'
жестко закодированы. Цель объекта - сохранить сразу несколько значений конфигурации из всех групп в разделе.
Проверьте метод saveAction
в вышеприведенном контроллере, если вам интересно.