Cos'è una Entità
Ogni Entità è un insieme strutturato di dati che viene creato, modificato o eliminato come un tutt'uno: ad esempio, se una Entità viene cancellata, vengono cancellate tutte le informazioni in essa contenute; se un Utente ha il permesso di modificare una Entità, può modificarne tutte le informazioni.
Tipi di Entità
Nelle Guide precedenti abbiamo già incontrato Entità: ogni Utente è infatti gestito in Drupal come una Entità. Drupal gestisce diversi tipi di Entità: Contenuti, Utenti, Termini di Tassonomia, File, Media, Commenti ecc. I moduli aggiuntivi di Drupal possono aggiungere ulteriori tipi di Entità, ad esempio i Gruppi. Per ogni tipo di Entità, Drupal mette a disposizione specifiche funzioni: ad esempio, solo le Entità di tipo Utente possono fare login, solo le Entità di tipo File hanno una dimensione, espressa in KB. Alcuni tipi di Entità prevedono una ulteriore specializzazione, chiamata Bundle. I tipi di Entità predefiniti in Drupal e i corrispondenti Bundle sono:
| Tipo di Entità | Sottotipo (bundle) | A cosa serve |
| Contenuto (content, detto anche node) | Tipo di Contenuto (content type) | I Contenuti sono il tipo di Entità più utilizzato nelle app. Per ogni tipologia di informazione si crea un Tipo di Contenuto differente. |
| Termine di tassonomia (taxonomy term, term) | Tassonomia (taxonomy, vocabulary) | Le Tassonomie sono usate come "vocabolari" di termini con cui etichettare i Contenuti |
| Utente (user) | Sono gli Utenti della app | |
| Media (media) | Tipo di Media (media type) | File, immagini, audio, video |
| Commento (comment) | Tipo di Contenuto del Commento | Commenti degli Utenti sulle altre Entità |
Campi delle Entità
Le informazioni associate ad una Entità sono memorizzate nei suoi Campi. Usando una metafora, l'Entità è una cassettiera ed ogni suo Campo è un "cassetto" in grado di memorizzare uno specifico tipo di informazione (testo, numeri, immagini, file, riferimenti ad altre Entità eccetera). Alcuni moduli aggiuntivi aggiungono ulteriori tipi di Campi, ad esempio coordinate geografiche. Vedremo i diversi tipi di Campi disponibili nella Guida relativa ai Contenuti.
L'Amministratore può aggiungere Campi a tipi e sottotipi di Entità. Ad esempio, è possibile aggiungere agli Utenti Campi testuali per memorizzare nome e cognome della persona ed un Campo a lista di selezione per il sesso. La possibilità di aggiungere Campi ai tipi di Entità è fondamentale per la costruzione delle app con Drupal, perché permette di adattare le Entità alle specifiche esigenze della app, senza lavorare direttamente sulle tabelle del database di Drupal.
Nome interno ed nome esterno (etichetta) del Campo
Ogni Campo ha un nome esterno ed un nome interno. Il nome esterno è l'etichetta che l'Amministratore assegna al Campo e col quale il Campo viene visto dagli Utenti. Il nome interno è quello con cui Drupal identifica il Campo ed è composto automaticamente come field_ seguito dall'etichetta in caratteri minuscoli; ad esempio, il Campo con nome esterno "Cognome" è identificato in Drupal col nome interno "field_cognome".
Mentre il nome esterno può essere lo stesso per Campi appartenenti a diversi tipi di Entità, il nome interno deve essere univoco e quindi non ci possono essere due Campi con lo stesso nome interno: se ciò accade, Drupal segnala un errore, invitando a modificare il nome interno del nuovo Campo:
![]() |
Una volta assegnato, il nome interno non può più essere modificato, mentre il nome esterno può essere cambiato in qualunque momento. L'importanza dei nomi interni dei Campi sarà evidente nella costruzione delle Viste.
Riferimenti tra Entità
Tra i vari tipi di Campi, riveste una particolare importanza il tipo Riferimento (reference), perché consente di costruire una relazione tra due tipi o sottotipi di Entità. Ad esempio, se nella app definiamo il tipo di Contenuto "Album" ed il tipo di Contenuto "Canzone" ed aggiungiamo al tipo di Contenuto "Canzone" un Campo Riferimento che rimanda al tipo di Contenuto "Album", possiamo gestire la presenza di una Canzone in un Album. Possiamo rappresentare questa relazione come "Canzone → Album" perché, conoscendo la Canzone, possiamo arrivare all'Album in cui è inserita. Quando si compila il Campo Riferimento "Album" di una Canzone, Drupal obbliga a selezionare uno degli Album già memorizzati nella app.
Campi predefiniti
Ogni tipo di Entità ha Campi predefiniti. Ad esempio, gli Utenti hanno i Campi predefiniti Nome utente, Password, Email. I Termini di Tassonomia hanno Campi che servono a collocare il Termine nella gerarchia della Tassonomia (Genitore, Profondità e Peso). I Contenuti hanno sempre un Campo Titolo (compilato dall'Utente), un Campo Pubblicato (che indica se il Contenuto è visibile o nascosto) ed i seguenti Campi predefiniti compilati automaticamente da Drupal ma modificabili dall'Amministratore:
| Autore | Riferimento all'Utente che ha creato il Contenuto |
| Data di creazione (Inserito il) | Data e ora di creazione del Contenuto |
| Data di modifica | Data e ora di ultima modifica del Contenuto |
Di default, I Campi predefiniti non sono mostrati agli Utenti, ma vedremo come esporli con le Viste.
L'identificativo di Entità
Ad ogni Entità è associato un numero intero che lo identifica univocamente rispetto alle altre Entità dello stesso tipo. Ad esempio, l'Utente Amministratore è il numero "1" ed è l'unico Utente ad avere quel numero, mentre nulla vieta che vi sia un Contenuto o un File identificati da "1". Il numero univoco è assegnato automaticamente da Drupal all'Entità nel momento in cui viene creata e non può essere modificato, neppure dall'Amministratore. Se l'Entità viene cancellata, il suo numero univoco non viene riciclato. Il numero univoco è memorizzato in un apposito Campo predefinito; il nome di quel Campo varia leggermente col tipo di Entità: ID per i Contenuti, UID per gli Utenti, TID per i Termini di Tassonomia ecc.
I Token
Le informazioni contenute nelle Entità e molte altre informazioni "di sistema" (es. la data e ora del computer che ospita Drupal) sono riutilizzabili attraverso i Token. Un Token è una parola speciale che identifica una informazione della app e viene sostituita da Drupal col valore di quella informazione: un concetto molto vicino a quello di "variabile" nei linguaggi di programmazione o di incognita o parametro in matematica. Ad esempio, il Token [node:nid] viene sostituito dal codice identificativo di un Contenuto.
Anche se Drupal mette nativamente a disposizione un buon numero di Token, raccomando di installare sempre il modulo aggiuntivo Token perché ne estende il numero e le potenzialità.
Non è necessario conoscere a memoria i Token, perché in ogni pagina Drupal elenca i Token disponibili in quella pagina sotto la dicitura Sfoglia i Token disponibili o Replacement patterns. In alcuni casi, i Token sono presentati come una gerarchia, in cui "scendere" fino a trovare il Token desiderato: in questi casi, la voce solitamente più utile è Node, sotto cui si trovano tutti i Token relativi ai Contenuti (in Drupal "node" è sinonimo di Contenuto). Una volta trovato il Token desiderato, lo si copia e poi lo si incolla nella casella dove serve.
I Token si presentano in due forme: tra parentesi quadre es: [node:title] oppure tra parentesi graffe es: {{ node.title.value }}. Non è necessario comprendere in dettaglio questa differenza, perché Drupal provvede a mostrare solo i Token disponibili e nella forma utile al contesto.
