Allegato | Dimensione |
---|---|
![]() | 59.75 KB |
![]() | 67.13 KB |
![]() | 26.55 KB |
![]() | 17.3 KB |
![]() | 152.34 KB |
![]() | 62.75 KB |
![]() | 39.29 KB |
Chi sono
Salve a tutti, mi chiamo Alessandro Bonelli, e sono un ingegnere informatico in forze all'Agenzia delle Entrate, nella Direzione Centrale Accertamento a Roma. Mi occupo di progetti informatici, specie nelle fasi di analisi e monitoraggio. Nel tempo libero mi diletto nello sviluppo Web, specie con la piattaforma di CMS Drupal.
Storia
Lo scorso anno il dirigente responsabile della Comunicazione Istituzionale decise che per il sito FiscoOggi.it, portale internet di fiscalità nazionale di primaria importanza sul mercato editoriale italiano, era il momento di rifarsi il look a distanza di 7 anni dalla nascita, sia dal punto di vista grafico che contenutistico, con la focalizzazione su nuove rubriche. Inoltre era intenzione di portare all'interno del nuovo sito anche Fisconelmondo.it, che come dice il nome, si occupa di fiscalità internazionale. Fatto sta che questo secondo sito l'avevo sviluppato io tre anni or sono tramite il CMS Xoops, prodotto concettualmente semplice ma adatto al risultato che si voleva ottenere. Quindi mi proposi di sviluppare il nuovo sito tramite Drupal, per le qualità indiscusse di performance e possibilità di customizzazione. Il dirigente ne fu convinto, anche perchè dotandosi di risorse interne per lo sviluppo, questo non avrebbe avuto i tempi “biblici” soliti di alcuni dei fornitori esterni più utilizzati. Oggi sono quindi a presentare alla comunità italiana di Drupal il lavoro svolto negli ultimi mesi.
Timeline
Lo studio preliminare è iniziato a novembre 2007, ed è proseguito con lo sviluppo nei primi mesi del 2008; nel frattempo ci adoperammo per la stipula di un servizio di hosting con un content provider di primaria importanza sul mercato italiano che potesse garantire alte performance, sia come potenza disponibile che come banda di trasmissione (FiscoOggi.it raggiunge anche i 30.000 visitatori giornalieri). Abbiamo infine optato per una banda garantita davvero imponente (34mbps) e per due server Linux in configurazione cluster HA (entrambi biprocessore Quad Core) e due Firewall (anch’essi in HA).
Il sito è stato presentato in Azienda il 12 novembre 2008, come test interno sulla validità dei contenuti e del formato grafico. Dato l’esito positivo, il 24 novembre è stato diffuso il comunicato stampa di presentazione ufficiale, e da quel momento non sono stati più alimentati i siti web originari (fiscooggi.it e fisconelmondo.it).
Il sito è raggiungibile all'indirizzo www.nuovofiscooggi.it. I siti di partenza resteranno accedibili ai loro relativi indirizzi per ancora 2 mesi, sia per consentire un passaggio “soft” alla nuova piattaforma, sia per la migrazione dei contenuti pregressi.
Caratteristiche di base
NuovoFiscoOggi.it ricorda molto un giornale online, di cui riprende senz'altro la caratteristica di base, e cioè di essere continuamente alimentato da nuovi contenuti, e non seguire più il concetto di “edizione giornaliera”, tipico del precedente sito. Per la realizzazione ho adottato la piattaforma Drupal per innegabili qualità di customizzazione del layout e dei moduli, e di robustezza del codice. Non è certo da dimenticare l'enorme rete di appassionati che non si stancano mai di aiutare con preziosi consigli nella risoluzione dei più disparati problemi che si possono presentare. A suo tempo decisi per la versione 5.x, poiché la 6.x era ancora in stato embrionale. La vastità poi di moduli già testati non era poi da sottovalutare.
Il sito consente ai redattori (cioè la squadra di miei colleghi appartenenti all’area della Comunicazione Istituzionale) di accedere ad un backoffice – cosiddetto “lato author” – per l'inserimento degli articoli ed il loro posizionamento, in genere automatizzato, o manuale in particolare circostanze.
Layout
Il bozzetto stampato su foglio A3 con lo schema di massima mi fu dato non appena entrai nel progetto. Mi resi conto che le zone con contenuto dinamico erano molte e distribuite in modo eterogeneo. Per questo motivo e per avere quindi il massimo grado di libertà, sono partito da Zen, lo schema “principe” per lo sviluppo di layout arbitrari. Lo schema di base si è mantenuto su un 2/3 colonne, con header e footer. La parte centrale è il repository dei contenuti dinamici che vengono presentati in base alla data di pubblicazione. Peculiarità della sola home page è la funzione di “promozione”, per cui l'autore può decidere tre articoli da visualizzare in altrettanti blocchi di “focus on”, che lì restano fino ad ulteriore decisioni in merito.
Le pagine interne, a parte il meccanismo di promozione, si mantengono approssimativamente con lo stesso formato, tranne alcune piccole variazioni utili a rendere il sito abbastanza variegato.
Lato Drupal, ciò si traduce in una gran mole di blocchi che hanno i loro coniugati in analoghe regioni definite nel template.php, oltre a svariati modelli custom di nodi/pagine/viste:
• node-xxx.tpl.php (per i contenuti visualizzati nella loro forma estesa)
• page-xxx.tpl.php (per la visualizzazione custom di alcune zone piuttosto che altre in base alle peculiarità delle differenti sezioni del sito)
• views-list-xxx.tpl.php (per un adattamento di massima granularità dei contenuti nel formato “teaser”).
Sono inoltre stati ridefiniti alcuni exposed filter (derivati da viste) per i blocchi/pagine di ricerca presenti nel sito.
Moduli utilizzati
La parte del leone è stata fatta senz'altro dall'accoppiata CCK/Views. Infatti accanto ad una quindicina di tipi di contenuto creati ad-hoc, le viste mi hanno consentito di costruire rappresentazioni fedeli a quanto richiesto con la massima flessibilità. E’ stata fatta una scelta precisa nel NON creare nuovi moduli, ma nell’utilizzare quanto già esistente, eventualmente con alcuni adattamenti del codice che sanassero problemi di piccola entità. Questo ha senz’altro il vantaggio di poter ottenere risultati tangibili in tempi rapidi; allo stesso tempo però si ottiene un calo delle performance poiché il codice è spesso sovrabbondante e le query più pesanti del dovuto. Tale “effetto collaterale” può comunque essere sanato applicando tutti quei criteri di ottimizzazione riportati nella sezione conclusiva.
Dando per scontato i più ovvi (search, upload, …), tra i più importanti ci sono:
Struttura del sito
Content Construction Kit, integrato con i tipi di dato ImageField, Node Reference (prezioso per la gestione degli autori degli articoli), Number, Text e Date.
Views, con un grande aiuto da parte del Theme Wizard – per ottenere viste custom sui tipi CCK definiti – e dal modulo Views Bonus (ci sono archivi sparsi un po’ in tutto il sito…).
Content Templates, che conclude la trilogia dei moduli più utili di tutto il sito che si integrano ottimamente tra loro.
Pathauto… gli URL sensati sono sempre molto utili, specie quando si guardano le statistiche di accesso alle varie sezioni del sito!
ImageCache, fondamentale per il resize dinamico delle immagini presenti sia negli articoli che nelle gallerie di foto.
Thickbox, molto utile per una galleria di immagini accattivante.
Print, per avere la versione stampabile degli articoli.
Glossary, davvero valido e di facile configurazione. Praticamente una sezione del sito fatta da se con necessità di pochissima customizzazione.
Calendar, insieme a CCK/Views per la gestione delle scadenzario.
Flashvideo, per la gestione dei filmati. Perfetta l’integrazione con CCK.
Nodequeue, per gestire il meccanismo di promozione semi-manuale degli articoli in home page.
Redazione (lato author)
Content management filter, per avere un accesso controllato e non indiscriminato agli articoli inseriti.
FCKeditor/IMCE, senza i quali i redattori avrebbero dovuto combattere non poco con l’HTML per una resa professionale degli articoli.
Taxonomy Delegate, per lasciare la massima libertà nella creazione di sottocategorie (specie per le gallerie delle foto).
Unique Field, per un po’ di controllo nell’evitare l’inserimento di record duplicati (utilizzato per gli articoli e i nomi degli autori).
Newsletter
Simplenews, integrato con simplenews template e Insert View, per una gestione semi-automatizzata (ma comunque configurabile) della newsletter. Consiste in un’edizione giornaliera con gli ultimi articoli pubblicati estratti dinamicamente dal sito. Attualmente gli iscritti sono circa 11.000; la “missione” di invio impiega circa 2 ore, dopo aver fatto un opportuno tuning sia nei moduli Drupal che a livello sistemistico.
Amministrazione del sito e sicurezza
Google Analytics… della serie “perché basarsi solo su AWStat se possiamo avere un altro strumento di statistiche davvero valido e gratis”?
Password Strength, per “costringere” i redattori a scegliere password robuste.
Captcha, per evitare attacchi indiscriminati da parte di sistemi automatici/hacker (o, semplicemente, un sacco di spam tramite i moduli di contatto).
Ottimizzazione
Devel… per capire perché all’inizio il sito era tanto lento: da 700 a meno di 100 query per pagina dopo un po’ di indagini con questo prezioso modulo!
Session Expire, perché la tabella Session crea troppi problemi quando cresce in modo smisurato, e questo modulo aiuta non poco.
Javascript Aggregator, oltre all’aggregazione dei CSS e all’attivazione della cache, i tempi di caricamento sono drasticamente diminuiti.
Boost, che staticizzando i contenuti dinamici per i soli utenti anonimi, compie un notevole balzo nella direzione della drastica diminuzione dei tempi di caricamento per pagina, che spesso scendono al di sotto del secondo. Questa peculiarità è comunque applicabile al caso specifico di un sito che ha la maggior parte di utenti visitatori anonimi, per i quali è accettabile che vedano gli ultimi aggiornamenti del sito con un ritardo di 10/15 minuti.
Per quanto riguarda l’ottimizzazione, proprio a ridosso del rilascio in esercizio mi hanno fatto notare l’esistenza di YSlow, add-on di Firefox per esaminare quanto sono pesanti le pagine web. Beh, non sapendolo partivo da un misero score 35/37 in home page. A quel punto ho cercato di capirne i motivi, ed in modo certosino ho tentato di aumentare lo score del sito. Ora sono arrivato ad un apprezzabile 68 in home page, ma alcune pagine interne superano anche 80. Questi risultati sono stati raggiunti sia tramite moduli di ottimizzazione di Drupal e meccanismi interni (come sopra detto), altri tramite opportune regolazioni del file di configurazione di Apache e del .htaccess.
Problemi a go go…
E sì, come per tutti i progetti, tanto sono grandi, tanti sono i “challenge” a cui occorre far fronte:
• fare continui backup del sito e del database (per quest'ultimo, attenzione alla codifica in fase di export che se errata fa perdere i caratteri accentati della lingua italiana);
• scrivere manuali comprensibili per i redattori degli articoli è essenziale per sgravarsi da un lavoro di affiancamento che può essere molto pesante se perdura nel tempo, senza riuscire a rilasciare (in tutti i sensi!) quanto realizzato all'utente finale;
• la parola d’ordine è ottimizzare, ottimizzare, ottimizzare! Una gestione accorta del meccanismo di caching e la compressione di tutto quanto sia comprimibile, può rendere la fruizione dei contenuti molto più performante;
• qualche problema per la validazione xhtml 1.0 strict, specie con i link esterni (target=”_blank” sparsi qua e là). Aggirato il problema con un artificio… e un po’ di javascript;
• migrazione dei siti preesistenti: l’ho messo per ultimo solo perché è in corso d'opera. Non mi preoccupa la sorgente dati Xoops, un po’ di più Informix/I.Reach, perché in questo caso è forse necessario coinvolgere il gestore attuale del sito, con un esborso economico non indifferente. Altrimenti, il web scraping sta dando risultati molto interessanti…
Vorrei farLe i complimenti per la realizzazione!
A dir il vero sto tentando di passare a drupal anch'io proprio a seguito aver visionato la nuova struttura del fiscooggi, che quotidianamente visito.
Cordialmente La saluto.
Andrea Casarini
Complimenti!
Potresti dare qualche dritta su come si fa a passare dallo schema di sito realizzato con photoshop al layout html+css?
Qualche dritta potrei dartela se fossi partito da Photoshop (o da qualche altro programma di grafica), ma così non è stato.
Partendo da zen e dal page di base ho definito le regioni che mi servivano (lavoro fatto a mano... su un foglio di carta!).
Dopodichè, con l'aiuto di Firebug, ho definito i fogli di stile preliminari, per il solo layout.
E' un lavoro certosino, ma che da ottimi risultati perchè si parte da zero, senza codice "sporco".
Alessandro Bonelli
Complimenti, ma io sono pignolo ;)
Se non sbaglio siete tenuti al rispetto della legge Stanca sull'accessibilità: siete riusciti a rispettare i 22 requisiti?
Premetto che io non ho fatto nessuna verifica, quindi lo domando per sapere le eventuali difficoltà incontrate oltre al rispetto della versione strict dell'XHTML.
Il metodo della carta mi è sembrato ottimo! :)
Ancora complimenti
Maurizio Cavalletti
http://www.cms-drupal.it
Hai premuto su un nervo dolente: l'accessibilità.
Dei 22 requisiti una buona parte possono essere soddisfatti con un "buon" codice (e senz'altro Drupal aiuta molta in questo), ma altri hanno bisogno di tanto impegno da parte di chi scrive i contenuti. A parte aver indicato delle linee guide generali (una per tutte: l'uso dell'Alternate Text nelle immagini utili in particolare per i non vedenti), poi è buon cuore del redattore attenersi a regole di buon senso. Purtroppo a volte quando spiego le motivazioni dietro a determinate scelte, mi guardano come un marziano.
Insomma, per quanto posso ce la metto tutta, anche a rendere tutti più coscienziosi e attenti a chi è stato meno fortunato di noi.
Fai un giro aiutandoti con google sui siti della Regione Emilia-Romagna dedicati all'accessibilità.
Ci dovrebbero essere delle guide, liberamente scaricabili, dedicate ai redattori per scrivere in modo accessibile (non è solo una questione di html).
Purtroppo non ho con me i link diretti.
Ciao