Comprensión de los hooks
Los hooks son una de las formas en que los módulos interactúan con otros módulos añadidos o con las subsistemas del núcleo de Drupal. Los hooks se utilizan para diversas tareas, incluyendo variables de preprocesamiento para archivos de plantilla (hook_preprocess()), modificar listas de información (hook_tokens_alter(), hook_views_data_alter()) y manipular formularios (hook_form_alter()), entre otras cosas. En esta página se listan todos los hooks proporcionados por el núcleo.
Los módulos pueden definir sus propios hooks adicionales. Por ejemplo, el módulo Flag define hook_flag_options_alter(), que puede ser utilizado por otros módulos que quieran modificar las opciones predeterminadas de un flag existente. La mayoría de los módulos que definen hooks también proporcionan documentación sobre ellos. Esta documentación se encuentra en archivos *.api.php.
Los hooks se disparan en diferentes puntos del flujo de ejecución, donde Drupal busca contribuciones de todos los módulos habilitados. Por ejemplo, cuando un usuario visita la página de ayuda en un sitio Drupal, mientras Drupal construye esa página, da a cada módulo la oportunidad de presentar documentación sobre sí mismo. Esto se hace escaneando todos los módulos habilitados para encontrar implementaciones de hook_help(). Es decir, funciones nombradas como mymodule_help($route_name, \Drupal\Core\Routing\RouteMatchInterface $route_match), donde "mymodule" es el nombre del módulo, por ejemplo, el hook de ayuda del módulo block se llama block_help(), y el hook de ayuda del módulo node se llama node_help(). El hook puede aceptar parámetros; los parámetros $route_name y $route_match de hook_help permiten al desarrollador definir en qué página(s) se mostrarán los mensajes de ayuda.
Un hook puede ser considerado como un listener de eventos en el sentido de que un evento dispara una acción. Un evento en Drupal, como la eliminación de un nodo, disparará el hook "hook_node_delete". Si en tu módulo implementas hook_node_delete, esa función será llamada cuando un nodo sea eliminado. Por ejemplo, tu función podría encargarse de disminuir el conteo total de nodos, por lo que cuando se elimina un nodo, tu función se ejecuta y reduce ese número en 1.
Véase también el resumen de hooks de módulos en la Guía del API de Drupal. También puede interesarte este buen artículo que explica cómo funciona el sistema de módulos/hooks de Drupal usando construcciones simples y fragmentos de PHP.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.