Al crear un módulo, el primer paso es crear los archivos y carpetas necesarios para que nuestro módulo pueda existir dentro del proyecto. Después de crear los archivos básicos, tendremos un módulo registrado en el proyecto mediante registration.php y dado de alta en la tabla de módulos como un módulo del proyecto con module.xml, pero sin funcionalidad. En los siguientes pasos, añadiremos funciones adicionales a este módulo para comprender un poco más su creación.
Primero, con tu editor de código favorito, abre la carpeta raíz de tu sitio web de Magento 2. Lo primero es ir a la carpeta app/code/ que es donde se realiza todo el desarrollo del módulo. También se recomienda acceder a la línea de comandos, ya que Magento 2 cuenta con una herramienta de consola integrada con numerosos comandos que podemos usar durante el desarrollo, así que ten tu consola abierta o bien si tu ID te permite tener una consola dentro del mismo programa como lo hace VisualCode.
 |
Consola VisualCode |
Voy a intentar llevarte de la mano paso a paso, para que sea mucho más sencillo. A continuación, vamos a crear los archivos necesarios, como ya te lo había comentado, primero para registrar un módulo de Magento:
- Crearemos un módulo HolaMundo siguiendo con la tradición de los programadores de mis tiempos, para lo cual vamos a crear un espacio de nombres Marcgento, si no sabes que es un espacio de nombre, te invito a revisar que es un espacio de nombre. Vamos a la raíz de nuestro proyecto y crearemos la siguiente estructura de carpetas para el módulo a desarrollar, app/code/Marcgento/HolaMundo. Si te das cuenta aquí creamos la carpeta llamada Marcgento que representa nuestro espacio de nombre:
- app/code/Marcgento
- app/code/Marcgento/HolaMundo
- app/code/Marcgento/HolaMundo/etc
- Cuando una instalación es desde cero, no tendrás la carpeta app ni code así que deberás crearlas, y finalmente dentro crearás Marcgento como espacio de nombre y la carpeta HolaMundo que representará el módulo a desarrollar.
- En la carpeta, etc del módulo, es necesario crear un archivo llamado module.xml con el siguiente contenido, que, como ya te había comentado, representa un archivo principal para la existencia de nuestro módulo, el cual también es el encargado de darlo de alta en la base de Magento:
<?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="Marcgento_HolaMundo" setup_version="1.0.0">
<sequence>
<module name="Magento_Catalog"/>
</sequence>
</module>
</config>
-
Para registrar el módulo, debemos crear un archivo
registration.php en la carpeta
app/code/Marcgento/HolaMundo/ con el siguiente contenido:
En Magento 2, existen archivos de definición de estilo XML (XSD) que describen la estructura de los archivos XML de configuración. En la etiqueta <config> se configura el archivo XSD. Es importante comentar que la definición de este nodo con sus atributos debe estar de forma correcta, ya que esto podría ocasionar que el módulo no se ejecute.
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::
MODULE,
'Marcgento_HolaMundo',
__DIR__
);
-
Hasta este momento podríamos decir que ya tenemos un nuevo módulo en Magento, que por ahora no realizaría nada excepcional, pero nos permite comprender cuáles son los dos archivos principales que debemos crear para agregar un nuevo módulo en Magento, así que ahora abre tu terminal y dentro de la ruta principal del proyecto es en donde se deberían ejecutar los siguientes comandos:
php bin/magento cache:clean
php bin/magento setup:upgrade

- De igual forma, te recomiendo ejecutar el siguiente comando para generar los archivos estáticos del proyecto para que tanto el front-end como back-end se muestren de forma correcta.
php bin/magento setup:static-content:deploy -f
-
Cuando todo esté correcto, podrás ver el nombre del módulo en la salida del comando php bin/magento setup:static-content:deploy -f.

En resumen
El desarrollo de un módulo en Magento 2 es mucho más sencillo que en Magento 1 desde mi punto de vista. El concepto de grupos de código ha desaparecido; todo se almacena en una sola carpeta (código, traducciones, plantillas, CSS, etc.). Esto facilita enormemente el desarrollo y el mantenimiento de tus módulos creados en Magento.
Como pudiste ver solo para inicializarlo, debemos crear un archivo PHP (registration.php) y el archivo module.xml en la carpeta, etc del módulo. En el archivo module.xml, nos permitió inicializar el nombre Marcgento_HolaMundo con el número de versión y la secuencia en que este último nodo representa las dependencias que puede tener el módulo a desarrollar. Después de crear los archivos del módulo, ejecutamos el comando setup:upgrade. Al ejecutar este comando, se ejecuta el procedimiento de instalación o actualización de todos los módulos. En este proceso, se crean numerosas clases generadas en la carpeta var/generation. También ejecutamos un par de comando para limpiar la caché y ejecutar los scripts de esta forma desde la consola. Esta es una herramienta que se introdujo en Magento 2 y sustituye a las herramientas de terceros de Magento 1 (como n98magerun y wiz). Al ejecutar el comando php bin/magento, se puede ver una lista de todos los comandos disponibles. También es fácil agregar nuestros propios comandos a un módulo, en algún curso más adelante, te podría enseñar a hacer esto.