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