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

 

Tolyanich

Share
Published by
Tolyanich

Recent Posts

Вуді Аллен

Якщо хочеш пізнати людину, не слухай, що про неї говорять інші, послухай, що вона говорить…

11 години ago

Еріх Марія Ремарк

Вибачення — не означає, що ти не правий, а інша людина має рацію. Це всього…

1 тиждень ago

Джим Керрі

Той, хто вміє усміхатися щодня, вміє жити Джим Керрі  

2 тижні ago

Хань Сян-цзи

Допомагаючи ледачим людям, ти допомагаєш їм сісти на свою шию Хань Сян-цзи  

3 тижні ago

Як працює електронна книга

Атмосферу паперової книги, запах свіжого чорнила і паперу, що трохи залежався, складно замінити гаджетами. Але…

3 тижні ago

Робін Шарма

Дій так, ніби невдача просто неможлива, а успіх забезпечений Робін Шарма  

4 тижні ago