Cos’è un hook? Bastano pochi concetti per averne un’idea chiara e scoprire che capire gli hook è più facile di quanto possa sembrare.
Cosa sono gli hook
Gli hook sono dei “ganci” che permettono allo sviluppatore di interagire con le funzioni standard di Drupal in modo da modificarne il funzionamento predefinito senza dover mettere le mani sul codice originale.
Drupal, per fare qualsiasi cosa (es. l’esecuzione di un login, la stampa di un articolo, l’elaborazione di un form, l’inserimento di un commento eccetera), utilizza delle funzioni predefinite.
Tramite gli hooks (che in italiano significa “ganci”) possiamo agganciarci a tali funzioni in modo da modificare, aggiungere o rimuovere delle funzionalità, ad esempio aggiungere un campo a un form o eseguire una certa azione dopo l’invio di un commento e così via.
Esempio pratico:
Drupal usa una certa funzione predefinita ogni volta che deve creare un form da mostrare a video (es. il modulo di contatto). Per interagire con questa funzione, e cioè per modificare i forms che vengono generati, c’è l’apposito hook: form_alter.
form_alter è solo uno degli innumerevoli hooks a disposizione per modificare ogni tipo di funzionalità del core di Drupal.
Come si usano gli hooks
Un hook, in pratica, è una funzione definita dall’utente (cioè dallo sviluppatore che sta usando Drupal per costruire il proprio sito) che dovrà essere inserita in un modulo o in un tema.
Vedi anche: come creare un modulo
Il nome di tale funzione dovrà per forza essere costruito utilizzando il nome del modulo (o tema) in cui è stato inserito, seguito dall’hook che vogliamo utilizzare. Così: NomeModulo_nomeHook ().
Nell’esempio precedente, in cui si cerca di modificare un form tramite l’hook “form_alter”, la funzione si dovrà chiamare: NomeModulo_form_alter ().
Ogni hook fornisce delle variabili in entrata, alcune delle quali passate “per riferimento”, che possono essere modificate senza dover specificare un valore di ritorno.
Andando subito sul pratico, l’hook form_alter riceve le seguenti variabili:
function NomeModulo_form_alter (&$form, &$form_state, $form_id) {
// qui il mio codice php
}
La variabile $form è quella che contiene tutti i dati (attributi, campi eccetera) del form.
Adesso siamo in grado di leggerla e modificarla a piacimento.
Tutte le modifiche che faremo andranno a sovrascrivere le impostazioni standard, quindi si potrà aggiungere un campo, o modificarlo, o aggiungere stili, messaggi, eseguire calcoli.
Links
- Documentazione ufficiale (in inglese)