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

15 фактов о сети интернет

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

04/03/2021

Что делать, если ломается домашняя техника?

Представьте себе, что у вас есть компьютер, на котором вы активно работаете: правите документы, играете… Read More

26/02/2021

Мать Тереза

Если молитва – это твое обращение к Богу, то интуиция – это разговор Бога с… Read More

17/02/2021

Особенности маркировки косметики

Косметическая продукция – товары, принадлежащие к особой категории. Упаковка должна соответствовать ряду требований. Важно, чтобы… Read More

16/02/2021

Основные компоненты системы раздвижных дверей (купе)

Раздвижные двери купе – это стильный и современный способ добавить индивидуальности вашему дому. Они не… Read More

12/02/2021

Удивительные места Украины для отдыха душой и телом

Украину можно смело назвать не только одной из самых старейших стран в Европе, но и… Read More

05/02/2021