Creación de un módulo en Magento 2

Magento 2 es uno de los principales y más completos e-commerce que existen en el mercado. Actualmente está en su versión 2, que ha incluido numerosos cambios y características como su nuevo panel de administración, más moderno y con mejor experiencia de usuario, mejoras en rendimiento y escalabilidad y posibilidad de añadir temas y extensiones fácilmente mediante su marketplace.

Una de las características que tiene Magento 2 es que es un sistema modular, por lo que uno de los primeros aspectos que debemos conocer si queremos utilizarlo para su desarrollo es el de cómo crear un módulo.

Para ello, debemos de haber instalado Magento anteriormente, el cual es posible a través de Composer. La instalación final es muy sencilla, pues Magento dispone de un asistente que nos ayudará en todo el proceso, aunque debemos tener unas claves de autenticación que podemos obtener si nos registramos. 

http://devdocs.magento.com/guides/v2.0/install-gde/install-quick-ref.html

Estructura de un módulo

Los módulos comúnmente se identifican a partir de su Vendor, y un nombre de módulo. Y éstos se suelen ubicar dentro de la carpeta app/code a partir del directorio de instalación de Magento.  

Un módulo típico se compone de los siguientes ficheros:

http://devdocs.magento.com/guides/v2.0/extension-dev-guide/build/module-file-structure.html

No es necesario conocer todos los tipos de ficheros, si bien debemos conocer los más importantes:

  • registration.php: Este fichero es el que identifica al módulo. Es necesario para crear un módulo.
  • etc/module.xml: Este es el fichero principal de configuración. También es requerido si queremos que nuestro módulo funcione.
  • Carpeta Block: Aquí debemos incluir nuestros bloques. Un bloque es simplemente un pedazo de página a visualizar, lo veremos más adelante.
  • Carpeta Controller: Es donde se incluyen los controladores, siguiendo el patrón modelo-vista-controlador.
  • Carpeta Model: En esta carpeta se incluyen todas las clases que van a implementar la lógica de negocio de nuestro módulo.
  • Carpeta Setup: En esta carpeta incluimos las clases que van a generar nuestra estructura interna de base de datos, a la vez que los datos principales, cuando instalamos el módulo.

 

Una vez definidos los ficheros principales, debemos ejecutar el comando en una terminal (suponiendo que nos encontramos en el directorio raíz de Magento)

php bin/magento setup:upgrade

Si nuestro módulo aparece en la lista de módulos instalados, es que hemos añadido nuestro módulo correctamente.

Crear un controlador en Magento 2

A partir de aquí, una de las tareas principales en cualquier módulo es la de visualizar contenido en una página. Para ello, hay que definir una ruta. Esta ruta es la base en la cual podemos crear páginas nuevas. Hay que crear una carpeta nueva en etc llamada frontend (para indicar que añadimos la ruta en la parte pública), y añadir el fichero routes.xml. 

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id=“pruebas” frontName=“pruebas”>
            <module name=“Imaginanet_Pruebas” />
        </route>
    </router>
</config>

Después, debemos añadir un controlador. Normalmente el controlador se crea dentro de una subcarpeta con el nombre del controlador. También al controlador principal se le suele llamar Index, por lo que lo vamos a llamar así.

<?php

namespace ImaginanetPruebasControllerIndex;

class Index extends MagentoFrameworkAppActionAction
{
    /** @var MagentoFrameworkViewResultPageFactory  */
    protected $resultPageFactory;
    public function __construct(
        MagentoFrameworkAppActionContext $context,
        MagentoFrameworkViewResultPageFactory $resultPageFactory
    ) {
        $this->resultPageFactory = $resultPageFactory;
        parent::__construct($context);
    }

    public function execute()
    {
        return $this->resultPageFactory->create();
    }
}

Este controlador se encarga simplemente de cargar una página, pero también es posible redireccionar a otras páginas, entre otros. Para ello, utiliza la inyección de dependencia para obtener la factoría de páginas y crear la página correspondiente.

Crear un layout y una plantilla en Magento 2

El siguiente paso será crear un layout. Los layouts son ficheros XML que definen la estructura de las páginas. En nuestro ejemplo sería así:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <title>
            Título
        </title>
    </head>
    <body>
        <referenceContainer name="content">
            <block class="MagentoFrameworkViewElementTemplate" template=“Imaginanet_Pruebas::index.phtml"/>
        </referenceContainer>
    </body>
</page>

En los layouts hay dos tipos de elementos importantes:

  • block: Representa una parte de una página.
  • container: Representa un conjunto de bloques.

Los bloques son controlados por una clase PHP que permite obtener los datos que necesita este bloque para poder visualizarse. En este ejemplo, el bloque que estamos declarando lo controla la clase Template de Magento, pero si quisiéramos controlarla nosotros mismos deberíamos crear la clase correspondiente dentro de la carpeta Block. El bloque tiene un parámetro llamado template, en el que indicamos la plantilla que va a usar.

El nombre del fichero layout es un nombre definido, por lo que no podemos cambiarlo. El fichero layout lo busca Magento a partir del frontName de la ruta, la subcarpeta del controlador y la clase del controlador, por lo que el fichero resultante se deberá llamar: pruebas_index_index.xml

Por último, debemos crear la plantilla, que contiene el código HTML del que se compone el módulo. Un aspecto importante sobre las plantillas es que dentro del código HTML únicamente podemos llamar al objeto $block, por lo que es necesario obtener todos los datos en el bloque antes de mostrarlos en la plantilla.

Comentarios

Sin comentarios
Ha habido un error en el envío
Comentario enviado. Será revisado por la moderación antes de ser publicado.

Deja tu comentario

Tu nombre:
Tu email:
Tu comentario: