Пользовательский модуль Magento: шаг за шагом, чтобы создать его в Magento 2

Опубликовано: 2020-11-11

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

Последнее обновление: мы только что выпустили версию 2.0 многоцелевой темы Claue Magento 2 с множеством улучшений производительности и эксклюзивных функций. Проверьте эту тему сейчас: Claue Magento Theme 2. 0

claue2_edited (1)

Живая демонстрация

Claue — Clean, Minimal Magento 2&1 Theme — отличный шаблон для современного и чистого магазина электронной коммерции с более чем 40 макетами домашней страницы и множеством вариантов для магазина, блога, портфолио, макетов локатора магазинов и других полезных страниц. Claue версии 2.0 поставляется с множеством эксклюзивных функций, включая:

  • На основе темы Luma.
  • Соответствует всем стандартам темы Magento
  • Значительное улучшение производительности
  • Совместим с большинством сторонних расширений.
  • Полностью совместим с Magento 2.4.x

Эта вторая расширенная версия полностью отличается от предыдущей. Таким образом, если вы используете Claue версии 1 и хотите обновиться до Claue версии 2, вы можете только перестроить новый веб-сайт, а не обновлять старую версию. Теперь вернемся к основной теме.

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

Magento поставляется с 3 типами пула кода (Code, Core и Local), в которых находятся пользовательские и основные модули. Локальный пул (папка) — это место, где находятся или должны быть размещены все пользовательские модули. Ниже приведены компоненты, которые должен включать модуль.

  • Блоки — здесь вам нужно предоставить функции, используемые для отображения данных в наших шаблонах.
  • Модели — здесь содержится вся бизнес-логика.
  • Ресурс — модели включают функции, которые используются для взаимодействия с базой данных.
  • Контроллеры — определяют макет страницы и блокируют файлы и загружаются при запросе URL-адреса.
  • etc — включает файлы конфигурации в форматах XML, которые показывают Magento, сколько файлов есть в модулях и как модуль взаимодействует.
  • Помощники — включают функции, которые используются для определения общей бизнес-логики (например, изменение размера изображения, проверка). Эти функции можно использовать в любом месте приложения Magento.
  • sql — содержит сценарии SQL для создания, изменения или удаления таблиц SQL.

Как создать пользовательский модуль Magento?

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

Создать простой модуль в Magento 2 очень просто. Вам нужно будет выполнить следующие задачи:

  • Создайте новый каталог для модуля
  • Создайте скрипт registration.php
  • Создайте информационный файл etc/module.xml
  • Установите новый модуль

Создайте новый каталог для модуля

Есть два варианта выбора положения нового каталога.

  • app/code/{vendor}/
  • vendor/{vendor}/

Вы можете выбрать первый вариант, если ваш модуль предназначен для конкретного интернет-магазина, над которым вы работаете. Но если вы создаете модуль для использования на различных веб-сайтах, лучше выбрать второй вариант. Теперь я буду использовать первый вариант для этого примера.

Во-первых, вам нужно создать каталог с именем EndPoint (имя нашего поставщика) с подкаталогом внутри него, MyModule :

 cd {website_root} mkdir -p app/code/EndPoint/MyModule

Создайте скрипт Registration.php

Файл Registration.php указывает Magento registration.php новый модуль под определенным именем и местоположением.

Создайте файл с именем app/code/EndPoint/MyModule/registration.php с приведенным ниже кодом.

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

Создайте информационный файл etc/module.xml

На этом шаге вам необходимо создать файл информации о нашем модуле, где мы укажем номер версии модуля. Во-первых, мы должны создать каталог etc внутри app/code/EndPoint/MyModule :

 mkdir app/code/EndPoint/MyModule/etc

затем создайте module.xml со следующей командной строкой

 <?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 = "EndPoint_MyModule" setup_version = "1.0.0" > </ module > </ config >

Установите новый модуль

Теперь нам нужно установить и включить новый модуль, поэтому из корня нашего сайта нам нужно запустить команду

 php bin/magento setup:upgrade

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

Добавьте пользовательский маршрут в наш модуль

Теперь у нас есть работающий, включенный модуль, но он еще ничего не делает! Какой простой способ проверить, включен ли наш модуль? Давайте настроим собственный маршрут, поэтому, если мы нажмем URL-адрес, например https://{our_website}/mymodule/test/helloworld , мы сможем вернуть собственный ответ от контроллера.

Для создания пользовательского маршрута потребуется несколько шагов:

  • Создайте новый каталог для контроллера
  • Создайте файл etc/routes.xml
  • Создайте контроллер
  • Обновите новый модуль

Создайте новый каталог для контроллера

Во-первых, нам нужно создать новый каталог, в котором будет жить новый контроллер PHP для нашего пользовательского маршрута. Новый путь к каталогу должен быть:

app/code/EndPoint/MyModule/Controller

Вы можете создать столько уровней каталогов, сколько хотите, исходя из желаемого пути. Например, если вы создаете класс с именем Index в app/code/EndPoint/MyModule/Controller , URL-адрес, который будет перенаправлен на этот контроллер, будет https://{our_website}/mymodule/index (каталог «Controller» игнорируется).

Купить Если вы создаете класс с именем HelloWorld в app/code/EndPoint/MyModule/Controller/Test , результирующий URL-адрес будет https://{our_website}/mymodule/test/helloworld .

Создайте файл etc/routes.xml

routes.xml сообщит Magento, какой базовый URL будет использоваться для нашего модуля. Во-первых, нам нужно создать каталог «frontend», куда нужно поместить файл route.xml:

 mkdir app/code/EndPoint/MyModule/etc/frontend

Когда вам нужно, чтобы базовый URL-адрес был MyModule , вы должны создать XML-файл внутри нового каталога, который будет направлять все запросы, сделанные на данный URL-адрес, к нашим контроллерам модулей:

 <?xml version="1.0" ?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:App/etc/routes.xsd" > < router id = "standard" > < route frontName = "mymodule" id = "mymodule" > < module name = "EndPoint_MyModule" /> </ route > </ router > </ config >

Создайте контроллер

Если мы хотим отвечать на запросы для https://{our_website}/mymodule/test/helloworld , вам нужно будет создать базовый каталог Controller и подкаталог Test :

 mkdir -p app/code/EndPoint/MyModule/Controller/Test

В этом каталоге вам нужно создать наш собственный контроллер Magento. Все контроллеры маршрутов должны расширять \Magento\Framework\App\Action\Action . Нам также нужен метод public construct() для передачи контекста нашему предку и функция execute() , которая будет вызываться при переходе по URL-адресу:

 <?php namespace EndPoint \ MyModule \ Controller \ Test ; class HelloWorld extends \ Magento \ Framework \ App \ Action \ Action { public function __construct ( \Magento\Framework\App\Action\Context $context ) { parent ::__construct( $context ); } public function execute () { echo "Hello world!" ; } }

Обновите новый модуль

На этом этапе вам необходимо обновить нашу настройку Magento. Но поскольку вы включили в конструкцию новый контроллер, который получает параметры от инжектора зависимостей. Вам также необходимо скомпилировать механизм внедрения зависимостей (например, фабрики, прокси и перехватчики). Наконец, вам нужно очистить кеш, чтобы новый контент обслуживался с нашего пользовательского URL:

 php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:flush

И это все. Откройте URL-адрес /helloworld/index/index в своем браузере, и вы должны получить что-то вроде этого: Это означает, что наш модуль работает!

пользовательский модуль magento

Это подходит к концу учебников: Пользовательский модуль Magento: Шаг за шагом, чтобы создать его в Magento 2. Мы надеемся, что этот блог будет для вас полезным. Если вы хотите узнать больше о Magento, вы можете прочитать нашу статью о платформе Magento для более подробной информации, также не забудьте ознакомиться с нашими расширениями Magento 2 и нашими темами Magento 2 для поддержки вашего веб-сайта.