Las otras respuestas son geniales, precisas y detalladas, pero no estoy seguro de que sean las "palabras simples" que explican los aspectos básicos del concepto que estaba buscando el autor de la pregunta.
Pienso en los ganchos como un punto donde el código se detiene y grita "¿ Alguien más tiene algo que agregar aquí? ". Cualquier módulo puede tener una función que responda a esto y se active con los datos apropiados que se le pasan en ese punto del código.
Un buen ejemplo directo es hook_node_delete () . Cualquier módulo puede usarlo para hacer que las cosas sucedan cada vez que se elimina un nodo. Los documentos le dicen que este gancho pasa al módulo el objeto de ese nodo eliminado para trabajar y describe otra información útil, como sobre el momento exacto de cuándo se llama (por ejemplo, antes de que los datos del nodo se eliminen realmente de la base de datos) , y donde en el código de Drupal se llama el gancho (que puede ser más de un lugar).
Puede explorar qué ganchos existen y averiguar qué datos se les pasan explorando cosas que comienzan con "gancho_" en la API de Drupal .
Los ganchos funcionan según las convenciones de un nombre: utilizando hook_node_delete
como nuestro ejemplo, cuando el proceso de eliminación del nodo alcanza el punto donde se llama el gancho, para cada módulo con una función como esta, [modulename]_node_delete()
donde la palabra gancho en el nombre del gancho se reemplaza con el nombre del módulo (p. Ej. my_amazing_module_node_delete()
), esas funciones se llaman.
¿Por qué? Por lo tanto, cualquier módulo puede hacer cualquier cosa en estos puntos clave: por ejemplo, podría mirar el nodo eliminado y hacer cosas si cumple una determinada condición (por ejemplo, enviar un correo electrónico a un administrador o iniciar un proceso largo).
Algunos ganchos le permiten modificar cosas que se han generado justo antes de que se procesen. Por ejemplo, hook_menu_alter () le pasa los elementos del menú actual que el sistema ha generado. Cualquier módulo puede definir una función some_modulename_menu_alter () y mirarlos, opcionalmente cambiarlos (eliminar algunos, agregar algunos, ordenarlos ...) y volver a pasar el menú recién modificado.
Es simple, realmente potente y está en el corazón de cómo Drupal funciona como un sistema modular. Las implementaciones de ganchos están en el corazón de la mayoría de los módulos de Drupal.
Al mirar a través del código de un módulo de Drupal, puede detectar qué funciones provienen de los ganchos (en oposición a las funciones que simplemente se llaman desde el propio código del módulo), ya que la comunidad de Drupal impone una convención por la cual cada implementación de un gancho tiene un comente delante de esta manera (observe el bit "Implements hook _..."):
/**
* Implements hook_some_hook().
*
* Some descriptive summary of what this does
*/
function my_amazing_module_some_hook() {
Algunos módulos que actúan como API definen sus propios ganchos. Por ejemplo, Vistas define muchos ganchos que le permiten agregar, leer y editar datos en varios puntos en el proceso de creación o visualización de una vista. Puede encontrar información sobre ganchos creados en módulos personalizados desde dos lugares (suponiendo que el módulo siga las convenciones, etc.):
Bootstrapping es, como explicaron otros, básicamente arrancar: no duplicaré las otras explicaciones claras y buenas.