UNIVERSITA’ DEGLI STUDI DI CAGLIARI
FACOLTÀ DI SCIENZE
Corso di Laurea Magistrale in Informatica
Seminario sui CMS
Corso di Computazione
su Rete
Stefano Salidu
49217
1
Obiettivo del Seminario
In questo Seminario cerchiamo
di capire bene cosa sia un
Content Management System
(CMS), vediamo come si sono
evoluti, e come hanno aiutato il
web ed evolversi in quello che
noi oggi chiamiamo web 3.0.
2
CMS - Contenuti
Negli ultimi anni Internet ha
subito importanti trasformazioni,
i Contenuti sono aumentati
esponenzialmente e gli Utenti
ricoprono un ruolo sempre più
importante.
Non possiamo più gestire i
Contenuti uno alla volta e
perdere tempo mettendo mano
al codice, ci serve uno
strumento potente ed efficacie,
ci servono i CMS!
3
CMS - Contenuti
La sigla CMS sta per Content
Management System, ossia
Sistema di Gestione di
Contenuti.
Diamo una definizione alla
parola «Contenuto»:
Cosa è un Contenuto?
4
CMS - Contenuti
La sigla CMS sta per Content
Management System, ossia
Sistema di Gestione di
Contenuti.
Da cosa è formato un
Contenuto?
5
CMS - Contenuti
La sigla CMS sta per Content
Management System, ossia
Sistema di Gestione di
Contenuti.
Da cosa è formato un
Contenuto?
Qualsiasi informazione, come
un testo, un immagine, un
elemento audio o video ed in
ogni caso qualunque
informazione che può essere
rappresentate in formato
digitale, costituisce un “dato”, il
quale è parte di un “Contenuto”.
6
CMS - Contenuti
La sigla CMS sta per Content
Management System, ossia
Sistema di Gestione di
Contenuti.
Diamo una definizione alla
parola «Contenuto»:
«Un Contenuto è un set di
Dati eterogenei»
7
CMS - Contenuti
Per esempio un post su
Facebook è un Contenuto:
8
CMS – Utenti
Un altro chiarimento va fatto
sulla domanda «chi sono gli
utenti del sistema?».
Difatti mentre nel vecchio
modello di interazione statica i
gestori di un sito inserivano i
contenuti e gli utenti potevano
unicamente consultarli, ora è
anche possibile che l’utente
interagisca con i contenuti.
9
CMS – Utenti
Un altro chiarimento va fatto
sulla domanda «chi sono gli
utenti del sistema?».
Difatti mentre nel vecchio
modello di interazione statica i
gestori di un sito inserivano i
contenuti e gli utenti potevano
unicamente consultarli, ora è
anche possibile che l’utente
interagisca con i contenuti.
10
CMS – Utenti
Si può trattare semplicemente
di un commento in una foto,
oppure può esser l’utente
stesso che inserisce una foto in
un sito di sharing.
Per far sì che un CMS si
adegui alle esigenze di
progettazione di differenti
sistemi web esso deve dunque
prevedere una gestione dei
permessi.
11
CMS – Utenti
Questo è molto importante
affinchè non tutti abbiano ad
esempio i permessi di
modificare un Contenuto
inserito da un altro utente.
Per fortuna a maggior parte
dei sistemi CMS viene in contro
al problema proponendo una
suddivisione dell’utenza in
Ruoli.
12
CMS – Ruoli
Avremo sicuramente la figura
dell’Amministratore con la
totalità dei permessi, al fine di
gestire il sistema.
Saranno poi presenti una
serie di figure con permessi
sempre minori in maniera da
ricoprire correttamente il proprio
ruolo all’interno del sistema.
Generalmente un utente non
iscritto avrà il minor numero di
permessi.
13
CMS – Ruoli
Notare che, sebbene possa
sembrare banale, è molto
importante che esista sempre
una figura avente la totalità dei
permessi, altrimenti vi
sarebbero delle operazioni non
eseguibili da nessun utente,
nemmeno dal creatore stesso
del sistema!!!
14
CMS – RIepilogo
Dunque ricapitolando fino ad
ora sappiamo che un CMS è un
sistema software che ci facilita
la creazione e la gestione di
contenuti.
Inoltre permette agli altri
utenti di interagire in qualche
modo con i contenuti presenti
sul sistema, a seconda dei
permessi utente che
possiedono.
15
CMS – Ma non finisce qui
Ora sappiamo che i Contenuti
sono un insieme di Dati, e che
possiamo, attraverso i CMS,
gestire i permessi di accesso a
questi ultimi
Tuttavia mancano ancora due
importanti elementi che
rendono un CMS indispensabile
per la gestione di grandi, se
non enormi sistemi informativi.
16
CMS – Punti di forza
La trasparenza d’uso, che
evita all’utente di dover disporre
di una buona conoscenza dei
sottolivelli di sistema (database,
programmazione, etc.), al fine
di rendere il più possibile user
friendly l’interazione.
La gestione della grafica
tramite template, che
permettono di separare ciò che
sono i Contenuti e la loro
rappresentazione.
17
CMS – Database
Comunemente i Dati, intesi
come tutte le informazioni che
concorrono a formare un
Contenuto, vengono
memorizzati in un database,
generalmente gestito tramite
MySQL e Microsoft SQL Server.
Questo comporta notevoli
vantaggi, favorendo la
successiva visualizzazione del
contenuto tramite pagine
formattate in HTML.
18
CMS – Vantaggi
Dunque la possibilità di:
•Accedere ai dati con diverse
modalità;
•Elaborare i dati in futuro;
•Indicizzare i dati;
•Gestire modifiche/accessi da
parte di più utenti
contemporaneamente
•Eseguire in maniera semplice
attività di backup
19
CMS – Presentazione
La presentazione dei
Contenuti avviene
successivamente attraverso
appositi template, i quali
memorizzano informazioni
riguardanti la maniera in cui i
dati verranno disposti all’interno
della pagina e come essi
verranno visualizzati.
E’ dunque sufficiente
cambiare template per
ottenere, a partire dalle stesse
informazioni, differenti modalità
di presentazione.
20
CMS – Presentazione
Questo permette di
suddividere i ruoli concorrenti
alla realizzazione di un sito
web; mentre nel web statico le
informazioni erano strettamente
legate all’HTML e CSS,
costringendo l’amministratore
ad operare
contemporaneamente sui dati e
sulla loro presentazione grafica,
attraverso software come
Dreamweaver e Frontpage.
Ora questa separazione
permette di delimitare
correttamente il ruolo di Autore
dei contenuti da quello del Web
designer.
21
CMS – Autore vs Designer
L’Autore avrà accesso ad
una piattaforma di gestione dei
contenuto autonoma creata ad
hoc dal Web Designer.
Il Web Designer, grafico
esperto e conoscitore dei
linguaggi di programmazione,
potrà invece occuparsi della
creazione/modifica del template
vero e proprio, senza dover
effettuare questa operazione
ogniqualvolta venga inserito un
nuovo contenuto.
22
CMS – Autore vs Designer
Affinchè ciò sia possibile il
Web Designer dovrà prevedere
un’alta modularità ed
adattabilità grafica, al fine di
essere suitabile alle esigenze di
quelli che saranno poi gli utenti
del sistema.
Fortunatamente la maggior
parte dei CMS supportano
nativamente funzionalità adatte
a soddisfare tali necessità.
23
CMS – Riuso
Da notare come la
separazione tra dati e template
favorisca il riuso degli stessi
dati, per poter essere fruibili su
diverse piattaforme,
consultando un articolo su un
dispositivo mobile o tablet
fornendo una grafica più adatta
alle dimensioni ridotte di tali
dispositivi, oppure fornendo dei
feed RSS che prevedono
l’utilizzo dei dati puri senza
l’apporto di alcuna aggiunta
grafica.
24
CMS – Riuso
Dunque in poche parole
attraverso l’utilizzo di un CMS
tutta l’interazione con il sistema
viene resa disponibile ad un
altissimo livello di interazione,
non bisogna preoccuparsi di
gestire i server, aggiornare il
software, gestire le revisione ed
i backups, etc.
25
CMS – Riepilogo 2
Tuttavia ciò comporta non
solo vantaggi, vi sono anche
notevoli svantaggi:
Un contenuto web generato
dinamicamente può dare un
impatto significativo sulle
performance del server web,
riducendo la scalabilità del sito
web e creando vulnerabilità
all’interno del sistema. Ciò deve
essere preso in considerazione
dai programmatori del sistema
quanto dagli amministratori del
sistema, in modo da ovviare a
tali problematiche.
26
CMS - Confronto
I CMS, com’è facile intuire,
sono molti oggi sul mercato e
presentano molte
caratteristiche in comune.
Sebbene sia semplice capire
quale prodotto abbia il più gran
numero di funzioni, risulta ben
più arduo comprendere quale di
essi abbia le funzionalità di cui
necessitiamo!
27
CMS - Confronto
Questo fenomeno è per lo più
dovuto dal fatto che una volta
creato un archetipo funzionante
e comunemente accettato
dall’utenza, difficilmente esso
può essere spezzato, dal
momento che ciò creerebbe
confusione nell’utente che,
vedendosi costretto a dover
reimparare daccapo qualcosa
che sa già fare, molto molto
molto molto molto
probabilmente rifiuterebbe la
nuova soluzione, specialmente
in presenza di curve di
apprendimento molto rigide.
28
CMS - Confronto
Proseguiamo conoscendo
alcuni dei CMS più utilizzati,
variando dall’ambito applicativo
generico ad alcuni sistemi che
hanno scelto di specializzarsi
garantendo funzionalità per il
Business o per l’E-commerce,
al fine di ritagliarsi una mirata
fetta di Utenza ed in particolare
di mercato.
29
ALFRESCO
Sviluppato in Java, nato per l’enterprise ed utilizzato
per la gestione di contenuti aziendali, condivisione di
documenti e la collaborazione tra gli utenti.
Nel caso non fossero sufficienti, le funzionalità,
possono essere ampliate tramite Add-ons.
L’aspetto Grafico risulta più rigido di altri suoi
concorrenti, mentre più attenzione si pone nei ruoli,
suddivisi in gruppi, che devono spesso rispecchiare
ruoli aziendali preesistenti.
30
DRUPAL
CMS open source, sviluppato in PHP, basato su un
elevata personalizzazione del sistema, sovrascrivendo
il core, oppure aggiungendo moduli, messi a
disposizione ed aggiornati dalla community.
I contenuti sono suddivisi in pagine, documenti fissi, e
storie, contenuti aggiornabili come le news.
L’aspetto grafico è gestito in temi, la gestione degli
utenti è effettuata in ruoli, che determinano i permessi
di accesso al sistema.
31
JAHIA
Sviluppato in JAVA, pensato per l’enterprise con una
particolare attenzione al social e al mobile.
Fornisce strumenti come Jahia Studio per strutturare i
template e le apps, ponendosi come singolo strumento
in grado di radunare tutte le funzionalità richieste, ad
esempio emulando come il sito apparirebbe su diversi
dispositivi.
La gestione degli utenti avviene tramite ruoli, e a tal
scopo è stata introdotta la possibilità di emulare la
visione del singolo utente.
32
JOOMLA!
CMS open source sviluppato in PHP utilizzando la
programmazione ad oggetti (OOP). E’ il secondo CMS
più utilizzato al mondo.
Sono nativamente presenti componenti per creare a
gestire i contenuti, ed è in seguito possibile estendere
queste funzionalità tramite plugins come ad esempio
editor di testo avanzati.
La grafica è gestita tramite template e la gestione
degli utenti è stata recentemente migliorata con
l’introduzione dei ruoli.
33
MAGENTO
CMS, sviluppato in PHP, ideato per l’e-commerce, con
svariati strumenti di marketing e gestione di un negozio
online, ad esempio da pannello di controllo è possibile
gestire informazioni riguardanti la spedizione della
merce.
La grafica, organizzata in temi, include funzionalità
quali la scelta del logo del negozio.
Mentre l’utenza è legata all’archetipo venditorecompratore, un’organizzazione ben più elaborata in
gruppi può essere fatta per quanto riguarda la merce.
34
WORDPRESS
CMS open source, sviluppato in PHP. E’ il CMS più
utilizzato al mondo.
Nasce come un sistema per il blogging, ma grazie alla
sua estendibilità è ormai limitato alla sola
immaginazione dell’utilizzatore.
Le sue funzionalità possono infatti essere facilmente
estese da plugin resi disponibili dalla community, o da
widgets, piccoli moduli che offrono le funzionalità del
drag ‘n drop.
La grafica è gestita tramite temi e la gestione degli
utenti viene eseguita tramite ruoli.
35
XOOPS
CMS open source, sviluppato in linguaggio PHP,
basato sul minimalismo, dopo l’installazione ci si ritrova
infatti davanti ad una home page quasi vuota.
Le funzionalità sono infatti inizialmente limitate al solo
accesso dell’admin, e possono essere estese tramite
appositi moduli.
La grafica è gestita tramite temi, e la gestione degli
utenti è eseguita tramite una suddivisione in gruppi, con
due livelli di permessi, il livello kernel ed il livello
modulo.
36
CMS – Considerazioni
Come annunciato abbiamo
visto che l’archetipo della
suddivisione d’utenza in Ruoli è
molto utilizzato, come anche la
gestione della grafica in
template tramite una
suddivisione dei Contenuti e
della loro Presentazione, la
quale è una caratteristica ormai
ben fondata nel concetto di
sistemi CMS.
37
CMS – Considerazioni
Allo stesso modo i CMS
presentano la caratteristica
comune di fornire un alta
estendibilità del sistema tramite
plugin, che vanno ad
aggiungersi alla suite di
funzionalità iniziali.
Ma com’è possibile che siano
presenti plugin per tutto ciò che
potrebbe desiderare un Web
Designer, che essi vengano
testati, aggiornati e che ne
vengano rilasciati di nuovi
stando al passo con i tempi?
38
CMS – Open Source
Come anticipato in alcuni dei
CMS quali Drupal, Wordpress e
Joomla e Xoops, si ha un
perfetto esempio di come la
politica Open Source dia i
propri frutti.
Tuttavia rimangono Alfresco,
Jahia e Magento, su un vecchio
approccio del software a
pagamento.
39
CMS – Open Source
Tuttavia dal momento che
sono CMS utilizzati da grandi
aziende per scopi ben precisi,
non sorgono grossi problemi.
Per chiarirci, un Web
Designer che si approccia alla
creazione di una pagina di
vendita e-commerce, non avrà
bisogno di molti strumenti se
non quelli forniti dal sistema
stesso, come ad esempio un
integrazione maggiore dei
Contenuti all’interno di un
carrello virtuale.
40
Drupal
Adesso concentriamoci sul
CMS Drupal, vedendo
rapidamente le sue
caratteristiche principali, e
confrontandolo ai CMS
concorrenti.
41
Drupal – Come funziona
Gli Hook
Sono composti dal
nome del modulo
seguito dal nome
dell’hook come segue:
nomemodulo_user(…)
nomemodulo_nodeapi(…)
nomemodulo_load(…)
Esempio di implementazione di un hook
nomemodulo_taxonomy(…)
42
Drupal – Come funziona
Sono funzioni di
callback scatenate dal
sistema all’accadere di
determinati eventi.
Il nome dell’hook
viene utilizzato per
determinare quale hook
attivare.
Esempio di implementazione di un hook
43
Drupal – Dettagli funzionali
I Form
Vengono strutturati
come array e non
richiedono definizioni
del codice di markup,
dal momento che è il
sistema stesso a
validarli
Vengono gestiti
tramite l’uso di hook.
/**
* Implementazione dell’ hook_form_alter().
*/
function nomemodulo_form_alter($form, $form_state, $form_id) {
// Aggiungi node-form info
$form[’name’] = array(
‘#type’
=> ‘select’,
‘#title’
=> t(‘Title’),
‘#description’
=> t(‘Description’),
‘#required’
=> TRUE,
‘#options’
=> array(
‘value1’
=> t(‘Description 1’),
‘value2’
=> t(‘Description 2’),
‘value3’
=> t(‘Description 3’),
),
);
}
Implementazione dell’hook_form_alter
/**
* Implementazione dell’ hook_validate().
*/
function nomemodulo_validate($form, $form_elements) {
if($form_elements[‘age’] < 18) {
form_set_error(‘age’, t(‘Devi essere maggiorenne.’));
}
}
Implementazione dell’hook_validate
44
Drupal – Dettagli funzionali
L’interfacciamento con
il Database avviene
tramite un livello di
astrazione chiamato
Data Base Layer (DBL)
che si occupa di gestirne
la struttura e le chiamate
di scrittura e lettura.
$results= db_query(“SELECT * FROM (tabella)
WHERE id < %id”, $id_limit);
while ($row = db_fetch_object($results)) {
$output .= $row -> id;
$output .= $row-> txt;
$output .= $row-> bool;
}
Esempio di un estrazione di dati dal DB
I Database supportati da Drupal
45
Drupal – Dettagli funzionali
Operazione di update
di un campo all’interno di
una tabella usando le
funzioni del DB:
$data = new stdClass();
$data-< id =25;
$results= db_query(“SELECT * FROM (tabella)
WHERE id < %id”, $id_limit);
while ($row = db_fetch_object($results)) {
$output .= $row -> id;
$output .= $row-> txt;
$output .= $row-> bool;
}
Esempio di un estrazione di dati dal DB
$data->txt = ”text here”;
$data-> bool = FALSE;
Drupal_write_record
(‘tabella’, $data, array(‘id’));
I Database supportati da Drupal
46
Drupal – Dettagli funzionali
Nel 2013 quasi un milione di aziende fa ha utilizzato
Drupal. Queste includono centinaia di rinomate
organizzazioni, includendo corporazioni, compagnie
pubblicitarie e di informazione, governi, associazioni
non-profit, scuole e privati.
47
Drupal – Casi d’uso
Ecco alcuni esempi messi in evidenza del team di Drupal:
• Whitehouse (Governativo) - http://www.whitehouse.gov/;

