Per capire come funziona Drupal, devi comprendere il meccanismo di pubblicazione delle pagine di Drupal.
In breve, tutte le chiamate / urls / richieste sono servite da index.php che carica Drupal includendo vari file / moduli include e quindi chiamando la funzione appropriata, definita nel modulo, per servire la richiesta / url.
Ecco l'estratto del libro, Pro Drupal Development, che spiega il processo di bootstrap di Drupal,
Il processo Bootstrap
Drupal si avvia automaticamente su ogni richiesta attraversando una serie di fasi bootstrap. Queste fasi sono definite in bootstrap.inc e procedono come descritto nelle sezioni seguenti.
Inizializza configurazione
Questa fase popola l'array di configurazione interno di Drupal e stabilisce l'URL di base ($ base_url) del sito. Il file settings.php viene analizzato tramite include_once () e vengono applicate tutte le sostituzioni di variabili o stringhe ivi stabilite. Per i dettagli, consultare le sezioni "Sostituzioni variabili" e "Sostituzioni stringa" dei siti di file / all / default / default.settings.php.
Cache della pagina iniziale
In situazioni che richiedono un alto livello di scalabilità, potrebbe essere necessario invocare un sistema di memorizzazione nella cache prima ancora di tentare una connessione al database. La fase iniziale della cache della pagina consente di includere (con include ()) un file PHP contenente una funzione chiamata page_cache_ fastpath (), che prende il controllo e restituisce il contenuto al browser. La cache della pagina iniziale viene abilitata impostando la variabile page_cache_fastpath su TRUE e il file da includere viene definito impostando la variabile cache_inc sul percorso del file. Vedere il capitolo sulla memorizzazione nella cache per un esempio.
Inizializza database
Durante la fase del database, viene determinato il tipo di database e viene stabilita una connessione iniziale che verrà utilizzata per le query del database.
Nome host / controllo di accesso basato su IP
Drupal consente di vietare gli host in base al nome host / indirizzo IP. Nella fase di controllo degli accessi viene effettuato un rapido controllo per verificare se la richiesta proviene da un host vietato; in tal caso, l'accesso viene negato.
Inizializza gestione sessioni
Drupal sfrutta la gestione delle sessioni integrata di PHP ma sostituisce alcuni dei gestori con i propri per implementare la gestione delle sessioni supportata dal database. Le sessioni vengono inizializzate o ristabilite nella fase della sessione. Qui viene anche inizializzato l'oggetto $ user globale che rappresenta l'utente corrente, anche se per efficienza non tutte le proprietà sono disponibili (vengono aggiunte da una chiamata esplicita alla funzione user_load () quando necessario).
Cache della pagina tardiva
Nella fase avanzata della cache delle pagine, Drupal carica abbastanza codice di supporto per determinare se pubblicare o meno una pagina dalla cache delle pagine. Ciò include l'unione delle impostazioni dal database nell'array creato durante la fase di configurazione dell'inizializzazione e il caricamento o l'analisi del codice del modulo. Se la sessione indica che la richiesta è stata emessa da un utente anonimo e la memorizzazione nella cache della pagina è abilitata, la pagina viene restituita dalla cache e l'esecuzione si interrompe.
Determinazione della lingua
Nella fase di determinazione della lingua, viene inizializzato il supporto multilingue di Drupal e viene presa la decisione su quale lingua verrà utilizzata per servire la pagina corrente in base alle impostazioni del sito e dell'utente. Drupal supporta diverse alternative per determinare il supporto linguistico, come il prefisso del percorso e la negoziazione della lingua a livello di dominio.
Sentiero
Nella fase del percorso, viene caricato il codice che gestisce i percorsi e l'aliasing del percorso. Questa fase consente di risolvere URL leggibili e gestisce la cache e le ricerche del percorso Drupal interne.
Pieno
Questa fase completa il processo di bootstrap caricando una libreria di funzioni comuni, supporto per temi e supporto per mappatura di callback, gestione dei file, Unicode, toolkit immagine PHP, creazione ed elaborazione di moduli, gestione della posta, tabelle ordinabili automaticamente e paging del set di risultati. Il gestore errori personalizzato di Drupal è impostato e tutti i moduli abilitati vengono caricati. Infine, Drupal attiva il hook di init, in modo che i moduli abbiano l'opportunità di essere avvisati prima che inizi l'elaborazione ufficiale della richiesta.
Una volta che Drupal ha completato il bootstrap, sono disponibili tutti i componenti del framework. È tempo di prendere la richiesta del browser e consegnarla alla funzione PHP che la gestirà. Il mapping tra URL e funzioni che li gestiscono viene realizzato utilizzando un registro di callback che si occupa sia del mapping degli URL che del controllo degli accessi. I moduli registrano i loro callback usando l'hook del menu (per maggiori dettagli, vedere il Capitolo 4).
Quando Drupal ha stabilito che esiste un callback a cui l'URL della richiesta del browser è mappato correttamente e che l'utente ha l'autorizzazione ad accedere a quel callback, il controllo viene passato alla funzione di callback.
Elaborazione di una richiesta
La funzione di callback fa tutto il lavoro necessario per elaborare e accumulare i dati necessari per soddisfare la richiesta. Ad esempio, se
viene ricevuta una richiesta di contenuto come http://example.com/ q = node / 3, l'URL viene mappato sulla funzione node_page_view () in node.module. L'ulteriore elaborazione recupererà i dati per quel nodo dal database e li inserirà in una struttura di dati. Quindi, è tempo per i temi.
Temi sui dati
Il tema implica la trasformazione dei dati che sono stati recuperati, manipolati o creati in HTML (o XML o altro formato di output). Drupal utilizzerà il tema selezionato dall'amministratore per dare alla pagina Web l'aspetto corretto. L'output risultante viene quindi inviato al browser Web (o altro client HTTP).