As outras respostas são ótimas, precisas, detalhadas, mas não tenho certeza de que sejam as "palavras simples" que explicam os ossos do conceito que o solicitante estava procurando.
Penso em ganchos como um ponto em que o código pausa e grita "Mais alguém tem algo a acrescentar aqui? ". Qualquer módulo pode ter uma função que responda a isso e é acionado com os dados apropriados passados para ele naquele ponto do código.
Um bom exemplo direto é hook_node_delete () . Qualquer módulo pode usá-lo para fazer as coisas acontecerem toda vez que um nó é excluído. Os documentos informam que esse gancho transmite ao módulo o objeto do nó excluído para o qual trabalhar e descreve outras informações úteis, como o momento exato em que é chamado (por exemplo, antes de os dados do nó serem realmente excluídos do banco de dados) e onde no código do Drupal o gancho é chamado (que pode ser mais de um local).
Você pode explorar quais ganchos existem e descobrir quais dados são passados para eles, explorando coisas que começam com "hook_" na API do Drupal .
Os ganchos funcionam de acordo com as convenções de um nome: usando hook_node_delete
como exemplo, quando o processo de exclusão do nó atingir o ponto em que o gancho é chamado, para cada módulo com uma função como essa em [modulename]_node_delete()
que a palavra gancho no nome do gancho é substituída pelo nome do módulo (por exemplo, my_amazing_module_node_delete()
), essas funções são chamadas.
Por quê? Portanto, qualquer módulo pode fazer qualquer coisa nesses pontos-chave: por exemplo, você pode olhar para o nó excluído e fazer coisas se ele atender a uma determinada condição (por exemplo, envie um email para um administrador ou inicie algum processo longo).
Alguns ganchos permitem alterar as coisas que foram geradas antes de serem processadas. Por exemplo, hook_menu_alter () passa os itens de menu atuais que o sistema gerou. Qualquer módulo pode definir uma função some_modulename_menu_alter () e examiná-los, alterá-los opcionalmente (excluir alguns, adicionar alguns, classificá-los ...) e passar o menu recém-alterado novamente.
É simples, realmente poderoso e está no centro de como o Drupal funciona como um sistema modular. As implementações de ganchos estão no coração da maioria dos módulos Drupal.
Ao examinar o código de um módulo Drupal, você pode identificar quais funções são provenientes de ganchos (em oposição a funções que são simplesmente chamadas de dentro do próprio código do módulo), pois a comunidade Drupal impõe uma convenção na qual cada implementação de um gancho tem um comente assim à frente dele (observe o bit "Gancho de implementos _..."):
/**
* Implements hook_some_hook().
*
* Some descriptive summary of what this does
*/
function my_amazing_module_some_hook() {
Alguns módulos que atuam como APIs definem seus próprios ganchos. Por exemplo, o Views define muitos ganchos que permitem adicionar, ler e editar dados em vários pontos do processo de criação ou exibição de um view. Você pode encontrar informações sobre ganchos criados em módulos personalizados a partir de dois lugares (assumindo que o módulo siga as convenções etc.):
O bootstrapping é, como outros explicaram, basicamente inicializando - não duplicarei as outras boas explicações claras.