1.3 Використання конфігурації XML і область видимості змінних
XML конфігурація Magento розділена на декілька файлів, залежно від призначення. Це допомагає уникнути одного дуже великого файлу конфігурації.
module.xml
acl.xml
config.xml
crontab.xml
di.xml
email_templates.xml
events.xml
indexer.xml
adminhtml/menu.xml
mview.xml
[area]/routes.xml
adminhtml/system.xml
view.xml
webapi.xml
widget.xml
Визначте, як використовувати файли конфігурації в Magento
Які конфігураційні файли відповідають різним функціям і можливостям?
📌 MAGENTO 1
XML конфігурація Magento 2 має зовсім інший вигляд, ніж у Magento 1. Оскільки в Magento 2 прийнято конвенцію PSR-4, багато шаблонів, що були розташовані в теці etc/config.xml
в Magento 1, були видалені. Є кілька заздалегідь визначених шляхів (таких як /Setup
), але практично все інше залишилось для вас, щоб ви могли організувати оптимальне компонування модуля.
Крім того, Magento 2 підтримує конфігурування, засноване на області видимості (areas). Це можна побачити в vendor/magento/magento-catalog/etc/ де є такі теки: adminhtml
, frontend
, webapi_rest
, webapi_soap
. Конфігурація в цих теках завантажується тільки в тому випадку, якщо в цій області ініціалізується Magento. Наприклад, під час перегляду панелі адміністратора конфігурація, знайдена в frontend
, webapi_rest
або webapi_soap
, не завантажується.
Ми обговоримо найважливіші XML-файли, які можна знайти в теці /etc
.
module.xml
Це єдиний обовʼязковий файл конфігурації. Він визначає поточну версію модуля і порядок завантаження модулю.
Наприклад: vendor/magento/module-catalog/ etc/config.xml
acl.xml
Цей файл визначає права доступу до захищених (protected) ресурсів.
Наприклад: vendor/magento/module-catalog/etc/acl.xml
config.xml
Цей файл завантажує конфігурацію за замовчуванням у Store→Configuration. Це так само те місце, де конфігураційні записи можуть бути позначені як зашифровані (encrypted) (пароль).
Наприклад: vendor/magento/module-fedex/etc/config.xml
crontab.xml
Цей файл визначає дії (actions), які мають бути запущені за розкладом.
Наприклад: vendor/magento/module-catalog/etc/crontab.xml
di.xml
Цей файл конфігурує впровадження залежностей (dependency injection) для вашого модуля. Це, можливо, найбільш часто використовуваний файл під час кастомізації Magento. Тут оголошуються плагіни, виконується заміна класів, конкретні класи вказуються для інтерфейсів, відбувається налаштування віртуальних типів, а також тут можуть бути оголошені або змінені аргументи конструктора.
Дуже важливо ознайомитися з можливостями цього файлу.
Наприклад: vendor/magento/module-catalog/etc/di.xml
email_templates.xml
Цей файл визначає email шаблони, які використовуються в Magento. Id шаблону це зчеплений (concatenated) шлях у стилі XML, до того місця в системі, де визначено конфігураційний шаблон.
Наприклад: vendor/magento/module-customer/etc/email_templates.xml
events.xml
Цей файл реєструє слухача подій (event listeners). Цей файл часто можна помістити в певну область видимості.
Наприклад: vendor/magento/module-catalog/etc/frontend/events.xml
indexer.xml
Цей файл налаштовує індексатори Magento.
Наприклад: vendor/magento/module-catalog/etc/indexer.xml
adminhtml/menu.xml
Цей файл налаштовує меню в admin частини Magento.
Наприклад: vendor/magento/module-customer/etc/adminhtml/menu.xml
mview.xml
Ініціює тип події (event), коли дані змінюються в стовпчику бази даних (матеріалізовані подання (materialized views)). Це найчастіше використовується для індексації.
Наприклад: vendor/magento/module-catalog/etc/mview.xml
[area]/routes.xml
Цей файл повідомляє Magento, що ця область (area) приймає веб-запити. Вузол маршруту (route node) налаштовує першу частину дескриптора макету (handle layout) (ідентифікатор маршруту (route ID)) та ім'я фронт частини (front name) (перший сегмент в URL-адресі після імені домену).
adminhtml/system.xml
Цей файл визначає вкладки конфігурації, розділи, групи та поля, знайдені в конфігурації магазину (Store Configuration).
Наприклад: vendor/magento/module-customer/etc/adminhtml/system.xml
view.xml
Цей файл аналогічний config.xml, але використовується для зазначення значень за замовчуванням для конфігурації дизайну.
Наприклад: vendor/magento/theme-frontend-luma/etc/view.xml
webapi.xml
Цей файл налаштовує доступ до API і маршрути (routes).
Наприклад: vendor/magento/module-catalog/etc/webapi.xml
widget.xml
Цей файл налаштовує віджети для використання в продуктах, сторінках CMS і блоках CMS.
Наприклад: vendor/magento/module-catalog/etc/widget.xml
Визначте, як використовувати файли конфігурації в Magento
XML конфігурація Magento завантажується в міру необхідності. Коли необхідний di.xml
, Magento знаходить усі файли di.xml
і об'єднує їх разом.
Використовувати файл конфігурації дуже просто: створіть цей файл у теці /etc/
. Найкраще якщо файл буде обмежений конкретною областю видимості (area), наприклад frontend
або adminhtml
. Скопіюйте створений раніше файл з іншого модуля, щоб почати з шаблону, який точно працює.
Ви також можете створювати власні файли конфігурації. Для цього потрібно кілька дій:
- XSD - який визначає схему для перевірки файлів конфігурації.
- Створений VirtualType який розширює
Magento\Framework\Config\Reader\Filesystem
та визначаєconverter
,schemaLocator
,fileName
. - Клас
Converter
який реалізуєMagento\Framework\Config\ConverterInterface
- Клас
SchemaLocator
який реалізуєMagento\Framework\Config\SchemaLocatorInterface
- Клас
Data
який розширюєMagento\Framework\Config\Data
🔗 Корисні посилання:
Які конфігураційні файли відповідають різним функціям і можливостям?
Здебільшого використовуються файли, які детально описані вище. Деякі менш популярні файли:
address_formats.xml
: типи виведення для адресиextension_attributes.xml
: універсальна система розширення сутностейproduct_options.xml
: типи параметрів продукту (текст, файл, вибір (select) тощо)product_types.xml
: зберігає типи товарів (прості, настроювані тощо)
🔗 Корисні посилання: