Creazione di un modulo

Introduzione (EN): http://drupal.org/node/292

Maggiori info per i moduli (EN): http://drupal.org/node/231276

Argomenti:

Il meccanismo degli hook

Drupal è un framework per cms che mette a disposizione il meccanismo degli hook per interagire con core e con altri eventuali moduli.

Il meccanismo è basato sul nome delle funzioni dichiarate all'interno del codice del modulo e il nome del modulo stesso.

Ad esempio hook_menu permette di registrare un path e associargli un comportamento/contenuto da restituire nel brower. Per definire l'interazione del vostro modulo, chiamiamolo moduloprova, si dovrà definire la funzione moduloprova_menu.

Drupal utilizza la funzione module_invoke per eseguire uno specifico hook per uno specifico modulo, cioè ad esempio module_invoke('moduloprova','menu') invocherà moduloprova_menu(). Drupal fa un ciclo sulla lista dei moduli attivi per eseguirli tutti.

L'interazione avviene o tramite un valore o struttura restituito (solitamente un array associativo), o tramite la modifica di parametri passati per riferimento (o entrambe). Per le modalità di interazione e i parametri di con i quali vengono chiamati i vari hook, vedere http://api.drupal.org/ e in particolare http://api.drupal.org/api/drupal/includes--module.inc/group/hooks/7 per la lista di hook disponibili.

Naturalmente è possibile sviluppare un modulo che mette a disposizione l'interazione con esso usando lo stesso meccanismo (module_invoke), ne è un esempio complesso ubercart

Argomenti:

Il file *.info

Drupal riconosce la presenza di un modulo dalla posizione della cartella che contiene il codice (ad esempio se si trova in /modules o /sites/all/modules) e dall'esistenza di un file [nomemodulo].info che definisce:

  • il nome del modulo
  • la descrizione
  • il pacchetto
  • la versione
  • la compatibilità con il core
  • le dipendenze
  • l'elenco dei file

esempio, forumcontcheck.info :

name = forumcontcheck
description = Interagisce con forum aggiungendo un controllo sui contenuti
package = Forum Addons
version = "7.x-1.0-alpha4"
core = 7.x
dependencies[] = forum
files[] = forumcontcheck.module
files[] = forumcontcheck.inc.php

alcune informazioni sono opzionali, come dependencies e files (fine normalmente controllata la presenza di un file nomemodulo.module). Il core deve essere specificato: 6.x, 7.x, 8.x, etc.

Argomenti:

Il file *.install

Argomenti:

Il file *.module

Argomenti:

I principali hook

  1. hook_block
  2. hook_menu
  3. hook_perm
  4. hook_theme
  5. hook_nodeapi
  6. hook_form (load, view, insert, update, validate, ...)
  7. hook_form_alter

Argomenti: