Как создать простой модуль в Magento 2

В этом уроке мы создадим самый простой модуль в Magento 2. Это будет только каркас, который мы будем достраивать и развивать в дальнейших уроках.

 

Прежде чем мы начнем разработку простого модуля Magento 2, есть две вещи, о которых многие забывают:

 

  1. Отключить кеш Magento 2

Отключение кеша Magento 2 во время разработки поможет сэкономить время, потому что вам не нужно вручную очищать кеш каждый раз, когда вы вносите изменения в код.

Самый простой способ отключить кеш – перейти в Admin → System → Cache Management → выбрать все типы кеша и установить для них Disable.

Либо вы можете набрать в консоли следующую команду (как работать с консолью, вы можете посмотреть в этом уроке):

php bin/magento cache:disable  

 

 

  1. Переведите Magento 2 в режим разработчика

Вы должны перевести Magento 2 в режим разработчика, что позволит вам видеть все ошибки во время разработки.

Для этого откройте консоль и из корня сайта выполните следующую команду:

php bin/magento deploy:mode:set developer  

 

 

Создание каркаса для модуля в Magento 2

Если вы ранее работали с Magento версий 1.х, вы использовали среду разработки – core, community и local, которые находились в папке app/code. В Magento 2 больше нет такого понятия. Модули сгруппированы по пространству имен (Vendor) и помещены непосредственно в папку app/code.

Поэтому наш первый шаг – создать папку модуля и необходимые файлы, которые нужны для регистрации модуля в платформе Magento 2.

 

 

  1. Создайте следующие папки:
app/code/Sebweo  app/code/Sebweo/Helloworld  

 

Папка Sebweo – это пространство имен модулей (Vendor, т.е., производитель), а Helloworld – это название самого модуля.



Примечание. Если у вас нет папки code в папке app, создайте ее вручную.

 

Чтобы создать самый простой модуль в Magento 2, нужны только два файла: module.xml и registration.php. Рассмотрим это дальше.

 

 

  1. Файл определения модуля – module.xml

Теперь, когда у нас есть папка с модулем, нам нужно создать файл module.xml в папке app/code/Sebweo/Helloworld/etc с таким содержимым:

<?xml version="1.0"?>  <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">   <module name="Vendor_ModuleName" setup_version="1.0.0">    <sequence>      <module name="Magento_Catalog"/>    </sequence>   </module>  </config>  

 

  • Замените Vendor на свое пространство имен, в нашем примере – это Sebweo. А ModuleName на название модуля, в нашем примере – это Helloworld.
  • Значение в ноде setup_version указывает на текущую версию модуля. Вы можете использовать любое цифровое значение.
  • Значение в ноде sequence не является обязательным элементом. Его используют, когда ваш модуль зависит от других модулей в системе. В нашем примере модуль зависит от модуля Magento_Catalog.

 

 

 

  1. Файл регистрации модуля – registration.php

Чтобы зарегистрировать модуль в системе, создайте файл registration.php в папке app/code/Sebweo/Helloworld с таким содержимым:

<?php  \Magento\Framework\Component\ComponentRegistrar::register(    \Magento\Framework\Component\ComponentRegistrar::MODULE,    'Vendor_ModuleName',    __DIR__  );  

 

Замените Vendor на свое пространство имен, в нашем примере – это Sebweo. А ModuleName на название модуля, в нашем примере – это Helloworld.

 

 

  1. Очистка системы

Откройте консоль и из корня сайта с Magento 2 запустите следующую команду:

php bin/magento setup:upgrade  

 

Если после этого вы откроете сайт в браузере и увидите, что слетели стили, тогда дополнительно выполните в консоли и такую команду:

php bin/magento setup:static-content:deploy  

 

 

Если вы хотите убедиться, что ваш новый модуль был успешно установлен, вы можете открыть файл app/etc/config.php и проверить, что в массиве есть ключ «Sebweo_Helloworld», а значение для него должно быть установлено в 1.

Также вы можете использовать следующую команду из консоли:

php bin/magento module:status  

 

Эта команда покажет вам список всех модулей в системе.

 

 

Вот и все! Сегодня мы создали самый простой модуль для Magento 2. Он уже присутствует в системе, но пока ничего полезного не делает. В следующих уроках мы будем наполнять его полезным функционалом.