14/03/2016 Els mòduls en Drupal

Què és un mòdul?

La potència d'ampliació de Drupal, ve donada en gran mesura per la seva estructura modular.

Aquesta modularitat permet adaptar Drupal de forma molt acurada a les nostres necessitats, la qual cosa converteix a Drupal en un dels "frameworks" més potents i configurables del mercat.

Bàsicament existeixen dos tipus de mòduls:

1. Mòduls del nucli del Drupal "Core Modules"

Venen per defecte amb el nucli de Drupal, normalment són els més utilitzats, tot i així sempre pot decidir instal·lar-los o no, segons les necessitats de cada projecte, recordeu que "generalment", amb més mòduls instal·lats, rendiment més baix.

2. Mòduls de tercers  "Contributed Modules"

Provenen de la comunitat de Drupal, la qual és de les més actives i extenses, pràcticament hi ha mòduls per fer de tot, a més moltes vegades, els mateixos creadors dels mòduls hi donen suport. És important, fixar-se si el mòdul, està en versió beta o estable, i si aquest té un manteniment regular, per la seva millora i correcció de "bugs".

Pots consultar els mòduls disponibles a: https://www.drupal.org/project/project_module

 

Mòduls de tercers versus mòduls a mida

A part dels mòduls del nucli, i els mòduls de tercers, la flexibilitat de Drupal, ens permet crear-nos els nostres propis mòduls.

Normalment optem per aquesta opció si tenim alguna necessitat que no està coberta, o simplement volem simplificar una funcionalitat, que es pot resoldre amb diversos mòduls contributius genèrics, però com és una utilitat molt especifica, podem guanyar rendiment (ens estalviem d'instal·lar molts mòduls) amb un petit mòdul a mida, que faci directament la funcionalitat que necessitem.

Tot això gràcies a l'API de Drupal, i al seu sistema de "hooks", que ens permeten interactuar directament amb el "core" de Drupal de forma senzilla.

En funció de les necessitats del projecte que estigueu desenvolupant, haureu d'analitzar si existeixen mòduls de tercers, que abasten les vostres necessitats, o bé heu d'optar per la creació de mòduls a mida per assolir els vostres objectius.               

Petit mòdul a mida d'exemple: "Hola món"

Anem a fer un petit mòdul d'exemple (molt senzill), que ens mostri en una plana web que digui "hola món", aquest petit exemple, ens permetrà veure com utilitzar un "hook" de Drupal, el que farem servir és el "hook_menu()":

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

Aquest exemple està fet per la versió 7 de Drupal (actualment la més utilitzada i estable).

A la feina, fem una carpeta dins del directori "sites/all/modules" i li diem "holamon". Dins d'aquesta carpeta fem dos arxius, "holamon.info" fitxer de configuració del mòdul, i "holamon.module" fitxer que conté la programació del mòdul.

A continuació detallem el contingut dels mòduls:

 

                               holamon.info

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

                               name = Hola món

                               description = Crea la plana "/holamon" on diu "Hola món"

                               package = Els menus mòduls a mida

                               core = 7.x

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

 

                               Els camps utilitzats són bastant auto descriptius:

                                                "name" el nom del mòdul.

                                               "description" una descripció del que fa el mòdul.

                                               "package" el grup de mòduls a què pertany.

                                               "core" la versió del "core" per la que està dissenyat.

 

                               holamon.module           

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

                               <?php

 

                               /*

                                * hook_menu()

                                */

                               function holamon_menu()

                               {

                                               $items = array();

                              

                                               $items['holamon'] = array(

                                               'title' => 'Hola món',

                                               'page callback' => 'holamon_plana',

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

                                               );

                              

                                               return $items;

                               }

  

                               /*

                                *

                                */

                               function holamon_plana()

                               {

                                               return "Hola món";

                               }

 

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

 

Dins de la funció "holamon_menu()", que utilitza el "hook_menu()", substituint "hook" pel nom del mòdul, es defineix la ruta "holamon", el títol de la plana "Hola món", el text a mostrar o obtenim de la funció "holamon_plana()".

També definim el permís per accedir a la plana amb 'access argument', li hem ficat el permís 'acces_content' (accedir al contingut), aquest permís normalment el tenen tots els usuaris, inclosos els anònims, el que vol dir que tothom pot veure aquesta plana.

Un cop acabat el mòdul, per accedir a la seva funcionalitat, només resta accedir a la plana d'instal·lacions de mòduls "admin/modules/",  i seleccionar/instal·lar el nostre nou mòdul.

 

Referències:

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

Cercador de mòduls en Drupal: https://www.drupal.org/project/project_module