Система хранения конфигов в мадженто устроена очень просто, в ней есть как плюсы, так и минусы…
Рассмотрим по-порядку:
1. Для чего нужна система конфигов
Это универсальная система хранения системных переменных. Во избежание хардкода все параметры можно изменить когда нужно, прочитать, сравнить и т.д. Каждый модуль нуждается в конфигурировании, в 99% случаях эти конфиги нужно будет изменить со временем – это и является основной причиной востребования системы конфигов.
2. Как выглядит система для разработчика
При создании своего модуля, разработчик может создать для него конфиги, которые, собственно будет потом использовать.
Изначально конфиги задаются в файле config.xml и выглядят примерно так…
Допустим я переписываю USA/UPS модуль и хочу добавить в админку некие параметры…
<config> <default> <carriers> <ups> <overprice>7</overprice> </ups> </carriers> </default> </config>
Я добавил параметр overprice и задал ему значение по умолчанию «7″.
Конечно, можно было подумать что это всё равно хардкод, но нет!
Если в system.xml прописать следующее, то этот параметр появится в админке, и его можно будет изменить
<config> <sections> <carriers> <groups> <ups> <fields> <overprice translate="label"> <label>Flat shipping fee for all parts/accessories purchases totaling less than minimum order amount for free shipping</label> <frontend_type>text</frontend_type> <sort_order>333</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </overprice> </fields> </ups> </groups> </carriers> </sections> </config>
В разделе Shiping methods / UPS мы обнаружим данное поле конфига.
3. Как достать конфиг когда мне надо?
Примерно так… хотя у большинства модулей есть готовые функции
public function getConfigData($field)
{
if (empty($this->_code)) {
return false;
}
$path = 'carriers/'.$this->_code.'/'.$field;
return Mage::getStoreConfig($path, $this->getStore());
}
4. Плюсы и минусы
Хочу выделить по одному большому достоинству и недостатку…
Очень удобная система в плане использования – это огромный плюс. Не надо заморачиваться на сохранение, изменение и вытаскивание данных… в Magento уже всё реализовано.
Огромный минус – это то, что при изменении значений конфига создаются записи в табличке core_config_data (ну не в xml же сохранять изменения). На некоторых проектах я видел уже в процессе разработки около 10000 записей конфига. При всем при этом в момент запроса происходит поиск значения параметра как в базе данных так и в xml файлах. Это способствует значительному увеличению времени работы скрипта.
Похожие Magento-статьи:












