15/03/2016 Los módulos en Drupal

¿Qué es un módulo en Drupal?

La potencia de ampliación de Drupal, se da en gran medida por su estructura modular.

Esta modularidad permite adaptar Drupal de forma muy cuidadosa a nuestras necesidades, lo que convierte a Drupal en uno de los "frameworks" más potentes y configurables del mercado.

Básicamente existen dos tipos de módulos:

1. Módulos del núcleo de Drupal "Core Modules"

Vienen por defecto con el núcleo de Drupal y normalmente son los más utilizados. Aun así siempre podemos decidir si instalarlos o no, según las necesidades de cada proyecto ya que "generalmente" a mayor número de módulos instalados, menor es el rendimiento.

2. Módulos de terceros  "Contributed Modules"

Provienen de la comunidad de Drupal, una de las más activas y extensas. Prácticamente hay módulos para todo y muchas veces, los mismos creadores ofrecen soporte. Es mportante que nos fijemos si el módulo, está en versión beta o estable, y si este tiene un mantenimiento regular, para su mejora y corrección de "bugs".

Puedes consultar los módulos disponibles en: https://www.drupal.org/project/project_module

 

Módulos de terceros versus módulos a medida

A parte de los módulos del núcleo y los módulos de terceros, la flexibilidad de Drupal, nos permite crearnos nuestros propios módulos.

Normalmente optamos por esta opción si tenemos alguna necesidad que no está cubierta, o simplemente queremos simplificar una funcionalidad, que se puede resolver con diversos módulos contributivos genéricos, pero como es una utilidad muy específica, podemos ganar rendimiento (nos ahorramos instalar muchos módulos) con un pequeño módulo a medida, que haga directamente la funcionalidad que necesitamos.

Todo esto gracias a la API de Drupal, y a su sistema de "hooks", que nos permite interactuar directament con el "core" de Drupal de forma senzilla.

En función de las necesidades del proyecto que estemos desarrollando, tendremos que analizar si existen módulos de terceros, que abastecen vuestras necesidades, o bien debeis optar por la creación de módulos a medida para alcanzar vuestros objectivos.               

Pequeño módulo a medida de ejemplo: "Hola mundo"

Vamos a crear un pequeño módulo de ejemplo (muy senzillo), que nos muestre en una página web que diga "hola mundo". Este pequeño ejemplo nos permitirá ver cómo utilizar un "hook" de Drupal, lo que utilizaremos será el "hook_menu()":

https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu/7

Este ejemplo está hecho para la versión 7 de Drupal (actualmente la más utilizada y estable).

En el trabajo, hacemos una carpeta dentro del directorio "sites/all/modules" y le nombramos "holamundo". Dentro de esta carpeta creamos dos archivos, "holamundo.info" fichero de configuración del módulo, y "holamundo.module" fitchero que contiene la programación del módulo.

A continuación detallamos el contenido de los módulos:

 

                               holamundo.info

                               8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---

                               name = Hola mundo

                               description = Crea la página "/holamundo" donde diga "Hola mundo"

                               package = Los menús módulos a medida

                               core = 7.x

                               8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---

 

                               Los campos utilizados son bastante auto descriptivos:

                                                "name" el nombre del módulo.

                                               "description" una descripción de lo que hace el módulo.

                                               "package" el grupo de módulos al que pertenece.

                                               "core" la versión del "core" para la que está diseñado.

 

                               holamundo.module           

                               8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---

                               <?php

 

                               /*

                                * hook_menu()

                                */

                               function holamundo_menu()

                               {

                                               $items = array();

                              

                                               $items['holamundo'] = array(

                                               'title' => 'Hola mundo',

                                               'page callback' => 'holamundo_plana',

                                               'access arguments' =>  array('access content')

                                               );

                              

                                               return $items;

                               }

  

                               /*

                                *

                                */

                               function holamundo_pagina()

                               {

                                               return "Hola mundo";

                               }

 

                               8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---

 

Dentro de la función "HolaMundo menú ()", que utiliza el "hook_menu ()", sustituyendo "hook" por el nombre del módulo, se define la ruta "HolaMundo", el título de la página "Hola mundo", el texto a mostrar u obtenemos de la función "holamon_plana ()".

También definimos el permiso para acceder a la página con 'access argumento', le hemos metido el permiso 'acces_content' (acceder al contenido), este permiso normalmente lo tienen todos los usuarios, incluidos los anónimos, lo que quiere decir que todo el mundo puede ver esta página.

Una vez terminado el módulo, para acceder a su funcionalidad, sólo resta acceder a la página de instalaciones de módulos "admin / modules /", y seleccionar / instalar nuestro nuevo módulo.

 

Referencias:

API de Drupal: https://api.drupal.org/api/drupal/7

Hooks disponibles en Drupal: https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7

Buscador de módulos en Drupal: https://www.drupal.org/project/project_module