Como crear un hook personalizado en Drupal 7

Author Top
estebanvalerioh

Crear un hook personalizado es más fácil de lo que se pueda pensar.  En este post les indico una forma de hacerlo y en caso de tener duda de qué son hooks, les recomiendo visitar el post ¿Qué son los hooks en Drupal y cuales son los más usados?

1. Invocar hook personalizado.

Para definir el hook podemos utilizar alguna las siguientes funciones:

module_invoke($module, $hook)
module_invoke_all($hook)

La primera función invoca a un hook en un módulo determinado, mientras que la segunda función invoca a un hook, en todos los módulos habilitados que lo implementen.

Según la documentación de Drupal, es buena práctica crear en nuestro módulo un archivo con el nombre modulename.api.php, donde especifiquemos y ejemplifiquemos el uso de nuestros hooks.

Supongamos que tengo un módulo custom llamado pruebas que cuenta con una tabla en mi base de datos.  Y tengo una función que inserta valores en la tabla y luego invoca el hook que estamos creando llamado hook_values_insert() para pasar el resultado obtenido de insertar en la base de datos a otros módulos, con el fin que implementen algo con los datos, esa función se vería así:

function pruebas_insert_values($values) { 

  ...  

  // Inserta valores en mi tabla.
  $resultado = db_insert('mi_tabla')->fields(array());

  // Invoca hook_values_insert() para todos los módulos pasando como parametro
  // el resultado obtenido luego de la inserción en la tabla.
  module_invoke_all('values_insert', $resultado);
}

2. Ejemplificar el hook personalizado.

En la sección anterior se creo el llamado al hook values_insert, para implementar el hook crearemos el archivo pruebas.api.php se tendría que ver así:

/**
 * @file
 * Hooks proveidos por el modulo de pruebas.
 */

/**
 * Responde luego de insertar valores en la función pruebas_insert_values().
 *
 * Este hook se invoca luego de que los valores fueron insertados en la base de datos.
 *
 * @param array $values
 *   Valores que fueron insertados.
 */
function hook_values_insert($values) {
  // Hacer algo con $values.
  var_dump($values);
}

De esta manera, todos los módulos que deseen pueden implementar la función hook_values_insert() van a poder utilizar los valores que fueron insertados en la base de datos.

Espero que le saquen provecho.

Saludos!

bursa esc
bursa eskort
bursa escort bayan bursa travesti escort bursa merkez escort bursaescort bursa escort bayanlar alanya eskort bayan antalya bayan eskort havalimanı transfer