Crear un módulo básico en Drupal 8

Vamos a empezar a trabajar con Drupal 8 que es uno de los CMS más completos y en esta nueva versión está basado en Symfony el framework para PHP más completo.

Veamos como crear un módulo básico en Drupal 8. Esa creación de módulos para Drupal 8 la vamos a ver paso por paso.

Paso 1. Crear el directorio del módulo.

Crearemos el directorio para el módulo dentro de la carpeta modules de la raíz del proyecto y dentro de un directorio que se llame custom que vamos a crear. En mi caso mi módulo estará en modules/custom/pruebas_module

Paso 2. Crear el fichero nombre_del_modulo.info.yml

Vamos a crear el fichero de información del módulo, en mi caso, pruebas_module.info.yml en el que le vamos a indicar los datos básicos del módulo, el nombre, la versión, para que versión es el módulo, etc.

name: Pruebas Module
description: Módulo de pruebas
package: Víctor

type: module
core: 8.x

Paso 3. Crear el controlador

La arquitectura de un módulo de Drupal 8, al estar basado en Symfony, utiliza el patrón MVC para trabajar. Entonces tenemos que crear un controlador para crear nuevas páginas o para crear la funcionalidad del módulo. Dentro del directorio del módulo creamos un directorio src, dentro de este otro llamado Controller y dentro ya creamos el controlador. En mi caso quedaría así modules/custom/pruebas_module/src/controller/PruebasController.php

<?php
namespace Drupal\pruebas_module\Controller;
use Drupal\Core\Controller\ControllerBase;

class PruebasController extends ControllerBase {
	
/* Método acción content devuelve directamente un contenido en html, 
este método será usado en una ruta */
  public function content() {
    return array(
        '#type' => 'markup',
        '#markup' => $this->t('Hola mundo !!'),
    );
  }
  
}

?>

Paso 4. Crear rutas

En la raíz del módulo creamos el fichero nombre_de_tu_modulo.routing.yml en mi caso pruebas_module.routing.yml, aqui vamos a definir las rutas de nuestras acciones o métodos del controlador, de forma muy similar a como lo hacemos en Symfony 3, le indicamos el nombre o clave de la ruta, el path o ruta que se va a cargar en la url en si, el controlador, el titulo de la página y los permisos u otras restricciones.

pruebas_module.content:
    path: '/admin/config/modulo-de-pruebas'
    defaults:
        _controller: '\Drupal\pruebas_module\Controller\PruebasController::content'
        _title: 'Modulo de pruebas'
    requirements:
        _permission: 'access content'

Paso 5(opcional). Poner link en un menú

En la raíz del módulo creamos el fichero pruebas_module.links.menu.yml en el cual le indicamos la clave del «enlace», el titulo y la descripción que va a tener el link, le ponemos la clave del menú donde lo vamos a poner y la ruta a la que va a llevar el enlace. Puedes ver el listado de claves de las zonas donde se pueden poner enlaces para acceder a las páginas y secciones de los nuevos módulos.

pruebas_module.homepage:
  title: Modulo de pruebas
  description: 'Configurar el modulo de pruebas'
  parent: system.admin_config_ui
  route_name: pruebas_module.content

Paso 6. Activar el módulo

Entramos en el panel de administración > Ampliar, marcamos el check en nuestro modulo y le damos a instalar.

Como crear un módulo básico en Drupal 8

Ahora ya podemos probar nuestro módulo, tenemos un link en la sección de configuración.

crear modulos para drupal 8

Y si entramos a la ruta en concreto que hemos definido o le damos click al link, nos muestra nuestro Hola Mundo en Drupal 8.

crear modulo personalizado hola mundo drupal 8

Pues esto es todo con esto ya sabemos crear un módulo básico en Drupal 8 y como has podido comprobar la forma de desarrollar módulos es muy limpia y es muy recomendable aprender Symfony3 (te recomiendo mi curso de desarrollo backend con Symfony 3) para poder entenderla y poder programar mejor con Drupal.

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post