Що варто знати про кастомні модулі для Magento 2?

10 Березня 2023

наступна стаття
В'ячеслав Нагнибіда

PR-менеджер

В'ячеслав Нагнибіда
Що варто знати про кастомні модулі для Magento 2?

Модульна система побудови програмного забезпечення вже давно довела свої переваги та широко використовується багатьма прогресивними платформами. Це актуально в багатьох напрямках, але надзвичайно важливо для програмного забезпечення, призначеного для бізнесу. Тут має значення одразу декілька факторів:

  • гнучкість системи, коли можливо впроваджувати надзвичайно різні рішення;

  • швидкість реалізації, коли в стислий термін можна відносно легко вирішити питання;

  • простота рішень для пересічного користувача, який не має бути професійним розробником;

  • свобода дії, коли за рахунок кастомного функціоналу вдається реалізувати унікальні чи специфічні завдання у рамках однієї платформи. 

Ви можете пересвідчитися, що переважна більшість успішних бізнес-платформ, незалежно це CRM, ERP чи програмне забезпечення для eCommerce, мають саме модульну систему. Оскільки Magento 2 є одним з найпопулярніших продуктів у світі, годі й сумніватися, що ця платформа створена якось інакше. 

Модульна система Magento 2

Загалом Magento складається з багатьох різних компаонентів: тем, бібліотек, модулів, мовних пакетів тощо. Саме теми та модулі використовуються для широкої кастомізації продукту й дозволяють надати вашому проекту eCommerce як унікального вигляду, так і розширити стандартний функціонал. Саме за рахунок модулів можливо наповнити ваш сайт різноманітними особливостями та властивостями. Теми та модулі наділені власним життєвим циклом у системі, що дозволяє вільно їх додавати, активувати чи зупиняти, а також видаляти непотрібне. 

Кожен модуль утворює логічну групу з блоків, контролерів та моделей, що робить його практично незалежним компонентом системи. Саме це гарантує вільне підключення нових модулів, що не зашкодить загальній діяльності вашого Magento 2. Аналогічно із видаленням: якщо це не базовий компонент, про працездатність системи можна не турбуватися. 

Інша справа — залежні модулі. Є два типи: модулі зі слабкою залежністю, що можуть працювати окремо один від одного, та модулі зі сильною залежністю, тобто робота яких неможлива без інших компонентів, а саме інших модулів, тем, розширень PHP та бібліотек. В концепції Magento, та, як наслідок, Magento 2, всі модулі збираються у логічні групи за унікальними особливостями. Відповідно до цього:

  • декілька різних модулів не можуть виконувати одну й ту саму функцію;

  • один модуль не може виконувати декілька функцій одночасно. 

Кожен модуль має бути задекларований у системі і це означає, що ієрархія його залежності відома заздалегідь. Саме тому видалення залежних модулів не вплине на систему, але в разі видалення модуля, від якого залежать інші, одразу вкаже на проблемні місця в ієрархії. 

Окрім вже звичних для багатьох методів API, у Magento 2 зустрічається ще одне поняття SPI — «Serial Peripheral Interface», або послідовний периферійний інтерфейс — правила, що створюють ієрархію взаємовідносин між класами рівня “Application”. Модулі визначають не лише ресурси, що видимі та доступні в певній області, але й вказують поведінку областей, що у Magento 2 є цілих шість:

  • adminhtml – Magento Admin;

  • frontend – Storefront;

  • webapi_rest – Web API REST;

  • webapi_soap – Web API SOAP;

  • doc.

Як виглядає модуль у Magento 2

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

1. vendor/<vendor-name>/<module-name>/ — папка модулів;

2. app/code/<VendorName>/<ModuleName>/ — папка конфігурації.

VendorName — це назва компанії, що розробляє модуль. Одразу слід зауважити, що сюди слід вписати актуальну назву: якщо ви розробляєте модуль лише для потреб власного бізнесу, це питання несуттєве. Однак якщо ви передбачаєте, що створений модуль знадобиться іншим користувачам Magento 2, а ваша компанія може отримати комерційну вигоду від його продажу, варто проконтролювати, аби підрядник на початку вписав туди назву вашої компанії, як суб’єкту права власності на програмне забезпечення. Загалом, файли від підрядників розміщені у папці під назвою app/code — її може не бути у встановленому Magento 2 за замовчанням, тому в разі потреби доведеться створити власноруч. Базові модулі, які називають ще модулями ядра Magento 2, а також встановлене за допомогою Web Setup Wizard чи Composer програмне забезпечення завжди доступні у папці vendor/magento. 

У папці конфігурації <ModuleName> розміщено файл module.xml наступного змісту:

?xml version="1.0"?>

http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">     <module name="VendorName_ModuleName" setup_version="2.0.0">      <sequence>      <module name="Magento_Cms"/>      <module name="Magento_Catalog"/>      </sequence>     </module> </config>

Строка equence описує залежність цього модуля від інших компаонентів. Тож якщо перед вами самодостатній окремий продукт, ця стрічка залишається порожньою. 

Файл registration.php відповідає за реєстрацію модуля та може виглядати наступним чином: 

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

Коли зазначені вище файли створені та відредаговані, модуль можна зареєструвати у системі з кореневої папки  через термінал з використанням команди: php bin/magento setup:upgrade

Аналогічним способом також можна за бажанням:

  • вмикати модулі: php bin/magento module:enable VendorName_ModuleName

  • та вимикати: php bin/magento module:disable VendorName_ModuleName

Однак якщо ви не володієте значними знаннями PHP, ми не радимо захоплюватися маніпуляціями з модулями без попереднього бекапу вашої системи. Адже, по суті, викладених вище команд та коду вистачає, аби створити порожній, але повноцінний модуль для Magento 2. 

Можливості модулів

Оскільки будь-який кастомний модуль є окремим кодом, відповідь на питання цієї теми досить проста — можливості необмежені. Все залежить від ваших потреб та досвіду розробників. Команда Авіві багато років поспіль реалізує проекти з eCommerce на платформі Magento 2, де в кожному присутня розробка кастомних модулів. Різні за змістом та функціоналом, всі вони об’єднані єдиною метою — максимально наблизити до ідеалу ваші очікування від програмного забезпечення для бізнесу. Дійсно, багато готових рішенб вже можна знайти для купівлі чи навіть безкоштовного використання. Однак це своєрідна лотерея, адже ніхто не здатний цілковито вгадати ваші потреби, аби створти рішення наперед. Тому кастомна розробка завжди гарантує цілковиту відповідність продукту вимогам вашого бізнесу. Розробники Авіві завжди готові вислухати ваші побажання та створити найкраще рішення на найбільш вигідних умовах. Будемо раді допомогти саме вашому бізнесу на платформі Magento 2!



Схожі статті
Записатись на консультацію

Ми зв'яжемось з Вами протягом 10 хвилин