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>&amp;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

Tags: Magento

Recent Posts

Правильный выбор качественных игральных карт

Известно, что первые игральные карты были изобретены династией Тан в Китае еще в 9 веке.… Read More

15/11/2020

Как найти новую работу – лучшие тактики

Давно прошли те времена, когда люди получали работу сразу же после окончания учебы, и оставались… Read More

13/11/2020

Лицензирование Zoom в Украине – тарифы и цены

Самоизоляция 2020 года поставила людей в достаточно суровые условия – несмотря на вынужденные карантинные меры,… Read More

10/11/2020

Десятка самых хоккейных городов Украины

Есть ли в Украине хоккей? Многие поклонники этого вида спорта ассоциируют игру с шайбой на… Read More

09/11/2020

Достоинства б/у ноутбуков и критерии выбора техники

Современный рынок компьютерной техники постоянно обновляется, ежегодно предлагая пользователям новые и более мощные модели ПК… Read More

03/11/2020

Самые красивые водопады мира (часть 1)

Водопад – это одно из самых волнующих и красивых творений матушки-природы в мире. По всему… Read More

31/10/2020