Magento для PHP MVC разработчиков – Конфигурация системы по умолчанию (ч.11/11)
Эта статья является неким дополнением к предыдущим статьям по конфигурации системы, а не целиком отдельной статьей. Если вам многое кажется непонятным, пожалуйста, вернитесь и прочитайте предыдущие статьи.
Когда вы создаете новый узел конфигурации системы, Magento не хранит значения по умолчанию. Это справедливо даже для конфигурации всей системы по умолчанию. Вы можете убедиться в этом, посмотрев на таблицу core_config_data
.
В этой таблице будут храниться только значения, которые были явным образом определены с помощью Консоли администратора или других программных средств.
Если вы будете делать запрос значения пути конфигурации системы, которое не имеет явного значения, Magento проверит глобальное дерево конфигурации по умолчанию. Хотя это и не требуется, рекомендуется устанавливать значения по умолчанию для своих пользовательских переменных конфигурации. Это довольно простой шаг и он гарантирует, что не произойдет чего-то неожиданного, когда будут загружаться пустые значения для ваших переменных конфигурации.
Настройка значений по умолчанию
Как было отмечено ранее, значения по умолчанию сохраняются в глобальном дереве конфигурации (узел global
). Это немного сбивает с толку, поскольку больше ожидается, что эти значения будут храниться в том же файле system.xml
, где настроены пути. Но здесь работает, как и в большинстве вещей Magento, принцип
Нам не стоит ставить под сомнение почему, нам или делать или умереть
который выступает лучшим вариантом решения этого. Попробуйте подумать о глобальной конфигурации как о месте для хранения часто используемых значений, а system.xml
– как о месте, которым вы настраиваете UI для изменения этих значений.
Поэтому, продолжим.
В файле config.xml
модуля добавьте раздел верхнего уровня с названием <default/>
.
<!-- Файл: app/code/local/Packagename/Modulename/etc/config.xml --> <config> <!-- ... --> <default> </default> <!-- ... --> </config>
Это узел верхнего уровня, в котором вы будете хранить значения по умолчанию. Далее, возьмите путь к конфигурации и конвертируйте его в узел XML дерева. Например, если вы устанавливаете значение по умолчанию для следующего нода конфигурации:
design/header/welcome
ваша конфигурация будет выглядеть примерно так:
<!-- Файл: app/code/local/Packagename/Modulename/etc/config.xml --> <config> <!-- ... --> <default> <design> <header> <welcome>Default welcome msg!</welcome> </header> </design> </default> <!-- ... --> </config>
С помощью настройки конфигурации, подобной приведенной выше, запросы к
design/header/welcome
будут возвращать, если значения не переопределялись где-нибудь, дефолтный текст «Default welcome msg!».
Этот пример основан на существующей настройке конфигурации в составе инсталляции Magento. Помните, что большинство функций Magento создано с помощью той же системы модулей, которую вы используете для настройки системы. Давайте посмотрим на фактическую конфигурацию design/header/welcome
значения.
<!-- Файл: app/code/core/Mage/Page/etc/config.xml --> <default> <design> <head translate="default_description" module="page"> <default_title>Magento Commerce</default_title> <default_description>Default Description</default_description> <default_keywords>Magento, Varien, E-commerce</default_keywords> <default_robots>*</default_robots> <default_media_type>text/html</default_media_type> <default_charset>utf-8</default_charset> </head> <header translate="welcome" module="page"> <logo_src>images/logo.gif</logo_src> <logo_alt>Magento Commerce</logo_alt> <welcome>Default welcome msg!</welcome> </header> <footer translate="copyright" module="page"> <copyright>&copy; 2008 Magento Demo Store. All Rights Reserved.</copyright> </footer> </design> </default>
Это полная конфигурация по умолчанию для
design/*
иерархии конфигурации. Разница с нашими предыдущими примерами – это дополнительные атрибуты перевода.
<header translate="welcome" module="page">
Атрибуты «translate
» и «module
» указывают системе, какие узлы нужно перевести и какой Помощник данных модуля следует использовать для перевода. В приведенном выше примере это означает, что узел для приветствия будет переведен:
Mage::helper('page')->__(...);
Помните: если вы вызываете фабрику Помощника без остальной части URI, Magento будет предоставлять данные Помощника по умолчанию.
//одно и то же Mage::helper('page')->__(...); Mage::helper('page/data')->__(...);
Если вы хотите перевести несколько под-узлов, просто разделите имена с помощью запятых:
<example translate="foo,baz,bar" module="page">
Итог
Несмотря на то, что это не является необходимым, рекомендуется устанавливать пути конфигурации системы со значениями по умолчанию. Установив данные по умолчанию в начале, вы будете всегда получать определенное логическое значение, и вам не придется беспокоиться о случаях, когда пользователь может случайно сохранить значение с пустой строкой.
Автор: Alan Storm (https://alanstorm.com/magento_default_system_configuration_values/)
Перевод на русский: SebWeo
- Magento для PHP MVC разработчиков (Alan Storm) – ч.1/11
- Magento для PHP MVC разработчиков – разбор контроллера (ч.2/11)
- Magento для PHP MVC разработчиков – Макеты, Блоки и Шаблоны (ч.3/11)
- Magento для PHP MVC разработчиков – Модели и основы ORM (ч.4/11)
- Magento для PHP MVC разработчиков – Инсталлирование Ресурса (ч.5/11)
- Magento для PHP MVC разработчиков – Расширенный ORM – EAV (ч.6/11)
- Magento для PHP MVC разработчиков – Особая конфигурация системы (ч.7/11)
- Magento для PHP MVC разработчиков – Углубленная настройка системы (ч.8/11)
- Magento для PHP MVC разработчиков – Коллекции Varien Data (ч.9/11)
- Magento для PHP MVC разработчиков – Переопределение и обновляемость системы (ч.10/11)
- Magento для PHP MVC разработчиков – Конфигурация системы по умолчанию (ч.11/11)
Последние посты
Как выбрать идеальный ноутбук: Полный гайд
Выбор ноутбука может быть сложной задачей в мире, где рынок переполнен вариантами на любой вкус… Читать далее
Томас Эдисон
Наша самая большая слабость заключается в том, что мы быстро сдаемся. Самый верный способ добиться… Читать далее
Самые красивые и впечатляющие мосты со всего мира (ТОП-10)
Мост — это нечто большее, чем просто сооружение, соединяющее два берега. Для того, чтобы появился… Читать далее
Соломон
Жизнь нас учит, что свою пару мы познаем, когда разводимся, своих братьев мы познаем, когда… Читать далее
Чак Паланик
Кто может — тот делает. Кто не может — тот критикует Чак Паланик Читать далее
Ричард Бах
Ни одно желание не дается тебе отдельно от силы, позволяющей его осуществить. Хотя, возможно, для… Читать далее