What should you know about custom modules for Magento 2?

10 March 2023

next article
Slava Nahnybida

PR manager

Slava Nahnybida
What should you know about custom modules for Magento 2?

The modular software building system has long proven its advantages and is widely used by many progressive platforms. This is true in many areas, but especially important for business software. Several factors are important here:

  • flexibility of the system, when it is possible to implement extremely different solutions;

  • speed of implementation, when the issue can be resolved relatively easily in a short period of time;

  • simplicity of solutions for the average user who does not have to be a professional developer;

  • freedom of action, when at the expense of custom functionality it is possible to implement unique or specific tasks within the framework of one platform.

You can see for yourself that the vast majority of successful business platforms, whether it's CRM, ERP or eCommerce software, have a modular system. Since Magento 2 is one of the most popular products in the world, there's no question that this platform is built any differently.

Magento 2 modular system

In general, Magento consists of many different components: themes, libraries, modules, language packs, etc. Themes and modules are used for extensive customization of the product and allow you to give your eCommerce project both a unique look and expand standard functionality. It is thanks to the modules that it is possible to fill your site with various features and properties. Themes and modules have their own life cycle in the system, which allows you to freely add, activate or stop them, as well as delete unnecessary ones.

Each module forms a logical group of blocks, controllers and models, which makes it an almost independent component of the system. This is what guarantees the free connection of new modules, which will not harm the general activity of your Magento 2. Similarly with the removal: if it is not a basic component, you can not worry about the performance of the system.

Dependent modules are another matter. There are two types: modules with weak dependencies, which can work independently of each other, and modules with strong dependencies, meaning that they cannot work without other components, namely other modules, themes, PHP extensions and libraries. In the concept of Magento, and, as a result, Magento 2, all modules are assembled into logical groups according to unique features. According to this:

  • several different modules cannot perform the same function;

  • one module cannot perform several functions at the same time.

Each module must be declared in the system and this means that its dependency hierarchy is known in advance. That is why removing dependent modules will not affect the system, but in the case of removing a module on which others depend, it will immediately indicate problematic places in the hierarchy.

In addition to the API methods already familiar to many, Magento 2 has another SPI concept — "Serial Peripheral Interface" — rules that create a hierarchy of relationships between classes of the "Application" level. Modules define not only the resources that are visible and available in a certain area, but also specify the behavior of areas, of which there are as many as six in Magento 2:

  • adminhtml – Magento Admin;

  • frontend – Storefront;

  • webapi_rest – Web API REST;

  • webapi_soap – Web API SOAP;

  • doc.

What a module looks like in Magento 2

Despite the complex definitions and possible large amounts of code, modules in Magento 2 look simple enough. Module files are located in two directories:

  1. vendor/<vendor-name>/<module-name>/ — module folder;

  2. app/code/<VendorName>/<ModuleName>/ is the configuration folder.

VendorName is the name of the company developing the module. It should be noted right away that the actual name should be entered here: if you are developing the module only for the needs of your own business, this question is not essential. However, if you anticipate that the created module will be needed by other users of Magento 2, and your company can get a commercial benefit from its sale, it is worth checking that the contractor has entered there the name of your company as the subject of ownership of the software at the beginning. In general, files from contractors are located in a folder called app/code — it may not be in the default Magento 2 installation, so you will have to create it yourself if necessary. Basic modules, also called Magento 2 core modules, as well as software installed using the Web Setup Wizard or Composer are always available in the vendor/magento folder.

The configuration folder <ModuleName> contains the module.xml file with the following content:

?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>

The equence line describes the dependency of this module on other components. So if you have a stand-alone product in front of you, this feed remains empty.

The registration.php file is responsible for the registration of the module and can look like this:

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

When the above files are created and edited, the module can be registered in the system from the root folder through the terminal using the command: php bin/magento setup:upgrade.

In a similar way, you can also:

  • turn on the modules as you wish: php bin/magento module:enable VendorName_ModuleName

  • and turn off: php bin/magento module:disable VendorName_ModuleName

However, if you don't have significant knowledge of PHP, we don't advise you to get excited about manipulating modules without first backing up your system. After all, in fact, the above commands and code are enough to create an empty, but full-fledged module for Magento 2.

Capabilities of the modules

Since any custom module is a separate piece of code, the answer to this topic's question is quite simple — the possibilities are limitless. It all depends on your needs and the experience of the developers. The Avivi team has been implementing eCommerce projects on the Magento 2 platform for many years in a row, each of which includes the development of custom modules. Different in terms of content and functionality, they are all united by a single goal — to bring your expectations from business software as close as possible to the ideal. Indeed, many ready-made solutions can already be found for purchase or even for free use. However, this is a kind of lottery, because no one is able to completely guess your needs in order to create a solution in advance. Therefore, custom development always guarantees the complete compliance of the product with the requirements of your business. Avivi developers are always ready to listen to your wishes and create the best solution on the most favorable terms. We will be happy to help your business on the Magento 2 platform!

Similar articles
Apply for a consultation

We will reach out to within 10 minutes