Magento на русском

Новости, обмен опытом, база знаний для разработчиков.

Система конфигов в Magento

Система хранения конфигов в мадженто устроена очень просто, в ней есть как плюсы, так и минусы…
Рассмотрим по-порядку:

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-статьи:

  1. Как изменить тему в админке Magento
  2. Как правильно перенести базу Magento?
  3. Пошаговая инструкция установки Magento
  4. Проблемы при написании модуля
  5. Структура базы данных Magento
  6. Подключение своего модуля к Magento
  7. Как отправить письмо в Magento?

The URI to TrackBack this entry is: http://magento.verych.ru/2009/07/%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0-%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d0%be%d0%b2-%d0%b2-magento/trackback/

Оставить комментарий

© 2009-2012 Magento по-русски 99% авторских статей