In questo articolo vengono introdotti tutti i concetti fondamentali per comprendere e creare un modello di contenuti in WebCenter Sites. Il modello dei contenuti specifica non solamente i dati che vengono memorizzati nel CMS e le relazioni tra loro loro, ma anche informazioni per la gestione degli stessi. Come vedremo, siamo in presenza di un content model che consente la realizzazione di siti anche piuttosto complessi.
Il modello dei contenuti
Un CMS è caratterizzato solitamente dal tipo di contenuti che manipola. Non tutti i contenuti infatti sono uguali. Nel caso più semplice di CMS, un blog come WordPress, di norma abbiamo un solo tipo di contenuto, il post. Il CMS si limita a visualizzare I suddetti contenuti in un modo piuttosto semplice, dal più recente al meno recente (e fornisce criteri di ricerca come categorie, tag e così via).
Man mano che i siti diventano più complessi variano i tipi di contenuto che essi possono gestire. Viene introdotto il concetto di modello dei contenuti. Un modello di contenuti per un CMS è l’analogo dello schema dati per un database. Un modello dati in generale è più complesso di uno schema dati. Infatti lo schema dati di un database in generale si limita a specificare delle tabelle, e le relazioni tra le varie tabelle (con eventuali vincoli di integrità).
Il modello di contenuti di un CMS invece ha la caratteristica di specificare non solamente i dati che vengono memorizzati nel CMS e le loro relazioni, ma anche informazioni per la gestione degli stessi. In particolare vedremo che nel modello di contenuti di WCS, oltre ai contenuti (visti come dato) e le relazioni, ci sono anche informazioni utili sia per l’editing del contenuto stesso che per la sua presentazione nel sito.
In definitiva un modello di contenuti può essere pensato come un modello dati arricchito con le informazioni di presentazione. Completiamo adesso questa introduzione e andiamo a invece a illustrare in concreto il modello dati con WCS.
Basic Asset e Flex Asset
Come abbiamo già accennato nelle precedent puntate, WCS manipola tipi di asset che sono distinguibili, approssimativamente, in asset basic e asset flex. È possibile definire nuovi asset basic ma data la potenza e la flessibilità dei flex, di norma si usano per definire i propri contenuti solo gli asset flex. Gli asset basic che si usano sono quelli predefiniti, e vengono usati per implementare certe funzioni standard.
Per essere chiari, sono Basic Asset le Page e i Template. Le Page servono per creare una gerarchia e sono quindi i mattoni per comporre la SitePlan. Li vedremo all’opera in un prossimo articolo quando costruiremo la navigazione. I Template invece sono utilizzati per trasformare il modello di contenuti in un sito effettivo, ossia effettuano il rendering del sito. Ne parleremo in dettaglio nelle prossime puntate, quando mostreremo come trasformare il modello dei contenuti in sito vero e proprio.
In questa puntata vediamo in dettaglio come utilizzare i Flex Asset per modellare un sito. Per iniziare dobbiamo creare una cosiddetta Flex Family. La procedura di creazione di una Flex Family è piuttosto semplice: colleghiamoci in amministratore e definiamo una nuova Flex Family cliccando su FlexFamily Maker. Apparirà una schermata come in figura 1.
Figura 1 – L’aggiunta di una nuova Flex Family.
Una flex family è composta da 6 diversi tipi di asset. Per complicare le cose, chiariamo che ognuno degli asset che compone una flex family è di fatto un asset basic; un flex asset è ottenuto aggregando, in un modo che vedremo dopo, i vari asset appartenenti alla Family.
Possiamo quindi dire che mentre un basic asset è un asset singolo semplice (e può essere pensato come un record di una tabella), un flex asset è un asset composto da vari asset basic che appartengono a una Flex Family (e può essere pensato come distribuito su varie tabelle in relazione tra di loro).
Quando si crea una Flex Family occorre specificare i nomi di 6 tipi di asset. Utilizzeremo una semplice convenzione, un prefisso standard e un suffisso che cambia a secondo del tipo di asset. Nella tabella 1 sono riassunti i tipi di asset richiesti e il nome che gli daremo:
Tabella 1 – Asset richiesti e nome assegnato.
Iniziamo adesso ad usarli per definire un contenuto.
Definire gli attributi
Stiamo adesso entrando nei dettagli di come si utilizzano I flex asset per definire il modello di contenuti. L’idea di massima è che, mentre alcuni asset sono strutturali e servono per definire la struttura dei contenuti, altri asset sono invece i contenuti veri e propri.
Normalmente la stuttura di un database si chiama metadato: un dato che descrive il dato. In WCS, gli attributi (fp_A), le definition per il content e il parent (fp_CD e fp_PD), i filtri (fp_F) sono metadati. I content (fp_C) e i parent (fp_P) sono invece dati effettivi.
Vediamo adesso come si definisce un tipo di contenuto. Sostanzialmente un contenuto è una sequenza di campi, che in questo caso si chiamano attribute. Supponiamo che vogliamo definire un tipo di contenuto, per esempio News, avente come campi il titolo, l’autore, la data e infine il corpo.
Dovremo innanzitutto creare 4 asset di tipo fp_A, specificamente Title, ByLine, PostDate e Body. La creazione di questi attributi si fa come se si trattasse di un normale contenuto. WCS infatti tratta dati e metadati in maniera uniforme: sono tutti asset. Il sistema mette a disposizione una form come nella figura 2 per definire gli attributi:
Figura 2 – La finestra per la definizione degli attributi.
Come si può vedere, un attributo ha un nome, un tipo di valore (stringa, data, valuta , riferimento ad un altro asset, eccetera), può essere singolo o multiplo e ha altre funzionalità più avanzate che non tratteremo qui.
Importanti sono gli attribute editor che permettono di decidere il modo in cui va editato un contenuto. Per esempio per un testo è possibile specificare un editor WYSIWYG come il famoso FCKEditor, oppure definire una serie di opzioni rappresentate con un menu pull down.
Definire un tipo di contenuto
Una volta che abbiamo gli attributi, possiamo utilizzarli per definire un nuovo tipo di contenuto. La procedura è semplice e analoga alla definizione di attributo: si crea un contenuto di tipo Content Definition e si specificano quali attributi si vuole che il contenuto utilizzi. Un esempio è mostrato nella figura 3.
Figura 3 – Una nuova definizione del content.
Come si vede dalla figura, si crea una nuova content definition. La prima parte specifica anche le parent definition a cui il content appartiene, discusse nel prossimo paragrafo.
La seconda parte richiede di specificare gli attributi che si vogliono includere nella content definition. Il sistema presenta una lista di quelli disponibili: si selezionano quelli che si vogliono attribuire al nostro contenuto, specificando quali sono opzionali e quali obbligatori.
Infine, è possibile specificare dei filtri. I filtri sono degli oggetti un pò speciali, che elaborano un contenuto dopo che è stato salvato. Tipicamente si usano per generare thumbnail da immagini oppure per convertire in HTML documenti Word e così via.
Una volta che la definizione di un contenuto è stata creata, si può creare un contenuto vero e proprio. Creando il contenuto il sistema permette di scegliere tra le Content Definition che sono disponibili.
Figura 4 – Ecco la creazione di un content vero e proprio.
A questo punto il sistema presenta una maschera per l’inserimento dei campi che abbiamo selezionato nella content definition.
Figura 5 – Con questa maschera è possibile inserire i campi selezionati nella content definition.
In definitiva un Flex Asset è un Content con associate una Content Definition la quale elenca gli Attribute che sono richiesti per il contenuto stesso.
Definire una gerarchia con i flex asset
Fin qui abbiamo visto come definire i contenuti. Abbiamo anche notato come definendo una Content Definition è richiesto di specificare anche una Parent Definition. Introduciamo quindi i Parent e le relative Parent Definition.
I Parent sono sostanzialmente analoghi ai Content, e si gestiscono allo stesso modo: si crea una Parent Definition e si seleziona una lista di Attribute tra quelle disponibili. A questo punto è possibile creare istanze di un Parent e scegliere una Parent Definition per specificare quali attribute sono presenti in un parent.
La particolarità dei Parent è che un Content può scegliere un Parent come suo genitore. Un parent può scegliere un altro Parent come suo genitore (ma non un content). In questo modo è possibile creare delle gerarchie come quelle mostrate in figura 6 in cui i parent rappresentanoiI nodi mentre i content le foglie.
Figura 6 – Una gerarchia in cui i parent sono i nodi e i content le foglie.
Conclusioni
Abbiamo esplorato una parte (seppur rilevante) delle potenzialità di WCS per la modellazione del contentuto. L’articolo dovrebbe aver chiarito i meccanismi fondamentali con cui si costruiscono nuovi tipi di content. Con questo ne sappiamo abbastanza per poter definire un semplice modello di contenuti che nella prossima puntata provvederemo a usare per creare un sito, scrivendo i template necessari.