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)