Cómo crear un módulo básico en Drupal 8

Con la llegada de Drupal 8, la manera en la que desarrollamos nuestros portales web se ha visto influido por significativos cambios, tanto en la estructura de archivos (inclusión de archivos YAML) como en la manera en la que «picamos» código: orientación a objetos o componentes de Symfony. Estas modificaciones nos proponen un desarrollo más intuitivo y, una vez que lo dominemos, mayor sencillez y rapidez.

En este post Antonio Montaña, compañero de ASPgems, nos hace el seguimiento de un ejemplo de creación de un módulo básico de Drupal 8 creando un bloque que muestre «Hola Mundo!».

Creación 

En primer lugar creamos la carpeta que va a contener todos los elementos que definirán el módulo, dentro de ella crearemos dos archivos necesarios para que Drupal lo reconozca:

·{tu_modulo}.info.yml – En el que se define toda la información general de tu módulo. Sin este archivo, Drupal no te permitiría activar el módulo y por lo tanto lo omitiría en la ejecución.

 Ejemplo:

name: my_module //Nombre máquina del módulo.

type: module  //Indica a Drupal que es de tipo módulo.

description: Basic hello_world custom module //Breve descripción de la funcionalidad de tu módulo.

core: 8.x //Versión del core de tu portal Drupal.

package: Drupal //Categoriza al módulo dentro de un grupo.

·{tu_modulo}.module – Define los hooks que vamos a utilizar. En nuestro caso lo dejaremos en blanco ya que no vamos a necesitar ningun hook.

En segundo lugar creamos una carpeta llamada «src» donde define el plugin «Block» (creando una carpeta llamada «Plugin» dentro de «src» y, posteriormente, creando una carpeta que llamaremos «Block»), que contiene un archivo (HMBlock.php) donde se incluye la clase extendida de «BlockBase» previamente declarada en el core de Drupal, en la que se contempla la función build() encargada de construir el bloque.

Vamos con el ejemplo del contenido de HMBlock.php

<?php

/**

   * @file

* Contains Drupalmy_modulePluginBlockYourBlockName.

*/

namespace Drupalmy_modulePluginBlock;

use DrupalCoreBlockBlockBase;

/**

* Provides hola_mundo_block.

*

* @Block(

*   id = «hola_mundo_block»,

*   admin_label = @Translation(«Hola mundo block»),

*   category = @Translation(«Blocks»)

* )

*/

class HMBlock extends BlockBase {

/**

* {@inheritdoc}

*/

public function build() {

return array(‘#markup’ => ‘

Hola Mundo!

‘);

}

}

La estructura de tu módulo debería de ser parecida a esta:

►my_module

        ►{tu_modulo}.info.yml

►{tu_modulo}.module

►src

►Plugin

►Block

►HMBlock.php

Hecho esto ya tendríamos nuestro módulo listo para ser instalado.

Instalación/Desinstalación

Podemos hacerlo de dos maneras: 

Drush: Requiere tener instalado drush en tu máquina, aquí un enlace de como hacerlo https://www.drupal.org/node/1791676. Una vez instalado, nos situamos en la raíz de nuestro proyecto Drupal 8 e introducimos la siguiente línea:

 drush pm-enable my_module

Para desinstalarlo, bastaría con poner:

 drush pm-disable my_module

Interfaz: En el navegador debemos ir al listado de módulos (example.com/admin/modules), marcar el checkbox que corresponda a nuestro módulo y pulsar el botón «Install».

Para desinstalarlo, debemos ir a la url (example.com/admin/modules/uninstall), seleccionar el checkbox que corresponda al módulo y pulsar «Uninstall».

Si todo ha ido según lo previsto, iremos a (example.com/admin/structure/block) y nos aparecerá nuestro bloque en el listado para colocarlo en la región que deseemos.

Gracias por dejarnos ayudarte en tu camino hacia el desarrollo Drupal. Si tienes alguna duda, no dudes en dejar un comentario en este post , o escribe a  Antonio Montaña. Estaremos encantados de ayudarte.