Для створення мінімального модуля Magento 2 необхідно лише два файли: module.xml та registration.php.

1. Спочатку створіть папку модуля:

app/code/<VendorName>/<ModuleName>/

та папку, у якій міститимуться конфігураційні файли модуля:

app/code/<VendorName>/<ModuleName>/etc/

Якщо папка app/code відсутня у вашій Magento 2 інсталяції - будь ласка створіть її.

2. Файл module.xml з наступним вмістом помістіть у папку app/code/<VendorName>/<ModuleName>/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="VendorName_ModuleName" setup_version="2.0.0">
        <sequence>
            <module name="Magento_Cms"/>
            <module name="Magento_Catalog"/>
        </sequence>
    </module>
</config>

sequence не є обов'язковим елементом і призначений для означення модулів, від яких залежний ваш модуль. Якщо залежності невідомі, їх можна вказати пізніше.
setup_version -вказує на поточну версію модуля.  

3. Створіть файл registration.php і помістіть його в папку app/code/<VendorName>/<ModuleName>/

<?php

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

У прикладах ми створюватимемо модуль Magefan_Faq для поширених запитань (FAQ - Frequently Asked Question(s)). 

Отримана структура модуля виглядатиме так:

├── app
│   └── code 
│        └── Magefan // назва розробника - VendorName
│            └── Faq
// назва модуля - ModuleName
│                ├──
etc
│                │   └──
module.xml
│                │
│                └──
registration.php

На GitHub можна переглянути файли модуля Magefan_Faq.

Після створення цих 2-х файлів зареєструйте модуль в системі. Відкрийте CLI (термінал, командну стрічку), після цього перейдіть у кореневу папку Magento2 і виконайте наступну команду:

php bin/magento setup:upgrade

Вона перевіряє наявність нових та оновлених компонентів системи (модулів, тем, мовних пакетів), встановлює/оновлює їх.

Перевірити чи встановлений та включений модуль можна у файлі

app/etc/config.php

у ньому повинна бути присутня стрічка

'VendorName_ModuleName' => 1

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

Читайте більше як створити власний контролер та вивести "Hello World".