Los hooks son el principal mecanismo de comunicación entre módulos Drupal y entre los módulos y el core. Básicamente si quieres aprender a desarrollar en Drupal tienes que entender y conocer su estructura de módulos.
Si queremos implementar un hook en nuestro módulo simplemente deberemos implementar una función con la siguiente pinta:
function <nombre_mi_modulo>_<hook>() { }
Por ejemplo, si hemos creado un módulo llamado ‘reservas’ y queremos implementar el hook ‘hook_menu'(Que nos permite registrar nuevas URLs) lo haremos de la siguiente forma:
function reservas_menu() { /* Aquí la implementación del hook */ $items = array(); $items['reservas'] = array( 'page callback' => 'reservas_home', 'page arguments' => array('reservas'), 'access arguments' => array('access content'), 'type' => MENU_SUGGESTED_ITEM ); return $items; }
Ahora bien, si queremos crear nuestros propios hooks(Para que otros módulos puedan interactuar con nosotros) podemos hacerlos de las siguientes maneras:
Simplemente invocando todos los módulos que hayan implementado el hook:
module_invoke_all('hook_mi_propio_hook');
Invocando cada implementación por separado(Por ejemplo para tratar la respuesta) :
foreach (module_implements('hook_mi_propio_hook') as $module) { $respuesta = module_invoke($module, 'hook_mi_propio_hook''); /* O también */ $function = $module . '_mi_propio_hook'; $respuesta=$function($arg1, $arg2); }
Espero que os resulte de utilidad, si os interesa estamos trabajando en unos cursos de formación orientados a capacitar equipos de desarrolladores Drupal.
Buen fin de semana…