Как в Magento 2 изменить значение по умолчанию настроечной опции?

(Дмитрий Федюк) #1

Значения по умолчанию настроечных опций в Magento 2 задаются точно также, как и в Magento 1: в секции «default» файла etc/config.xml модуля.
Например, значение по умолчанию опции «Общие» → «Оформление» → «Шапка» → «Текст приветствия» определяется в файле etc/config.xml модуля Magento_Theme так:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../Core/etc/config.xsd">
    <default>
        (...)
        <design>
            (...)
            <header translate="welcome">
                (...)
                <welcome>Default welcome msg!</welcome>
            </header>
        </design>
    </default>
</config>

Если администратор не меняет вручную значение этой опции посредством административного интерфейса в разделе «Магазины» → «Настройки», то на витрине отображается значение по умолчанию:

В Magento 2, как и в Magento 1, можно изменить значение по умолчанию настроечной опции, указав своё значение в файле etc/config.xml своего модуля по тому же пути XML, что и в оригинальном файле etc/config.xml модуля ядра, при этом не нужно дублировать весь оригинальный файл ядра, а достаточно указать в своём файле etc/config.xml только те ветки XML, значения которых поменялись, например:

<?xml version="1.0"?>
<config
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="../../../Magento/Core/etc/config.xsd"
>
    <default>
        <design>
            <header>
                <welcome>Добро пожаловать!</welcome>
            </header>
        </design>
    </default>
</config>

Обратите внимание, что в Magento 2, в отличие от Magento 1, отсутствуют области программного кода.
В Magento 1 наличие областей программного кода гарантировало, что настойки сторонних модулей, размещённые в областях local и community, всегда будут применяться после настроек моделей ядра (которые размещены в программной области core), и, таким образом, в Magento 1 настройки сторонних модулей всегда переопределяют настройки ядра.
Однако, в Magento 2 области программного кода отсутствуют.
Чтобы в Magento 2 настройки стороннего модуля загружались после настроек ядра (и, тем самым, перекрывали настройки ядра), важно, чтобы система загружала сторонний модуль после модулей ядра.
Как будет устанавливаться порядок загрузки в промышленной версии Magento 2 — на сегодня неизвестно, однако в текущей версии Magento 2 0.42.0-beta2 порядок загрузки модулей определяется порядком их перечисления в файле app/etc/config.php.
Чтобы настройки стороннего модуля имели приоритет перед настройками модулей ядра, описывайте свои модули в конце списка модулей файла app/etc/config.php.

0 Likes