Сторінку налаштування Magento 2 можна знайти в адмін-панелі Magento 2 > Stores > Configuration.

Усі вкладки та форми цієї сторінки налаштовуються за допомогою файлу

etc/adminhtml/system.xml

який присутній у більшості модулів Magento 2.

Помістіть наступний код у system.xml файл вашого модуля, щоб додати власну секцію:

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <tab id="tab_id" translate="label" sortOrder="110">
            <label>My Tab</label>
        </tab>
        <section id="section_id" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1">
            <class>separator-top</class>
            <label>My Section</label>
            <tab>tab_id</tab>
            <resource>VendorName_ModuleName::acl_path</resource>
            <group id="group_id" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>My Group</label>
                <attribute type="expanded">1</attribute>
                <field id="field_id" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>My YesNo Field</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
            </group>             <group id="group_id2" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>My Group2</label>
                <attribute type="expanded">1</attribute>
                <field id="field_id" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>My YesNo Field</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
            </group>         </section>
    </system>
</config>

Очистіть Configuration-кеш Magento 2 (це можна зробити у System > Cache Management). Оновіть сторінку конфігурації. Перед вами відкриється нова вкладка:

Використовуйте xml element <tab>, при створенні нової табуляції. При цьому tab_id повинно бути унікальним.

  • <resource> служить для розмежування прав доступу до секції. Про них ви можете дізнатись більше у цій статті.
  • <attribute type="expanded">1</attribute> вказує на те, що група по замовчуванні розгорнута.
  • <source_model> ідентифікує модель, яка відповідає за дані, що потраплять у поле. Source Model, зокрема, використовується для випадаючих списків.
  • showInStore  вказує на  доступність елементу для редагування на рівні Store View, showInWebsite - на рівні Website, showInDefault - на глобальному рівні. Перемикати рівні конфігурації можна за допомогою випадаючого списку  "Store View", що знаходиться у верхній лівій частині, під назвою сторінки.
  • type вказує на тип елементу, sortOrder - на позицію, translate вказує, які властивості доступні для перекладу на інші мови. Рекомендуємо використовувати у своїх модулях sortOrder з кроком 10.

 

Розширення існуючих секцій

За допомогою sytem.xml можна не лише створювати нові секції, але й розширювати існуючі. Все, що необхідно - відтворити структуру секцій та груп без використання атрибутів, лейблів (label) і помістити у них нові поля. При побудові сторінки конфігурації Magento 2 збирає system.xml файли зі всіх модулів та поєднує (мерджить) їх.

 

У прикладах ми створюємо модуль для поширених запитань (FAQ). Змінений код модуля можна переглянути на GitHub.

 

Читайте більше, щоб дізнатись, як задати значення по замовчуванні для полів на сторінці конфігурації Magento 2.