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, nella costruzione della app conviene partire dai dati che deve gestire. Non considerando i dati relativi agli Utenti, per i quali c'è un tipo apposito di Entità (gli Utenti, appunto), per tutti gli altri dati la prima ipotesi è quella di gestirli con diversi Tipi di Contenuto. 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" (la richiesta di prestito di un oggetto da parte di un vicino), "Concessione" (la concessione di prestito da parte del proprietario dell'oggetto), "Nota" (una nota a corredo di una Richiesta, scritta dal richiedente o dal proprietario), "Consegna" (la ricevuta di avvenuta consegna dell'Oggetto), "Valutazione" (la valutazione finale sull'esperienza di prestito), "Luogo" (un luogo aperto al pubblico dove può avvenire lo scambio degli oggetti) e "Abilitazione" (l'abilitazione di un operatore ad agire in un Luogo); non serve "Amico" perché le persone cui prestare gli Oggetti sono Utenti della app.

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 singoli 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 appunto rappresentato da due Tipi di Contenuto, uno scritto dall'Utente che chiede in prestito l'Oggetto ("Richiesta") e l'altro è scritto dall'Utente proprietario dell'Oggetto richiesto ("Concessionario"). Richiesta e Concessione sono collegati dal Campo di tipo riferimento della Concessione, che richiama la Richiesta cui la Concessione risponde. 

Creare un nuovo Tipo di Contenuto

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

Titoli automatici

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

In alcuni casi l'uso del campo Titolo è intuitivo: ad esempio, nella app "Miei Libri" il Campo Titolo di un Libro è usato proprio per memorizzare il suo titolo scritto in copertina. In altri casi, non è intuitivo cosa scrivere nel Titolo: ad esempio, per le Richieste della app "Prestiti tra vicini" conviene riportare informazioni già presenti negli altri Campi (es. "Richiesta di Carlo Rossi per la Falciatrice XYZ di Elena Verdi") oppure limitarsi ad un semplice "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, per istruire Drupal a riempire automaticamente il Titolo di un Tipo di Contenuto:

Con la stessa modalità è possibile compilare automaticamente Titolo più ricchi: ad esempio si potrebbe generare il Titolo "Richiesta n. X di Y" dove Y è il nome dell'Utente richiedente, semplicemente cercando e selezionando nell'esempio precedente il Token [node:author]. Poiché il Titolo di un Contenuto è mostrato nella pagina del Contenuto stesso con un carattere grande, suggerisco di non comporre titoli automatici troppo lunghi.  

Riusare i Campi 

In una app possono servono decine di Campi. Per ridurne la proliferazione, è possibile "riciclare" un Campo su più Tipi di Contenuto. 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. 

 

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 impedire il funzionamento di una Vista: 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 invece che un Campo numerico intero serve un Campo numerico con virgola, oppure che risulta più semplice gestire un Campo di tipo data come un Campo testo, devi sapere 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 idati.