Hello world! Essendo Tecnomeme realizzato interamente con il popolare sistema di gestione contenuti (aka CMS - Content Management System) Drupal, ho pensato di inaugurare il sito proprio con un post dedicato a questa potente e flessibile piattaforma.
Nel particolare vedremo come realizzare quello che in gergo drupalese viene chiamato un tema, altrimenti conosciuto in altri sistemi come "skin" o "template". Bene, avanti allora.
Conoscenze necessarie
un poco di PHP
CSS
(X)HTML di base
Concetti di base del funzionamento dei templates in Drupal
Tema: l'equivalente di "template" o "skin" ("theme" è la parola magica qualora desideriate approfondire la ricerca su Drupal.org ;)
PHPTemplate: il motore di rendering ufficiale di Drupal.
Blocco: un blocco è un insieme definito di contenuti di un certo tipo che viene posizionato in un'area precisa della pagina
Regione: sono le aree della pagina definite a priori, dove è possibile inserire i blocchi di contenuti. Le regioni di default in Drupal sono 5:
header
left sidebar
right sidebar
content
footer
Files di un template Drupal
Un buon punto di partenza è il tema Zen.
Zen è stato pensato come un tema semplice per chi vuole creare un proprio template. Per questo mette a disposizione un'ampia documentazione sotto forma di commenti nel PHP, nel CSS e nell'HTML. Questa è una lista dei files contenuti nel tema Zen:
I file essenziali che troverete praticamente in qualsiasi tema sono i seguenti:
page.tpl.php: il template principale che definisce il contenuto di ogni pagina.
node.tpl.php: questo file definisce il contenuto di ogni singolo nodo.
block.tpl.php: definisce il contenuto dei blocchi.
comment.tpl.php: definisce il contenuto dei commenti.
box.tpl.php: aggiunge un box attorno ad alcuni elementi, ad esempio ai commenti (raramente usato).
screenshot.png: uno screenshot del tema, utilizzato nelle pagine di amministrazione e nelle pagine personali di ogni utente se volete dare la possibilità ai vostri visitatori di scegliere tra più temi.
logo.png: il logo grafico se ne usate uno.
style.css: il foglio di stile principale del tema.
favicon.ico: quella piccola icona che viene visualizzata nella barra dell'indirizzo dei moderni browsers accanto all'URL
template.php: questo file permette di intervenire più a fondo nel tema, ad esempio aggiungendo ulteriori regioni, riscrivendo le variabili di default e altro.
In pratica, ciascun file di tipo .tpl.php contiene un insieme di codice HTML, PHP e CSS necessario a definire rispettivamente la struttura, il contenuto e l'aspetto di ciascuna porzione della pagina. Il ruolo e la gerarchia dei tre principali templates è illustrato nella figura qui sotto:
Ciascun file di template (.tpl.php) può invocare determinate variabili per mostrare determinati contenuti e informazioni (es: il titolo della pagina, la data, il contenuto principale, l'utente che l'ha creata,...). Vediamo quali sono singolarmente, e vediamo anche un modello di base per ciascun file del template (clicca per dipanare i contenuti):
Questi templates di default sono un ottimo punto di partenza per creare il proprio tema Drupal da zero.
In ogni modo se siete alle primissime armi la cosa migliore è iniziare con il personalizzare un tema già esistente. Torniamo quindi al nostro caro tema Zen:
scarichiamo l'ultima versione disponibile, scompattiamola e spostiamo la cartella del tema nella directory /sites/default/themes della nostra installazione Drupal.
creiamo una copia della cartella del tema e chiamiamola ad esempio "Zen-custom".
attiviamo e selezioniamo il tema "Zen-custom" dall'area admin (/admin/build/themes) della nostra installazione Drupal.
bene, siamo pronti per iniziare a mettere le mani sul codice XHTML dei singoli files del template (per cominciare page.tpl.php, node.tpl.php, block.tpl.php, comment.tpl.php) per modificare struttura di base, ordine degli elementi e classi. Possiamo inserire o eliminare le singole variabili PHP viste sopra per mostrare o nascondere i contenuti che ci interessano.
Per finire apriamo il nostro foglio stile style.css nel nostro editor di testo preferito e modifichiamo il codice CSS (classi, sottoclassi, identificatori,..). Utilizzeremo invece un programma grafico o di fotoritocco per editare le immagini, gli sfondi, i bottoni e tutti gli elementi grafici che vogliamo modificare.
Salviamo files e immagini, cancelliamo la cache del browser (importante se vogliamo vedere le modifiche, dato che Drupal utilizza una cache piuttosto aggressiva) e ammiriamo il nostro primo tema Drupal :)
In questo articolo sono state esposte le tecniche di base per la personalizzazione e la creazione di un tema in Drupal. Altre tecniche avanzate (PHPTemplate, Variables Overrides, Themable Functions,...) permettono di creare temi complessi. Spero di riuscire a trattarle presto. Per i più impazienti, esistono diversi manuali in inglese che trattano questi argomenti.
Servizio professionale: se non hai il tempo, la voglia o le conoscenze per occuparti della conversione del tuo design JPG, PNG o PSD in un tema Drupal, se vuoi personalizzare un tema open source o convertire il tuo sito a Drupal, puoi avvalerti dei servizi di PureDivs, conversioni professionali da design psd a temi Drupal.
UPDATE: ho aggiunto negli uploads uno schema che rappresenta la struttura delle classi del tema Zen. E' una guida visuale utile a comprendere la struttura di un tema Drupal e ad individuare facilmente quali classi del foglio stile modificare per personalizzare il tema a proprio piacimento.
Questa introduzione ti è stata utile? Vorresti che venga approfondito qualche argomento in particolare? Mi farebbe piacere sapere che ne pensi, quindi se hai un minuto lascia un commento qui sotto ;)
Se conoscessi le variabili, le classi, il php, i css etc. potrei quasi riuscirci :-)
Comunque, pur non sapendo nulla di tutto ciò, sono convinta che hai fatto un gran lavoro.
Pecca però di una cosa: l'offerta di fare un template a chi proprio è ignorante come me :-)
Ciaoooo
Ciao Marco, sei stato provvidenziale nel fornire anche la traduzione delle variabili per i varii *tpl.php. Mi hai risparmiato un paio d'ore e per questo ti meriti la citazione sulla mia tesi di laurea. Grazie
se avessi (ri)fatto l'immagine dello schema di page.tpl.php sarebbe stato un articolo davvero unico! (ho visto la stessa immagine nel libro Pro Drupal Development..
per tutto il resto è un ottimo tutorial :)
infatti l'immagine è tratta proprio da quel manuale. Per dare a Cesare quel che è di Cesare (shame on me, avrei dovuto farlo al momento della prima pubblicazione del libro..Matt, mi perdonerai? ;) ho aggiunto il dovuto credit a fianco immagine. Grazie per avermelo ricordato!
ciao, grazie per il mini-tutorial, davvero molto utile.
Volevo segnalarti questo tutorial in inglese http://www.nicklewis.org/node/841
'mi sembra' ben fatto ma la mia conoscenza dell'inglese non mi permette di approfondire.
Affronta le tecniche 'avanzate' a cui tu fai riferimento
Bravo sì!
Se conoscessi le variabili, le classi, il php, i css etc. potrei quasi riuscirci :-)
Comunque, pur non sapendo nulla di tutto ciò, sono convinta che hai fatto un gran lavoro.
Pecca però di una cosa: l'offerta di fare un template a chi proprio è ignorante come me :-)
Ciaoooo
detto fatto :)
per qualsiasi necessità di theming Drupal puoi visitare http://puredivs.com lo aggiungo in commento alla guida, grazie :)
OTTIMO
Ben fatto, grazie mille, io sto perdendo ore a tradurre i relativi libri in inglese!
Citato sulla tesi
Ciao Marco, sei stato provvidenziale nel fornire anche la traduzione delle variabili per i varii *tpl.php. Mi hai risparmiato un paio d'ore e per questo ti meriti la citazione sulla mia tesi di laurea. Grazie
bravo!!
davvero un ottimo tutorial!! semplice e intuitivo!! bravo!
se avessi (ri)fatto
se avessi (ri)fatto l'immagine dello schema di page.tpl.php sarebbe stato un articolo davvero unico! (ho visto la stessa immagine nel libro Pro Drupal Development..
per tutto il resto è un ottimo tutorial :)
absolutely right
infatti l'immagine è tratta proprio da quel manuale. Per dare a Cesare quel che è di Cesare (shame on me, avrei dovuto farlo al momento della prima pubblicazione del libro..Matt, mi perdonerai? ;) ho aggiunto il dovuto credit a fianco immagine. Grazie per avermelo ricordato!
complimenti
ciao, grazie per il mini-tutorial, davvero molto utile.
Volevo segnalarti questo tutorial in inglese
http://www.nicklewis.org/node/841
'mi sembra' ben fatto ma la mia conoscenza dell'inglese non mi permette di approfondire.
Affronta le tecniche 'avanzate' a cui tu fai riferimento
Cosa ne pensi?
...magari ti va di tradurlo, ampliarlo ?
grazie, ciao e complimenti ancora
Buono!
Post molto interessante e utile...sarebbe bello che parlassi un pò più in dettaglio sulla personalizzazione di Zen ^_^
grande!
fantastica guida, grazie
Complimenti!
Ottima guida, davvero ottima.
Ottima guida! :)
Ottima guida! :)
Complimenti Ottimo articolo
Complimenti
Ottimo articolo
molte grazie questo articolo
molte grazie questo articolo mi ha chiarito le cose sui template i drupal
Hai fatto un bel lavoro con
Hai fatto un bel lavoro con questo tutorial.
Post new comment