Indice

🟦Nuova 🟩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 gestire in Drupal un qualsiasi Contenuto, è necessario definirne il tipo: il Tipo di Contenuto fa da modello o "stampo" per la creazione di Contenuti di quel tipo. Il Tipo di Contenuto elenca i Campi che formano il Contenuto, stabilisce come mostrarli, quali Utenti possono inserire Contenuti di quel tipo ecc.

Appena installato, Drupal offre di default 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 gli oggetti fisici (documenti, luoghi ecc.) che la app deve gestire, ma considerare anche "oggetti" più astratti, come procedure, progetti, gruppi di lavoro ecc. Ecco alcuni criteri di massima e di buono senso che possono aiutare nella identificazione dei Tipi di Contenuto utili alla nostra app.

Criterio della semplicità. Più Tipi di Contenuto definiamo, più la costruzione della app si complica. Se ci accorgiamo che due Tipi di Contenuti apparentemente distinti hanno in realtà gli stessi Campi o quasi, conviene fare un supplemento di analisi per capire se possiamo gestire entrambi con un solo Tipo di Contenuto, eventualmente prevedendo che uno o più Campi non siano sempre utilizzati. 

Criterio dell'unità. Come le Entità (di cui sono un caso particolare), anche un Contenuto è gestito come un'unità, pertanto i Permessi assegnati ad un Utente valgono per tutti i Campi del Contenuto. Se per un Tipo di Contenuto ci accorgiamo che alcuni Campi sono gestiti da un gruppo di Utenti e gli altri Campi da altri, per consentire ad ognuno di intervenire autonomamente sui Campi di propria pertinenza, la soluzione più semplice è quella di creare un Tipo di Contenuto distinto per ogni gruppo di Utenti e di collegare questi Tipi di Contenuto tra loro mediante Campi Riferimento. 

Criterio del tempo. Per lo stesso motivo, mentre è possibile (con qualche sforzo, come vedremo) modificare nel tempo i Permessi degli Utenti su un Tipo di Contenuto, non è possibile modificare nel tempo i Permessi sui singoli Campi. Quindi se alcuni Campi di un Tipo Contenuto sono sempre modificabili ed altri non devono essere modificabili prima di una certa data o di un certo evento, la soluzione più semplice è spostare questi ultimi in un Tipo di Contenuto a parte, per il quale i Permessi cambiano nel tempo.

Ad esempio, nella app "Vicinato" per rappresentare l'Attrezzo, la Categoria, la Sede, l'Abilitazione, la Richiesta, la Consegna, la Nota e la Valutazione creiamo gli omonimi Tipi di Contenuto. 

Come costruire un nuovo Tipo di Contenuto

Ecco come Amministratore puoi costruire un nuovo Tipo di Contenuto:

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. 

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 di Attrezzi, Categoria, Sede è utile per identificare l'attrezzo stesso, per Richieste, Prestiti, Consegne, Valutazioni e Messaggi il Titolo non corrisponde ad una informazione significativa e ho scelto quindi di lasciarlo costruirei automaticamente da Drupal come il nome del Tipo di Contenuto seguito da un codice univoco, es. "Richiesta 253", Oltre a evitare all'Utente di doversi inventare un titolo non significativo, ciò consente all'Utente di identificare senza ambiguità il Contenuto, ad esempio nei Messaggi scambiati con gli altri Utenti. 

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

Questo è solo un esempio di titolo automatico, perché con la stessa modalità si possono creare titoli più ricchi di significato, ad esempio "Richiesta su NOMEATTREZZO di PROPRIETARIO". Per semplificare l'identificazione del Contenuto, conviene comporre titoli automatici diversi per ogni Contenuto. Poiché il Titolo di un Contenuto è di default mostrato nella pagina del Contenuto con un carattere più grande, suggerisco di non comporre titoli troppo lunghi.  

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, 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 e molta attenzione. Quando mi è capitato di doverlo fare, ho scelto la 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.