Blog
Magento una arquitectura Modular
- diciembre 11, 2023
- Publicado por: admin
- Categoría: Magento 2

Magento Modular. Cabe echar una mirada a la carpeta core de Magento /vendor/magento y al parecer todo lo que podemos encontrar ahí son estructuras de Módulos en Magento, son como piezas de código que trabajan ya sea de forma autónoma accionadas desde otras piezas de código mediante eventos o procesos que realizan funciones especificas, o bien piezas de código que pueden contener dependencias entre distintos módulos todos sincronizados en una tienda de comercio electrónico como Magento. Por poner un ejemplo supongamos que un cliente llega a una tienda de Magento y la primer pantalla que encuentra es la HOME, esta página principal puede haber llamado un determinado número de Módulos para construir un banner de imágenes, un modulo para mostrar una lista de productos del catálogo, una sección de Menú de navegación y muchas otras características más. Ahora imaginemos que cada sección en la HOME es una pieza de código como la que menciono y a eso es justo a lo que me refiero con Magento Modular, todas estas piezas que están formadas por una carpeta principal y dentro una estructura de carpetas con archivos de programación en conjunto representan a un Módulo que mostrará una vista o ejecutará una acción.
Ahora bien ¿Qué pasaría si deshabilito una pieza de código, específicamente un Módulo? Probablemente el sitio siga funcionando si es que esta pieza de código no contiene ninguna dependencia de otras piezas de código, supongamos que la sección de banner de la parte principal de una HOME no tiene ninguna dependencia y con un simple comando desde la consola de Magento la deshabilitamos, lo único que sucedería es que ese bloque o sección dejaría de verse pero la tienda seguiría su funcionamiento normal.
Extendiendo lo Nativo
Hablando de Módulos que se pueden extender o a los cuales se pueda agregar nueva funcionalidad que no es nativa, Magento lo permite de una forma muy elegante y ahora en esa versión 2 la cual es más limpia. Retomando el ejemplo de un Módulo que pinta una sección de Banner en la parte superior de la HOME pensemos en que este Banner mostraría un diseño con 5 opciones de productos en donde se pintará un botón para ir al detalle del producto, es algo común en componentes así colocados en las páginas principales de los sitios pero ¿Qué pasa cuando un producto ya está fuera de stock? Seguramente cuando las personas dan un clic al botón los llevara al detalle del producto y mediante un mensaje les dirá: “Este producto no tiene stock” y no podrán adquirirlo. Para muchos clientes eso podría ser molesto, el tener que volver a la página principal o moverse a otra sección, pero ¿Qué pasaría si podemos extender ese módulo nativo y programar mediante un Módulo personal la instrucción de que muestre solo aquellos productos que aún contienen stock? De esta forma podría ser más especifico si un producto ya no tiene stock y en automático desaparecería de la sección principal, es algo que se puede hacer sin problema alguno, solo basta construir un nuevo módulo, armar la estructura correcta de carpetas y archivos y programar las indicaciones necesarias. Al final podrá ser administrado como nosotros consideremos mejor, bien activándolo y desactivándolo sin que tenga que implicar a las instrucciones nativas.
La estructura de un Modulo
En un artículo realizado anteriormente titulado “Estructura de archivos de un Módulo básico en Magento” muestro a detalle como debería estar construido, te invito que lo revises para reforzar el tema. En esta sección la intención es recordar que para que un modulo tenga vida en Magento tan solo requiere de dos simples archivos: Uno de configuración en formato XML llamado module.xml y otro de Script de programación de PHP llamado resgistration.php. Con el simple hecho de crear estos dos archivos en sus correspondientes destinos dentro de cada carpeta que le corresponde el modulo podrá verse reflejado en la tabla de módulos de Magento, sin embargo no tendría ningún sentido solo crear esos archivos, por ello es necesario comprender que la estructura de carpetas nos indicarán qué funcionalidad necesitamos que realice nuestro módulo, puede ser que extienda una clase nativa, ejecute un cron, active un evento, dar de alta una nueva tabla en la base de datos o actualice una existente e incluso agregue nuevos registros, además de que muestre una vista personalizada o modifique una nativa, dependiendo de nuestras necesidades es como podremos ir creando archivos de configuración y clases de PHP, estos archivos deben ser creados en las secciones que indiquen la documentación oficial de Magento que son reglas ya definidas para mantener un estándar y cumplir con las recomendaciones de Magento para las mejores practicas de desarrollo. Con esto quiero decir que es importante no desarrollar sin seguir un lineamiento, he visto muchos proyectos en los que se generan clases por diversos puntos y esto al final no es una buena práctica, más para los futuros programadores que necesiten de dar mantenimiento a nuestros Módulos o incluso para nosotros mismos, ya que con el paso del tiempo podemos olvidar cómo lo construimos y sera difícil localizar cada archivo.
Conclusión
La finalidad de crear este artículo es para dar seguimiento a la creación de Módulos Básico pasando a crear Módulos más avanzados que contengan más secciones y así ir adquiriendo una mejor comprensión de la lógica de construcción de estas piezas de código que son una parte fundamental y al mismo tiempo clave para el desarrollo avanzado en Magento 2.