Le altre risposte sono fantastiche, precise, dettagliate, ma non sono sicuro che siano le "semplici parole" che spiegano le ossa nude del concetto che il ricercatore stava cercando.
Penso agli hook come a un punto in cui il codice si interrompe e grida " Qualcun altro ha qualcosa da aggiungere qui? ". Qualsiasi modulo può avere una funzione che risponde a questa e viene attivato con i dati appropriati passati ad esso in quel punto del codice.
Un bell'esempio semplice è hook_node_delete () . Qualsiasi modulo può usarlo per far accadere le cose ogni volta che un nodo viene eliminato. I documenti ti dicono che questo hook passa il modulo con cui l'oggetto del nodo eliminato deve lavorare e delinea altre informazioni utili come il momento esatto in cui viene chiamato (ad esempio che è prima che i dati del nodo vengano effettivamente eliminati dal database) e dove nel codice di Drupal viene chiamato l'hook (che può essere più di un posto).
Puoi esplorare quali hook esistono e scoprire quali dati vengono passati esplorando le cose che iniziano con "hook_" nell'API di Drupal .
Gli hook funzionano secondo le convenzioni di un nome: usando hook_node_delete
come nostro esempio, quando il processo di eliminazione del nodo raggiunge il punto in cui viene chiamato l'hook, per ogni modulo con una funzione come questa in [modulename]_node_delete()
cui la parola hook nel nome dell'hook viene sostituita con il nome del modulo (es. my_amazing_module_node_delete()
), tali funzioni vengono chiamate.
Perché? Quindi qualsiasi modulo può fare qualsiasi cosa in questi punti chiave: ad esempio puoi guardare il nodo cancellato e fare le cose se soddisfa una certa condizione (ad esempio, invia un'email a un amministratore o avvia un lungo processo).
Alcuni hook consentono di modificare le cose che sono state generate appena prima che vengano elaborate. Ad esempio, hook_menu_alter () passa le voci di menu correnti che il sistema ha generato. Qualsiasi modulo può definire una funzione some_modulename_menu_alter () e guardarli, opzionalmente cambiarli (cancellarne alcuni, aggiungerne alcuni, ordinarli ...) e reinserire il menu appena modificato.
È semplice, davvero potente ed è al centro di come Drupal funziona come un sistema modulare. Le implementazioni di hook sono al centro della maggior parte dei moduli Drupal.
Quando si guarda attraverso il codice di un modulo Drupal, è possibile individuare quali funzioni provengono da hook (al contrario di funzioni che sono semplicemente chiamate all'interno del codice del modulo stesso), poiché la comunità Drupal applica una convenzione in base alla quale ogni implementazione di un hook ha un commentalo in questo modo (osserva il bit "Implements hook _..."):
/**
* Implements hook_some_hook().
*
* Some descriptive summary of what this does
*/
function my_amazing_module_some_hook() {
Alcuni moduli che fungono da API definiscono i propri hook. Ad esempio, Views definisce molti hook che consentono di aggiungere, leggere e modificare i dati in vari punti del processo di creazione o visualizzazione di una vista. Puoi trovare informazioni sugli hook creati nei moduli personalizzati da due punti (supponendo che il modulo segua le convenzioni, ecc.):
- Il codice e i commenti nel
modulename.api.php
file nella cartella del modulo
- drupalcontrib.org - ad esempio, ecco il loro elenco di moduli D7 su cui hanno informazioni, ed ecco la loro pagina di hook di Views
Il bootstrap è, come hanno spiegato altri, sostanzialmente in fase di avvio: non duplicherò le altre buone spiegazioni chiare.