Stato documento: Alfa
Drupal tecnicamente usa il Front Controller Pattern [Edit: link in italiano?], cioè tutte le richieste passano per un punto centrale - index.php
. E' anche uno degli file PHP più piccoli di Drupal (perchè delega il lavoro all'infrastruttura), ma segue tre operazioni importanti:
Vedi anche I componenti della pagina web.
Bootstrapping.
Il bootstrapping (inizializzazione) e' uno dei compiti più importanti nel sistema, dove Drupal tenta di caricare la minima quantità di codice possibile per completare l'operazione richiesta. Il codice di bootstrapping si trova in includes/bootstrap.inc
. Questo processo segue delle fasi distinte:
settings.php
.$user
viene creato durante questa fase./drupal/projects
a node/123
. Vedi anche Il sistema di menù - dal URI alla pagina web, per ulteriori dettagli.hook_init
di ogni modulo abilitato che ha fornito questo hook.Dopo il bootstrap, Drupal converte il percorso ricevuto in una funzione da chiamare tramite il menu router. Questa funzione è conosciuto come 'gestore' (handler).
Temizzare il contenuto.
Il gestore (handler) ha il compito di caricare i dati del contenuto e convertirlo in un documento parziale di HTML. Prima di procedere con quest'operazione però, il gestore controlla se l'utente ha i necessarie permessi per vedere il contenuto, e se effettivamente i dati esistono - questo può succedere se un nodo viene cancellato, per esempio. In entrambi i casi non sarà possibile temizzare un contenuto, o perchè non è permesso, o perchè non c'è. In questi casi viene restituito il codice di errore HTTP, 403 o 404.
Se i dati vengono trovati, e l'utente ha i necessari permessi per vederli - singolo nodo o lista che sia - ogni uno viene temizzato - cioè convertito in una stringa di testo HTML. Per ogni nodo viene creato i links (tassonomia, numero commenti, leggi tutto, ecc), e per le liste vengono creati dei links del pager - se specificato, che spezzano una lista in sezioni più piccole.
Temizzare la pagina.
Con il contenuto convertito in HTML, questo viene passato alla fase finale di temizzazione che construisce la pagina finale. Vengono caricati i parametri dei blocchi per ogni regione, e se combacia con i parametri di visualizzazione, allora vengono caricato i dati del blocco che poi viene temizzato.
Ma se la precedente fase (temizzare il contenuto) ha ritornato un codice di errore, allora Drupal taglia corto, evitando di temizzare i blocchi.
Sito in manutenzione
Quando il sito è in manutenzione (maintenance mode on) Drupal visualizza una pagina 'tagliata' come per i precedenti errori, ma con il codice 503 - servizio non disponibile. Con un eccezione - se stai tentando di accedere al sito (log in) o se sei l'utente 'omnipotente' cioè uid == 1, anche conosciuto come 'admin'.
Nota tecnica
Drupal non usa il pattern Model-View-Controller, bensi il pattern Presentation-Abstraction-Control. [Edit: link in italiano?] Questo ha anche il significato che non c'è un netto distinzione fra view e modello - c'è la tendenza di produrre il risultato HTML (cioè view) durante la fase di costruzione del model. Per esempio in una lista di nodi, ogni nodo viene prima caricato poi temizzato, invece di caricare tutti i nodi per poi temizzarli. Quindi troviamo funzioni e template per temizzare 'node', ma non 'nodes' o 'list'.