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

Инструкция по скачиванию видео с сервиса TikTok (бесплатно и без watermark)

Если вы еще не слышали о TikTok, тогда рекомендуем вам сначала ознакомиться с этим кратким… Read More

17/09/2020

Что есть в бюджетном ноутбуке – на какие характеристики рассчитывать?

Прошли те времена, когда приличный ноутбук стоил от 1000 долларов. Сегодня можно купить довольно неплохой… Read More

16/09/2020

Что лучше – цифровое телевидение Т2 или интернет-телевидение?

Современную жизнь невозможно представить без телевидения. Оно позволяет узнавать о событиях в Украине и мире,… Read More

02/09/2020

Гипоаллергенная подушка. Для чего она важна?

Сейчас найдется мало людей, у которых нет аллергии на продукты или пыльцу растений. Считается, что… Read More

28/08/2020

Футбольный Инстаграм: что нового у топовых футболистов

Некоторые известные футболисты тщательно скрывают свои личную жизнь, а другие - активно постят фотографии с… Read More

24/08/2020

Виды и типы компрессионных чулков

Изделия называют компрессионными, когда их применяют для лечения, а также профилактики нарушений кровотока в нижних… Read More

22/08/2020