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

 

 

Recent Posts

Ошо

Уже поздно возвращаться назад, чтобы все правильно начать, но еще не поздно устремиться вперед, чтобы… Read More

23/05/2021

Шпаргалка по временным формам глагола в английском языке

В английском языке очень сложная система времен (временные формы глагола – Verb Tenses), которая относится… Read More

17/05/2021

Теория цвета – советы для вдохновения веб-дизайнерам

Вы когда-нибудь задумывались о том, как веб-дизайнеры подбирают идеальное сочетание цветов? Интересовались тем, какие цвета… Read More

30/04/2021

Как стать фрилансером – действенные советы

Фриланс – это возможность спокойно и размеренно работать дома, не обращая внимания на окружающее пространство,… Read More

27/04/2021

Самые красивые каньоны со всего мира (часть 1/2)

На протяжении многих сотен тысяч, или даже миллионов лет, быстрое течение рек подтачивало и вымывало… Read More

27/04/2021

Уильям Шекспир

Грехи других судить вы так усердно рветесь, начните со своих и до чужих не доберетесь… Read More

18/04/2021