Огляд дефолтної структури папок в модулі Magento 2

Щоб зрозуміти, як працює модуль, спочатку потрібно з’ясувати, як основні компоненти (наприклад, контролери, моделі, блоки) взаємодіють один з одним. А перед цим також важливо знати, як ці компоненти структуровані в платформі Magento 2. У цій статті ми приділимо увагу огляду дефолтної структури модуля (основних папок і деяких файлів), щоб краще розуміти організацію цієї нової платформи.

 

Папки та файли модуля в Magento 2 можуть бути розміщені в 2-х каталогах:

app/code/<VendorName>/<ModuleName>/  vendor/<vendor-name>/<module-name>/  

 

<VendorName> — це, в основному, назва компанії, яка розробила модуль. Також це може бути і, наприклад, нікнейм програміста, який створив даний модуль. У перекладі з англійської “vendor” означає “постачальник”, що має явно ідентифікувати творця модуля. Якщо ви розробляєте модуль, використовуйте для цього унікальне значення.

Якщо модуль розробляється вами або вашою компанією, його файли розміщуються в папці app/code.

Якщо ви встановлюєте модуль через Composer, його файли розміщуються в папці vendor. Також тут розміщуються модулі ядра платформи Magento 2. Знайти ви можете їх за постачальником, тобто, в папці vendor/magento.

 

 

Орієнтовна структура папок і файлів модуля

Графічно типова структура файлу для модуля Magento 2 може виглядати наступним чином:

 

 

Короткий опис призначення файлів і каталогів в модулі Magento 2

 

├── Api // PHP класи для REST API;  ├── Block // PHP класи, що відповідають за View по MVC. Методи, які використовуються у .phtml шаблонах;  ├── Controller // ці файли несуть відповідальність за з'єднання модулів із зовнішнім світом, наприклад, при зміні URL-адреси;  ├── Cron // PHP класи, що обслуговують методи, які пов'язані із задачами Cron (завдання за розкладом);  ├── Helper // містить файли, які відповідають за виконання загальних (допоміжних) завдань для об'єктів та змінних;  ├── Model // PHP класи, що відповідають за Module по MVC;  ├── Observer // PHP класи обсерверів (слухачів подій);  ├── Plugin // PHP класи перехоплювачів (до, після, та навколо);  ├── Setup // містить файли, необхідні для внесення змін у базу даних, тобто створення таблиць, полів або інших записів, необхідних для виконання роботи модуля;  ├── UI // PHP класи, що відповідають за роботу з UI-компонентами;  ├── etc // папка містить конфігураційні файли модуля;  │    ├── adminhtml // конфігураційні файли, які зачіпають лише адмінпанель сайту;  │    │     ├── di.xml  // налаштування плагінів, віртуальних типів, переписування моделей;  │    │     ├── menu.xml  // відповідає за побудову меню в адмінпанелі;  │    │     ├── routers.xml  //налаштування маршрутів;  │    │     ├── system.xml  // побудова сторінки налаштувань в розділі Stores > Configuration;  │    │     └── events.xml  //налаштування обсерверів (слухачів подій);  │    │  │    ├── frontend // конфігураційні файли, що відносяться до фронт-енду сайту;  │    │     ├── di.xml  │    │     ├── events.xml  │    │     ├── routers.xml  │    │     └── events.xml  │    │  │    ├── acl.xml  // налаштування розмежування прав у адмінпанелі;  │    ├── config.xml  // містить дефолтні значення для полів налаштувань у розділі Stores > Configuration;  │    ├──  crontab.xml // файл для налаштування задач Cron (завдань за розкладом);  │    ├── di.xml  │    ├── webapi.xml // тут відбувається налаштування REST API;  │    └── widget.xml // файл з налаштуваннями для віджетів;  │  ├── i18n // папка з CSV-файлами, що відповідають за локалізацію (переклади);  │    ├── en_US.csv  │    └── fr_FR.csv  │  ├── view // тут містяться файли, що надають вигляду інтернет-магазину: макети (layout), .phtml шаблони, js файли, стилі css, простий html, картинки та шрифти;  │    ├── adminhtml // медіа-файли, що надають вигляду бекенду (адмінпанелі);  │    ├── frontend // ресурси, що надають вигляду фронт-енду;  │    │    └── layout // xml-файли макету;  │    │    └── templates // phtml-файли шаблону;  │    │    └── web // статичні файли;  │    │         └── css  │    │         └── images  │    │         └── js  │    │  │    └── base // дефолтні ресурси, що надають вигляду і фронт-енду, і бекенду;  │  ├── LICENSE.txt  // файл, що містить умови ліцензії, за якою надається поточний модуль;  ├── README.md  // технічний опис всього того, що вміє модуль (функціональності);  ├── composer.json // за допомогою цього файлу модуль встановлюється через Composer;  └── registration.php // файл, за допомогою якого модуль реєструється у платформі Magento 2;  

 



 

 

Розуміння структури модуля в Magento 2 дозволяє аналізувати логіку і функціональність розширення, а також трохи полегшує пошук і усунення помилок і конфліктів, що можуть виникати.