Cosa sono i Contenuti
I Contenuti sono il tipo di Entità meno "specializzato" e quindi più utilizzato per gestire informazioni nelle app. Prima di poter gestire in Drupal un qualsiasi Contenuto, è necessario costruirne il tipo: il Tipo di Contenuto fa da modello o "stampo" per la creazione di Contenuti di quel tipo.
Il Tipo di Contenuto definisce infatti quali Campi formano il Contenuto, i controlli da effettuare sui Campi e come mostrarli, quali Utenti possono inserire Contenuti di quel tipo ecc.
Appena installato, Drupal offre un paio di Tipi di contenuto molto semplici - la "pagina" e l'"articolo" - pensati più per i siti informativi che per una app.
Quali Tipi di Contenuti servono
La costruzione di una app in Drupal parte proprio dalla identificazione dei Tipi di Contenuto che servono alla app. Per scoprire i Tipi di Contenuto che ci servono, occorre esaminare non solo quali tipi di oggetti, documenti, luoghi ecc. la app deve gestire, ma è opportuno considerare anche "oggetti" più astratti, come procedure, progetti, gruppi di lavoro ecc.
Nella app di esempio, abbiamo visto che ci servono i Tipi di Contenuto "Attrezzo", "Categoria" "Richiesta", "Prestito", "Messaggio" e "Valutazione". Si noti che in questa app abbiamo deciso di dividere le informazioni relative al prestito su due Tipi: "Richiesta" e "Prestito": questa scelta facilita la protezione delle informazioni, perché di base in Drupal ogni utente può modificare i propri Contenuti e non quelli degli altri. In generale, è utile suddividere le informazioni in Tipi di Contenuto distinti pensando a come saranno condivisi in scrittura i Contenuti.
Come costruire un nuovo Tipo di Contenuto
Ecco come Amministratore puoi costruire un nuovo Tipo di Contenuto:
- Vai in Struttura - Tipi di contenuto - Aggiungi un tipo di contenuto
- Scegli il nome per il nuovo Tipo (es. "Attrezzo") e digita una breve descrizione
- Scegli i valori per i seguenti Campi predefiniti:
- Titolo, nome del Campo testo che lo identifica visivamente
- Promosso alla prima pagina, opzione che lo colloca nella prima pagina del sito (poco utile nella costruzione di una app, lascialo spento)
- Sempre in cima agli elenchi, opzione che lo colloca in cima agli elenchi (come sopra)
- Crea una nuova revisione, opzione che genera diverse Versioni del Contenuto (salvo che la app abbia una specifica necessità di tener traccia delle modifiche apportate ad un Contenuto si può lasciare spento)
- Visualizzare informazioni sull'autore e sulla data, opzione che mostra Autore e data di pubblicazione del Contenuto (da valutare se serve per la app, suggerisco di spegnerlo).
Per aggiungere Campi al Tipo di Contenuto:
- Vai in Struttura - Tipi di contenuto e clicchiamo Gestione campi a fianco del Tipo di Contenuto
- Clicca Create new field
- Scegli il tipo di Campo tra quelli proposti:
![]() |
- nella pagina seguente, digita l'etichetta con cui il Campo sarà mostrato all'Utente, specifica se la compilazione del Campo è obbligatoria e quanti valori il Campo può accettare; ad esempio, un singolo Campo "Allegati" di tipo File può accettare più documenti, senza necessità di definire più campi "Allegato 1", "Allegato 2" ecc.
Ora costruisci nella tua installazione Drupal i Tipi di Contenuto che servono alla tua app !
Riusare i Campi
In una app di media complessità, servono normalmente decine di Campi. Per ridurne la proliferazione, è possibile "riciclare" un Campo su più Tipi di Contenuto (e anche su altri tipi di Entità). Definito il Campo la prima volta in un Tipo di Contenuto, per riusarlo in un altro Tipo di Contenuto non cliccare Create new field ma clicca Riutilizzare un campo esistente e seleziona il Campo che intendi riusare.
| ATTENZIONE: Il riuso di Campi è raccomandabile solo se è probabile che non eliminerai quel Campo in una futura revisione della app, perché l'eliminazione di un Campo da un tipo di Entità ha conseguenze anche sulle altre Entità che lo usano. |
Titoli automatici
Il Campo Titolo è presente ed obbligatorio per tutti i Contenuti, ma in alcuni caso non è molto significativo. Nella app di esempio, mentre il Campo Titolo degli Attrezzi è utile per identificare l'attrezzo stesso, per le Richieste e le Proposte le informazioni utili a sono negli altri Campi e il Titolo può limitarsi a indicare il Tipo di Contenuto ed un codice identificativo univoco, ad esempio "Richiesta n. 253", delegando a Drupal la sua compilazione.
Per automatizzare la compilazione del titolo devi installare i moduli " Automatic Entity Label" e "Token". Nel nostro esempio serve anche il modulo "Serial". Installati questi moduli:
- vai in Struttura - Tipi di Contenuto e seleziona Modifica a fianco del Tipo di Contenuto di cui vuoi automatizzare i titoli (es. "Richiesta")
- clicca Automatic label
- seleziona Automatically generate the label and hide the label field
- in Pattern for the label componi lo schema per la generazione dei titoli, utilizzando sia testo fisso (es. "Richiesta n.") sia i Token che recuperano i valori degli altri Campi del Contenuto: per conoscere i Token disponibili, clicca Sfoglia i token disponibili e naviga in Nodi fino a trovare il Campo che vuoi sia riprodotto nel Titolo.
ATTENZIONE: Nel titolo automatico non è possibile utilizzare l'identificativo dell'Entità (corrispondente al Token [node:nid] perché nel momento in cui si sta creando una nuova Entità quel valore non è ancora noto. Per superare questo problema volendo comunque assegnare un numero univoco all'Entità, si può aggiungere all'Entità un Campo intero seriale (vedi modulo Serial) e utilizzare questo Campo per comporre il titolo automatico. Ad esempio, avendo aggiunto all'Entità di tipo Richiesta un Campo interno seriale di nome "Codice", si può comporre il titolo automatico come "Richiesta n. [node:field_codice:value]". I Campi di tipo "intero seriale" non devono essere riusati. |

Eliminare un Campo
Se ci ripensi e decidi che un Campo non ti serve più, puoi eliminarlo. Drupal potrebbe avvisarti che l'eliminazione di quel Campo pregiudica il funzionamento di qualche parte della tua app, ad esempio potrebbe pregiudicare una Vista o un'altra configurazione in cui è utilizzato. Se decidi di procedere lo stesso, la Vista o il workflow non vengono cancellati ma vengono disabilitati, per consentirti di modificarle e rimetterle in linea senza quel Campo.
L'eliminazione di un Campo riusato ne comporta la scomparsa in tutti i tipi di Entità in cui è stata usato.
Se l'eliminazione di un Campo comporta troppo lavoro di sistemazione, potresti decidere di mantenerlo, limitandoti a nascondendolo nelle pagine di inserimento, modifica e visualizzazione dell'Entità cui appartiene.
Cambiare il tipo di un Campo
Se hai scoperto che un Campo numerico intero ti serve invece con numerico con la virgola, oppure che ti risulta più semplice gestire un Campo di tipo data come un Campo testo, in Drupal non c'è un meccanismo per cambiarne il tipo salvando i dati già inseriti. Ci sono moduli sperimentali che promettono di farlo, ma contengono sempre avvertenze. I più esperti propongono interventi diretti sul database, che richiedono competenze e molta attenzione. Quando mi è capitato di doverlo fare, ho scelto la strada più lunga ma più sicura:
- esportare in un file l'identificativo dell'Entità ed il valore del Campo, utilizzando il modulo Views Data Export
- aggiungere alle Entità un nuovo Campo del tipo desiderato
- importare dal file i valori nel nuovo Campo, utilizzando il modulo Feeds
- eliminare il Campo iniziale
Esamineremo qualche dettaglio di questa tecnica in una apposita Guida
