Magento 2: cómo crear un módulo propio

Magento funcionamiento interno

Ahora es mucho más sencillo arrancar un nuevo módulo para Magento 2. Aquí que dejo unos sencillos pasos para crear un módulo propio. Luego es cuestión de ir añadiendo las configuraciones que quieras, menús en backend, zonas en frontend, plantillas, controladores, tareas programadas, y un largo etcétera..

La idea es la misma que en muchos otros CMS, al modo de Vendor/Modulo que vamos a seguir estructurando los códigos.

Al grano, los primeros ficheros

Parafraseando teorías, y dejando de lado todo eso, vamos directos a crear los ficheros necesarios. Luego algunas pocas explicaciones, pero pocas, para no aburrirte 😉

El fichero principal que da las primeras configuraciones al módulo en app/code/Jnjsite/Test/etc/module.xml:

<?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="Jnjsite_Test" setup_version="1.0.0">
  </module>
</config>

Los datos para Composer en el fichero app/code/Jnjsite/Test/composer.json:

{
  "name": "jnjsite/test",
  "description": "A module for testing purposes only.",
  "type": "magento2-module",
  "version": "1.0.0",
  "license": [
    "OSL-3.0",
    "AFL-3.0"
  ],
  "require": {
    "php": "~5.6.0|7.0.2|7.0.4|~7.0.6"
  },
  "autoload": {
    "files": [ "registration.php" ],
    "psr-4": {
      "Jnjsite\\Test\\": ""
    }
  }
}

El registro del módulo para el autocargador de clases, en el fichero app/code/Jnjsite/Test/registration.php:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Jnjsite_Test',
    __DIR__
);

Esto es todo, no hace absolutamente nada este módulo pero es la base para poner cualquier funcionalidad dentro de un Magento 2. Queda flushear y limpiar cachés, y actualizar..

Limpiando datos temporales, y unas pocas explicaciones

Sólo nos queda ejecutar desde línea de comandos los siguientes comandos, valga la redundancia:

php bin/magento cache:flush
php bin/magento cache:clean
php bin/magento setup:upgrade

Para comprobar que el módulo en cuestión está activado podemos hacer así desde el directorio principal del proyecto:

php bin/magento module:status

Sólo queda mirar en la respuesta por pantalla que el módulo en cuestión lo ha detectado. Tenemos que ver algo como lo siguiente en el listado que aparecerá:

...
Magento_Quote
Magento_Widget
Magento_Rule
Magento_CatalogRule
Jnjsite_Test
Magento_Cron
Magento_SalesSequence
Magento_Payment
Magento_CatalogInventory
...

Mira que ya debemos de ver el módulo que acabamos de crear. Le he llamado Test y Jnjsite como nombre de vendor. Si no sabes lo que son los vendor y programas en PHP, deberías de ponerte al día con esto, esto es material para otro post. La idea es que tu nombre, o el de tu empresa, que es el ‘Jnjsite’ que he puesto, es el vendor. Luego dentro de un vendor, puedes crear todos los módulos que quieras.

Finalmente cada módulo en el mercado se llamará con la pareja Vendor_Module, así que para este post lo he llamado al módulo Jnjsite_Test.

Otro día más.. ¡Un saludo!

Compartir..

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *