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

Огляд дефолтної структури папок в модулі 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 дозволяє аналізувати логіку і функціональність розширення, а також трохи полегшує пошук і усунення помилок і конфліктів, що можуть виникати.

 



Напишіть тут свою думку/питання

Ваша пошта не публікуватиметься. Обов’язкові поля позначені *