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