Con questa Guida iniziamo ad entrare nel merito di come costruire la tua app con Drupal. Come suggerito dal metodo che abbiamo visto, partiamo da come rappresentare in Drupal i dati necessari alla tua app.
Cos'è una Entità
Una Entità è un insieme strutturato di dati che viene creato, modificato o eliminato come un tutt'uno: ciò significa che se una Entità viene eliminata, vengono cancellate tutte le informazioni in essa contenute; se un Utente ha il permesso di modificare una Entità, può modificarne tutte le informazioni.
| APPROFONDIMENTO: In Drupal ci sono due famiglie di Entità: le Entità di contenuto (content entities) e le Entità di configurazione (configuration entities). Una Entità di contenuto è una entità che contiene le informazioni relative ad un oggetto, una persona, un documento ecc. Una Entità di configurazione contiene invece le informazioni relative ad una configurazione di Drupal. Incontreremo molte Entità di configurazione, tra cui le Viste, i Menù, i Formati di testo ecc. Ai fini di MieApp, se non specificato diversamente, con "Entità" intendo "Entità di contenuto". |
Tipi di Entità
Non tutte le Entità sono uguali. Ad esempio: l'Entità che rappresenta un Utente deve necessariamente contenere le credenziali (nome utente e password) che la persona usa per entrare nella app; solo per Entità di tipo Utente Drupal mette a disposizione le funzioni di login. Invece, una Entità che rappresenta un file ha necessariamente una dimensione in MB; solo per Entità di tipo File Drupal mette a disposizione funzioni di upload e download.
Drupal gestisce nativamente diversi tipi di Entità, tra cui i Contenuti, gli Utenti, i Termini di Tassonomia, i File, i Media, i Commenti. I moduli aggiuntivi possono a loro volta aggiungere altri tipi di Entità; ad esempio, il modulo "Gruppi" aggiunge le Entità di tipo Gruppo. Alcuni tipi di Entità prevedono una ulteriore specializzazione, detta Bundle. I tipi di Entità predefiniti in Drupal e i corrispondenti Bundle sono:
| Tipo di Entità | A cosa serve | Bundle |
| Contenuto (content, detto anche node) | I Contenuti sono il tipo di Entità più generico ed usato nella costruzione di app. | Tipo di Contenuto (content type). Ogni Tipo è caratterizzato da un nome, dai Campi che lo compongono, dal modo in cui è visualizzato, dalle autorizzazioni che lo proteggono. |
| Termine di tassonomia (taxonomy term, term) | I Termini di Tassonomia sono usati per etichettare o categorizzare i Contenuti. | Tassonomia (taxonomy, vocabulary). Una Tassonomia raggruppa un insieme di Termini |
| Utente (user) | Sono gli Utenti della app | Esiste un solo bundle "utente" |
| Media (media) | I Media sono usati per contenere i contenuti multimediali. | Tipo di Media (media type). I tipi distinguono i Media in File, Immagini, Audio, Video ecc. |
| Commento (comment) | I Commenti contengono i commenti degli Utenti sulle altre Entità. | Tipo di Comment. Ogni tipo è caratterizzato dai Campi che lo compongono. |
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'Amministratore è l'Utente identificato dal numero "1" ed è l'unico Utente ad avere quel numero; nulla vieta che esista un Contenuto o un File identificati da "1". Il numero univoco è assegnato automaticamente all'Entità nel momento in cui viene creata e non può essere modificato, neppure dall'Amministratore. Se l'Entità viene eliminata, il suo identificativo non viene riciclato. L'identificativo è memorizzato in un apposito Campo dell'Entità, il cui nome varia leggermente col tipo di Entità: ID per i Contenuti, UID per gli Utenti, TID per i Termini di Tassonomia ecc.
La pagina dell'Entità
Ad ogni Entità corrisponde una pagina che la mostra. L'indirizzo che richiama la pagina differisce in base al tipo di Entità. Ad esempio, un Contenuto con ID=1234 è mostrato nella pagina /node/1234 mentre l'Utente con UID=5678 è mostrato nella pagina /user/5678