Cursos Magento

Como criar um módulo para Magento 2

,

Atualizado em 28 de novembro de 2022

Neste artigo veremos um passo a passo de como criar um módulo para Magento 2 e conhecer um pouco da nova estrutura de módulos da versão 2. Este post também servirá como base para outros artigos relacionados ao desenvolvimento para Magento 2.

Se você está interessado em como criar módulos e desenvolver para Magento, veja a lista de cursos Magento disponíveis ou inscreva-se no Clube Magenteiro. Há também um artigo sobre como criar um módulo para Magento 1.x.

Criando os arquivos básicos de um módulo Magento 2

Diferente do Magento 1, todos os arquivos e pastas de um módulo ficam dentro de um único diretório.  Portanto, não é mais necessário adicionarmos arquivos em lugares separados para ativar um módulo. Mesmo os arquivos de JavaScript e CSS agora ficam todos dentro da pasta do módulo.

Nosso módulo de exemplo se chamará Magenteiro_BaseModule. Vamos criar os seguintes arquivos:

<?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="Magenteiro_BaseModule" setup_version="1.0.0"/>
</config>
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Magenteiro_BaseModule',
    __DIR__
);
{
    "name": "magenteiro/basemodule",
    "authors": [
        {
            "name": "Magenteiro",
            "email": "[email protected]",
            "homepage": "https://www.magenteiro.com"
        }
    ],
    "description": "Magenteiro Base Module",
    "require": {
        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0",
        "magento/magento-composer-installer": "*"
    },
    "type": "magento2-module",
    "version": "1.0.0",
    "autoload": {
        "files": [
            "registration.php"
        ],
        "psr-4": {
            "Magenteiro\\BaseModule\\": ""
        }
    }
}

Dica: Se você está usando uma IDE, configure ela para reconhecer os XSD’s do Magento 2. Isso ajudará você a entender e conhecer as opções disponíveis em alguns XML’s.

Com os arquivos criados já podemos ativar nosso módulo.

Verificando nosso módulo

Para ver se está tudo certo e se o Magento reconheceu nosso módulo, vá ao terminal na pasta do seu Magento e digite bin/magento module:status.

Note que nosso módulo aparecerá como desabilitado. Caso não apareça para você, limpe os caches do seu Magento com bin/magento cache:flush.

Ativando nosso módulo

Por fim, para ativar nosso módulo, digite bin/magento module:enable Magenteiro_BaseModule.

Ativando nosso módulo com bin/magento module:enable

Neste momento o Magento limpará os caches e ativará nosso novo módulo.

Pronto! Nosso módulo base está pronto e reconhecido pelo Magento. Agora podemos trabalhar nossas customizações e implementações nele.

Se desejar, informe seu nome e e-mail abaixo e receba o módulo em seu e-mail para usá-lo como referência no futuro.

O tal do composer.json no módulo para Magento 2

Como você notou, todos os módulos e temas do Magento 2 possuem um arquivo composer.json. Mesmo que você não pretenda distribuir sua extensão, ele é necessário para o bom funcionamento do seu pacote. Isso porque o Magento 2 possuí um gerenciador de componentes (Component Manager) que lê este arquivo durante a instalação, desinstalação, e atualização de um módulo, mesmo que este módulo não tenha sido instalado via composer.

Há uma série de convenções e padrões que devemos seguir ao criar nosso composer.json. Elas estão disponíveis neste link da documentação oficial, embora todos os campos também são explicados de forma detalhada na documentação de esquema do próprio composer.

No entanto, vou comentar duas que são importantes e que foram usadas no nosso módulo de exemplo.

"name": "magenteiro/basemodule",

O parâmetro name deve seguir o nome que seria (ou será) usado quando você distribuir o seu módulo no Packagist (repositório oficial do composer) ou mesmo no Magento Marketplace. Por padrão, usa-se o nomeDoFornecedor/NomeDoModulo, mas você pode dar outro nome caso queira ser encontrado de forma diferente na hora de distribuir seu módulo.

O nome do nosso módulo e como o Magento irá reconhecê-lo é identificado no registration.php, que é carregado automaticamente na inicialização do nosso módulo.

"type": "magento2-module",

O type especifica que tipo de componente é este pacote. Ele pode ser:

  • magento2-module usado em módulos em geral
  • magento2-theme para temas
  • magento2-language para pacotes de tradução
  • magento2-component para outras coisas que não se encaixem nos tipos acima

Gostou deste artigo? Comente, compartilhe, e se inscreva para receber notificações sobre conteúdo Magento todas as semanas.

Imagem principal por Nadine Shabaana.

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/desenvolvimento-m2/como-criar-um-modulo-para-magento-2/"]