48
Drupal – Casi d’uso
Ecco alcuni esempi messi in evidenza del team di Drupal:
• Nazioni Unite (Governativo) - http://www.fighthunger.org/
• NASA (Governativo) - http://nasa.gov/;
• Greenpeace (Org. Non-Profit) http://www.greenpeace.org.uk/
• Open Source Initiative (OSI) - http://opensource.org/
• Discovery Channel (Educazione) - http://discoveryclub.de/

49
Drupal – Casi d’uso
Ecco alcuni esempi messi in evidenza del team di Drupal:
• Ubuntu (Distribuzione Linux) - http://ubuntu.com/
• Eclispe (Programmazione) - http://live.eclipse.org/
• Sony Musicbox (Musica) - http://musicbox.sonybmg.com/
• Playstation (Intrattenimento) - http://asia.playstation.com
• SecondLife (Social) - http://teen.secondlife.com

50
Drupal - Idee per migliorare
Migliorare la fase di sviluppo, concentrandosi sugli
strumenti di testing, ad esempio integrando funzioni
quali l’emulazione del sito su diversi dispositivi.
Un’altra idea è quella di permettere all’utente di poter
editare i contenuti in tempo reale, senza dover per
forza accedere alla schermata di editing.
51
Drupal - Idee per migliorare
Fornire maggiore integrazione nei confronti del
mobile, sfruttando meccanismi in grado di produrre
codice HTML5 in output, rendendo il sistema più agile,
permettendo la sua visualizzazione anche su dispositivi
che non supportano FLASH.
Migliorare il Multilanguage, il quale dovrebbe essere
più curato, a partire dall’instal-lazione, inizialmente
unica-mente in inglese a meno di non scaricare
pacchetti aggiuntivi.
52
Drupal - Idee per migliorare
Riconsiderare il Development, infatti la natura friendly
del sistema viene pagata a caro prezzo con un
eccessivo livello di astrazione;
Molto tempo viene inoltre perso quando nuove
versioni vengono rilasciate, dal momento che molte API
cambiano ed i moduli devono essere aggiornati alla
nuova versione.
Questi difetti dovrebbero essere eliminati, dal
momento che rendono Drupal inaccessibile a molte
aziende, che nascono come start-up e vorrebbero
sfruttare appieno la programmazione agile.
53
Conclusioni
Drupal, nei confronti dei
sistemi concorrenti, è dunque in
grado di offrire una vasta
gamma di funzionalità che lo
pongono come una soluzione
adatta ad applicarsi ad ogni tipo
di progetto web.
54
Conclusioni
Nonostante ciò, sebbene sia
uno dei CMS più utilizzati al
mondo, esso non è privo di
difetti, legati principalmente al
core eccessivamente astratto e
ad un mancata sensibilità nei
confronti delle funzionalità più
moderne come ad esempio il
mobile.
55
Conclusioni
Tuttavia sono sempre più forti
le voci che acclamano il rilascio
di una nuova versione,
chiamate Drupal 8, la quale è
già da un anno in fase di testing
e promette di rivoluzionare il
futuro dei CMS.
56
Scarica

Seminario sui CMS