Indice

🟦Pronta 🟨Bozza 🟥Da scrivere

I Contenuti

Cosa sono. Creare nuovi tipi di contenuti. Riusare i Campi. Titoli automatici dei Contenuti.
Aggiornata il:
Stato: 🟦Pronta

Cosa sono i Contenuti

I Contenuti sono il tipo di Entità più generico e quindi più utilizzato per gestire informazioni nelle app. Prima di poter caricare Contenuti devi descrivere il loro tipo: il Tipo di Contenuto fa da modello o "stampo" per la creazione di Contenuti di quel tipo; il Tipo di Contenuto infatti definisce quali Campi sono richiesti, stabilisce come mostrarli, quali Utenti possono inserire Contenuti di quel tipo ecc.

Appena installato, Drupal gestisce un paio di Tipi di contenuto molto semplici - la "pagina" e l'"articolo" - pensati più per i siti informativi che per una app e quindi non ne parlerò. Vediamo invece come creare i Tipi di Contenuto che servono alla tua app.  

Quali Tipi di Contenuti mi servono?

Come suggerito, per iniziare a costruire la tua app conviene partire dalle Informazioni che deve gestire. Non considerare gli Utenti, perché per essi c'è un tipo di Entità predefinito, ma concentriamoci sugli oggetti fisici (es. attrezzi, documenti, stanze) o astratti (es. progetti, processi, categorie) che hai previsto per la tua app. Per ognuno di essi potresti creare un Tipo di Contenuto specializzato.

Ad esempio, per la app "Miei Libri" servono i Tipi di Contenuto "Libro" per rappresentare il libro prestato, "Amico" per rappresentare l'amico cui presto il libro e "Prestito" per rappresentare il prestito effettuato di un libro ad un amico. 

Per la app "Prestiti tra Vicini", più complessa della precedente, servono più Tipi di Contenuto: "Oggetto" (l'oggetto prestato), "Ambito" (l'ambito di utilizzo dell'Oggetto.es "giardino"), "Richiesta" e "Concessione" (le due parti di un prestito), "Messaggio" (un messaggio scambiato tra chi chiede in prestito e il proprietario dell'Oggetto), "Consegna" (la ricevuta di avvenuta consegna dell'Oggetto), "Valutazione" (la valutazione finale sull'esperienza di prestito), "Sede" (una sede pubblica in cui può avvenire lo scambio degli Oggetti) e "Abilitazione" (l'abilitazione di un utente ad agire in una Sede); non serve "Amico" perché le persone cui prestare gli Oggetti sono Utenti della app e quindi c'è una Entità per rappresentarli.

Ovviamente più Tipi di Contenuto crei, più la costruzione della app si complica: se ti accorgi che due Tipi di Contenuti hanno gli stessi Campi o quasi, ti conviene fare un supplemento di analisi per capire se puoi gestire entrambi con un solo Tipo di Contenuto, eventualmente prevedendo che qualche Campo non sia sempre utilizzato.

Viceversa, se Utenti diversi modificano Campi diversi dello stesso Tipo di Contenuto, poiché i Permessi di un Utente si applicano all'intero Contenuto e non ai suoi Campi, per consentire ad ogni Utente di modificare solo i Campi cui ha diritto, spesso la soluzione più semplice è dividere il Tipo di Contenuto in due Tipi collegati tra loro da un Campo riferimento. Ad esempio, nella app "Prestiti tra vicini" il "prestito" viene rappresentato da due Tipi di Contenuto, uno dei quali (la 'Richiesta") è scritto dall'Utente che chiede in prestito l'Oggetto e l'altro (la "Concessione") è scritto dall'Utente proprietario dell'Oggetto richiesto; la Concessione contiene un Campo riferimento che rimanda alla Richiesta che l'ha suscitata.

Costruire un nuovo Tipo di Contenuto

Ecco come Amministratore puoi costruire un nuovo Tipo di Contenuto ed aggiungervi i Campi che lo contraddistinguono:

 

Riusare i Campi 

In una app non banale servono facilmente 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. 

Titoli automatici

Il Campo Titolo è presente ed obbligatorio per tutti i Contenuti e serve di solito per identificare visivamente il Contenuto stesso. 

Spesso l'uso del campo Titolo è intuitivo: ad esempio, nella app "Miei Libri" il Titolo di un Libro è proprio il suo titolo scritto in copertina. In altri casi no: ad esempio, nella stessa app il Titolo di una Richiesta potrebbe essere una frase del tipo "Richiesta di Carlo Rossi per la Falciatrice XYZ di Elena Verdi" oppure semplicemente "Richiesta n. X" rinviando alla lettura dei Campi per sapere di cosa si tratta. In questi casi, può essere comodo lasciare a Drupal la compilazione automatica del Titolo 

Per automatizzare la compilazione del titolo servono i moduli aggiuntivi "Automatic Entity Label,  "Token" e "Serial". Installati ed attivati questi moduli:

Poiché il Titolo di un Contenuto è mostrato nella pagina del Contenuto stesso con un carattere grande, suggerisco di non comporre titoli automatici troppo lunghi.  

Eliminare un Campo

Se un Campo non 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 il funzionamento di una Vista o un'altra configurazione che lo utilizza. Se decidi di procedere lo stesso, la Vista non viene cancellata ma disabilitata, per consentirti di modificarla e rimetterla in linea senza quel Campo.

L'eliminazione di un Campo riusato ne comporta la scomparsa da 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 nasconderlo all'Utente.

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, sappi che 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 informatiche e molta attenzione. Quando mi è capitato di doverlo fare, ho scelto questa strada più lunga, ma più sicura: 

  1. esportare in un file l'identificativo dell'Entità ed il valore del Campo, utilizzando il modulo Views Data Export
  2. aggiungere alle Entità un nuovo Campo del tipo desiderato
  3. importare dal file i valori nel nuovo Campo, utilizzando il modulo Feeds
  4. eliminare il Campo iniziale

Esamineremo qualche dettaglio di questa tecnica quando parleremo di importazione ed esportazione di informazioni.