Система в Magento 2 складається з декількох типів компонентів: теми, модулі, бібліотеки, мовні пакети. А фреймворк Magento 2 пропонує розробникам готовий набір базової логіки, бібліотек і PHP-коду, які успадковуються всіма компонентами системи.
Модулі і теми Magento 2 використовуються в якості елементів для кастомізації: модулі надають бізнес-логіку, а теми надають функції для налаштування зовнішнього вигляду сайту. Модулі можуть залежати один від одного, а можуть бути досить незалежними, щоб забезпечувати максимальну гнучкість налаштування сайту.
Кожен модуль являє собою логічну групу, яка складається з Блоків, Помічників, Контролерів, Моделей. Ця група незалежна і призначена для того, щоб не впливати на інший функціонал. Таким чином, при використанні модульного підходу, кожен модуль надає свої власні функції з мінімальними залежностями від інших модулів, щоб включення/відключення модуля не впливало на функціональність інших модулів.
Модулі Magento 2 розміщуються в папці vendor/magento
(при встановленні через composer) або в app/code/Magento
(при ручному встановленні). Наприклад, модуль Customer
можна знайти в одному з цих місць: app/code/Magento/Customer
або vendor/magento/module-customer
. У цих папках міститься весь код і конфігурація, які пов’язані з модулем.
Ім’я кожного модуля визначається у файлі module.xml
, який знаходиться в app/code/<Vendor>/<ModuleName>/etc/
. Ви повинні назвати модуль відповідно до такої схеми Namespace_Module
: де Namespace – це ім’я постачальника модуля (розробника), а Module – це ім’я модуля.
Мінімальна інформація, яка необхідна для оголошення модуля:
Приклад мінімального коду для декларації модуля:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Namespace_Module" setup_version="2.0.0"> </module> </config>
Концепція залежностей грає дуже важливу роль в Magento 2: всі модулі зібрані в логічні групи з унікальними окремими функціями. В таких умовах кілька модулів не можуть відповідати за одну і ту ж функцію. У той же час один модуль не може відповідати за різні функції в Magento 2. Для цього потрібно оголошувати всі залежності. Відключення і/або видалення модуля не призводить до відключення і/або видалення інших модулів. Модулі можуть залежати від таких компонентів, як інші модулі, PHP розширення і бібліотеки.
Завдання залежностей модуля
Ви можете управляти залежностями модуля за допомогою 3-х кроків:
Всі залежності перераховані у файлі composer.json
кожного модуля. Нижче приклад використання:
app/code/Magento/Catalog/composer.json { "name": "magento/module-catalog", "description": "N/A", "require": { "php": "7.0.2|7.0.4|~7.0.6|~7.1.0", "magento/module-store": "100.2.*", "magento/module-eav": "101.0.*", "magento/module-cms": "102.0.*", "magento/module-indexer": "100.2.*", … }, … }
Порядок завантаження залежностей
Щоб оголосити порядок завантаження будь-яких залежностей, ви повинні використовувати елемент <sequence>
в файлі module.xml
.
Нод <sequence>
є необов’язковим елементом, тому він використовується тільки в тих випадках, коли необхідний певний порядок завантаження модулів.
Основний синтаксис:
<sequence> <module name="Vendor_Module"/> </sequence>
Приклад використання
Файл: vendor/magento/module-customer/etc/module.xml <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Magento_Customer" setup_version="2.0.12"> <sequence> <module name="Magento_Eav"/> <module name="Magento_Directory"/> </sequence> </module> </config>
Елемент <sequence>
файлу module.xml
використовується тільки для визначення порядку завантаження залежностей. Ви повинні використовувати файл composer.json
, щоб зробити фактичні оголошення залежностей.
Впровадження залежностей означає, що всі залежності передаються в об’єкт, а не витягуються з середовища цим об’єктом.
Залежність (або зв’язок) має на увазі ступінь того, як один компонент покладається на деякий інший компонент для виконання своєї функції. Чим більше ступінь залежності компонента, тим менше його ступінь впровадження в нові проекти.
Диспетчер об’єктів показує середовище залежностей для впровадження в конструктор. Він повинен використовуватися тільки при написанні коду.
Типи залежностей модуля
В Magento є два типи залежностей модулів: жорсткі і м’які залежності.
Слід пам’ятати, що в разі, коли один модуль використовує код з іншого, він обов’язково повинен явно оголосити залежність.
Послідовність установки: спочатку встановлюється модуль, який служить залежністю для іншого модуля, а потім – модуль, який покладається на нього.
Модулі визначають не тільки ресурси, які видно і доступно в області, але також і поведінку області.
Magento складається з наступних областей:
adminhtml
– відповідає за Панель адміністрування Magento 2frontend
– відповідає за зовнішній інтерфейс (Storefront)webapi_rest
– веб-API RESTwebapi_soap
– SOAP Web APIdoc
Кожна область з усіма конкретними ресурсами оголошує себе в певному модулі. Можна включити і відключити область в модулі. З включеним модулем ви вводите маршрутизатори області в процес маршрутизації загального застосування. При відключеному модулі маршрутизатори області не завантажуються, тому ресурси і спеціальні функції області недоступні.
Майте на увазі, що модуль не повинен залежати від іншої області модуля.
Magento використовує області для ефективного виклику веб-служб – завантажує залежний код для цієї області. Кожна область має свою власну поведінку і вид компонентів, які працюють окремо.
Існують спеціальні стандарти і угоди в Magento 2, які відносяться до розташування модулів в файлової системі.
Правила розташування модулів
Ось як виглядає стандартна локалізація для конкретних об’єктів:
Об’єкт | Розташування |
База коду користувацького модуля | app/code/<Vendor>/<Module> |
Файли теми | app/design/<ОБЛАСТЬ>/<Module>/<theme> |
Файли бібліотек | lib/<Vendor_Library> |
Навчання за кордоном вже давно асоціюється з якісною освітою, новими можливостями та безліччю перспектив. Але…
Вибір майстра для ремонту та перетяжки меблів – завдання, яке потребує вдумливого підходу. Адже від…
Вибір ідеального хостингу під свій сайт може бути досить заплутаною справою, особливо коли існує багато…
Щоб уникати помилок, потрібно набиратися досвіду; щоб набиратися досвіду, потрібно робити помилки Лоуренс Пітер
Коротке визначення Чорного SEO Чорне СЕО (або Чорна оптимізація) — це будь-яка практика, метою якої…
Отримання прав водія категорії C відкриває двері до професійної діяльності, пов'язаної з керуванням вантажними автомобілями.…