drupal lessons by nois3lab

77
Drupal lessons Lessons

Upload: nois3lab

Post on 12-Jan-2015

5.968 views

Category:

Education


0 download

DESCRIPTION

Slide prediposte per un corso di livello intermedio sul CMS Drupal. Nel corso delle slide si affronta una prima parte di presentazione delle caratteristiche di Drupal per poi procedere verso un approfondimento relativo ad alcuni dei suoi plugin principali con una particolare attenzione al theming, anche avanzato.

TRANSCRIPT

Page 2: Drupal Lessons by nois3lab

| Slide 2

Drupal, un primo assaggio

Drupal lessons

✔ Una overview➔ web 2.0 e Content management systems

✔ Il core➔ Nodi, commenti, blocchi. Il sistema

✔ I plugin (o moduli)➔ Alcuni moduli essenziali, una prima presentazione

✔ L'amministrazione➔ Utenti, ruoli, permessi, pagine di amministrazione

✔ Basic theming

➔ Temi, subthemes, regioni, fogli di stile

Page 3: Drupal Lessons by nois3lab

| Slide 3

Una overview

CMS - Content management system

Un sistema per gestire:

✔ L'immissione

✔ La pubblicazione

✔ La presentazione

✔ L'organizzazione

dei contenuti in un applicativo web

Drupal lessons

Page 4: Drupal Lessons by nois3lab

| Slide 4

Web 2.0 / New web

Un tempo c'erano gli editor HTML, oggi si usano dei software per fare web, perché il web è ”dinamico”, ovvero:

✔ Ha pagine che non risiedono in ”file” ovvero queste vengono

generate dinamicamente

✔ Ha contenuti pubblicati dai visitatori del sito (UGC)

✔ Presenta contenuti contestuali

✔ Comunica con altri servizi online

Una overview

Page 5: Drupal Lessons by nois3lab

| Slide 5

I linguaggi

✔ Php <?php ?>

✔ Javascript <script language=”text/javascript”></script>

✔ Xhtml <html></html>

✔ Css selector { property:value }

✔ Xml <tag></tag>

Una overview

Page 6: Drupal Lessons by nois3lab

| Slide 6

Drupal, un primo assaggio

✔ L'environment

Lamp (Linux/Apache/Mysql/Php)

✔ Il core

✔ I moduli

✔ I temi

✔ Le versioni

Drupal lessons

Page 7: Drupal Lessons by nois3lab

| Slide 7

Il core

✔ Nodi e commenti

Tutto è un nodo...o quasi

✔ Utenti

Registrazione / Login – L'utente root

✔ Tassonomie

Vocabolari e termini

✔ I blocchi

✔ Il sistema

Drupal, un primo assaggio

Page 8: Drupal Lessons by nois3lab

| Slide 8

L'amministrazione

✔ Ruoli utente

✔ I permessi utente

✔ Aggiornamento ed installazione di moduli

✔ Script di update del db, update.php

✔ Il tema di amministrazione

✔ Cron

✔ Le clean urls

✔ I tipi di contenuto

Drupal, un primo assaggio

Page 9: Drupal Lessons by nois3lab

| Slide 9

I plugin

Drupal è un software modulare, ovvero molte funzionalità possono essere abilitate installando dei plugin disponibili su drupal.org

✔ CCK – Content construction kit

✔ Views, un modulo per prelevare e presentare i contenuti

✔ Token, uno strumento per tutti gli altri moduli

✔ Pathauto, ovvero gestire in modo automatico la

generazione di alias

Drupal, un primo assaggio

Page 10: Drupal Lessons by nois3lab

| Slide 10

I plugin

✔ Imagecache per gestire in maniera avanzata la

pubblicazione di immagini

✔ Tagadelic per generare tag clouds

✔ Webform per generare form da esporre all'utente

I plugin vengono installati, abilitati e poi configurati da un utenza abilitata. Alcuni plugin richiedono l'installazione di librerie di terze parti, è importante leggere sempre il README contenuto nella root del modulo.

Drupal, un primo assaggio

Page 11: Drupal Lessons by nois3lab

| Slide 11

Basic theming

Drupal è pensato per essere interamente customizzabile

✔ Per theming si intende il complesso delle operazioni

necessarie per modificare il codice html prodotto dal CMS o

da plugin installati.

✔ La temizzazione avviene a diversi livelli

✔ La temizzazione è il presupposto per la realizzazione di

layouts ed interfacce personalizzate

Drupal, un primo assaggio – Basic theming

Page 12: Drupal Lessons by nois3lab

| Slide 12

Theme engines

✔ Php template, ovvero l'engine di default

✔ Smarty

✔ Php tal

✔ Si può anche bypassare l'uso di un theme engine

Php template è l'engine largamente più utilizzato,

si basa su file individuali con estensione tpl.php che contengono codice html e snippet di codice php

Drupal, un primo assaggio – Basic theming

Page 13: Drupal Lessons by nois3lab

| Slide 13

Temi di default

Un tema è una collezione di file che consentono di predisporre il look & feel di un sito

I temi presenti di default sono:

✔ Garland e Minnelli (php template)

✔ Bluemarine (php template, rimosso da D7)

✔ Pushbutton (php template, rimosso da D7)

✔ Chameleon (nessun theme engine)

Drupal, un primo assaggio – Basic theming

Page 14: Drupal Lessons by nois3lab

| Slide 14

Themes e subthemes

Si possono installare nuovi temi a piacimento.

Come per i plugin è consigliabile l'installazione all'interno di una directory diversa da quella presente di default, in particolare in sites/all/themes

In drupal 6 è possibile realizzare dei temi che utilizzino un altro tema per funzionare, questi vengono chiamati subthemes

Drupal, un primo assaggio – Basic theming

Page 15: Drupal Lessons by nois3lab

| Slide 15

Creare un tema

Un tema è composto da alcuni file, alcuni sono indispensabili, altri possono venire aggiunti a seconda delle necessità

✔ Il file .info

✔ Lo style.css

✔ page.tpl.php

✔ node.tpl.php

✔ template.php

Drupal, un primo assaggio – Basic theming

Page 16: Drupal Lessons by nois3lab

| Slide 16

Un esempio, creare un subtheme a partire da blueprint

✔ Blueprint è un tema che utilizza il framework css omonimo

✔ É uno dei tanti framework che implementano un sistema a

griglie (di natura tipografica), di solito di 960px di larghezza

✔ Per sfruttare le sue funzionalità senza modificare il tema che

potrà successivamente venire aggiornato si deve creare un

subtheme

✔ Per creare un subtheme serve almeno un file .info ed un foglio

di stile

Drupal, un primo assaggio – Basic theming

Page 17: Drupal Lessons by nois3lab

| Slide 17

blueprint_subtheme

✔ Creiamo una directory con il nome del tema all'interno di

sites/all/themes/

✔ Creiamo un file con il nome del tema e l'estensione .info

con almeno queste informazioni

✔ Creiamo infine un file .css, in questo caso è all'interno di

una directory /css nella dir del tema

Drupal, un primo assaggio – Basic theming

Page 18: Drupal Lessons by nois3lab

| Slide 18

Le regioni

✔ Una pagina in Drupal è la somma di regioni configurate all'interno del file .info del tema

✔ Queste le regioni che saranno disponibili all'interno della pagina di amministrazione dei blocchi e dove questi saranno posizionabili

Drupal, un primo assaggio

Page 19: Drupal Lessons by nois3lab

| Slide 19

Le regioni

✔ Normalmente le regioni sono disponibili per i template di

pagina, come il generico page.tpl.php

✔ Per attivare una regione creata attraverso il file.info è

necessario inserire uno snippet all'interno del template di

pagina

<?php print $nomedellaregione ?>

✔ È anche possibile includere una regione all'interno dei

template del nodo, come il generico node.tpl.php

Drupal, un primo assaggio – Basic theming

Page 20: Drupal Lessons by nois3lab

| Slide 20

Template.php

✔ Per inserire una regione all'interno di un template dei nodi è necessario sfruttare un particolare file: template.php

✔ Questa funzione produce la disponibilità delle regioni sotto forma di variabili all'interno di template dei nodi

Drupal, un primo assaggio – Basic theming

Page 21: Drupal Lessons by nois3lab

| Slide 21

Drupal, un passo oltre✔ Costruire e presentare contenuti complessi➔ Cck

➔ Views

➔ Webform

➔ Wysiwyg

➔ Pathauto

✔ SEO - search engine optimization -➔ Page titles

➔ Nodewords e metatags dinamiche

✔ Advanced theming➔ Tipi di contenuto

➔ Views

➔ Preprocess functions

➔ Override di theme_ functions

Drupal lessons

Page 22: Drupal Lessons by nois3lab

| Slide 22

Content construction kit

✔ Cck fornisce i mattoni per la costruzione di tipologie di

contenuto, ovvero campi da predisporre per l'inserimento

da parte degli utenti.

✔ Se Drupal predispone un contenuto generico rappresentato

da un titolo, un corpo e degli allegati con cck è possibile

predisporre contenuti molto elaborati e multimediali.

Drupal, un passo oltre. Cck

Page 23: Drupal Lessons by nois3lab

| Slide 23

CCK come framework

✔ CCK è' un framework che consente l'aggiunta di campi ad

una tipologia di contenuto, il modulo in se mette a

disposizione le API mentre attraverso i plugin vengono

fornite nuove tipologie di field

✔ Esistono decine di plugin che sfruttano CCK per attivare

tipologie di campi di inserimento i più diversi

✔ Date, immagini, video, file, link, testo, audio, email, etc.

Drupal, un passo oltre. CCK

Page 24: Drupal Lessons by nois3lab

| Slide 24

Gestione avanzata delle immagini

Image field, Imagecache ed Imageapi

✔ Se imagecache è lo strumento per gestire le immagini

generando dinamicamente thumbnails, imagefield è il campo

cck che consente l'upload e la presentazione delle immagini

all'interno dei contenuti richiamando uno dei preset impostati.

✔ Imagecache consente, a seconda dei tool disponibili e dei

plugin installati, di scalare e tagliare le immagini a piacimento

generando thumbnails che vengono cachate, ovvero salvate in

modo da non dover venire ricreate ad ogni chiamata

Drupal, un passo oltre. CCK

Page 25: Drupal Lessons by nois3lab

| Slide 25

Image cache

✔ L'installazione di imagecache richiede quella di imageapi,

quella di imagefield richiede invece l'installazione di filefield

✔ Attraverso imagecache è possibile creare dei preset,

ovvero delle impostazioni per la generazione di thumb che

sarà possibile richiamare all'interno dei campi generati con

imagefield

Drupal, un passo oltre. CCK

Page 26: Drupal Lessons by nois3lab

| Slide 26

Image cache, i preset

✔ Questa l'interfaccia per la configurazione di un'operazione di scale per

un preset di imagecache. In generale scalare un'immagine implica un

resize proporzionale della stessa mentre utilizzando un'azione di crop

l'immagine viene tagliata.

✔ È possibile consentire ad imagecache di fare upscaling, ovvero di

ingrandire l'immagine con conseguente perdita di qualità

Drupal, un passo oltre. CCK

Page 27: Drupal Lessons by nois3lab

| Slide 27

Imagefield

✔ Creato un preset questo è disponibile per l'utilizzo per ogni

campo imagefield presente all'interno dei tipi di contenuto

✔ L'aggiunta di un imagefield in un tipo di contenuto

✔ In display fields è possibile scegliere le modalità di visualizzazione dell'immagine nel teaser e nel full node

Drupal, un passo oltre. CCK

Page 28: Drupal Lessons by nois3lab

| Slide 28

Contenuti multimediali, file audio e video

Embedded media field

Consente l'embed dei contenuti audio, video, immagini di moltissimi providers quali youtube, vimeo, google, Lastfm, Myspace, Flickr, Picasa.

✔ Configurate le opzioni di visualizzazione sarà possibile, nella creazione di un contenuto, inserire una Url e mostrare il video, l'immagine o la playlist avendo impostato il giusto provider nelle opzioni del campo.

Drupal, un passo oltre. CCK

Page 29: Drupal Lessons by nois3lab

| Slide 29

Il modulo video

Con il modulo video è invece possibile uplodare un file in molti formati, convertirlo utilizzando ffmpeg e mostrarlo all'interno di un player flash

✔ Questa soluzione implica però l'installazione di un player flash

e l'abilitazione di contenuti flash attraverso swftools

✔ La conversione avviene invece utilizzando ffmpeg che deve

essere disponibile sul server

Drupal, un passo oltre. CCK, audio e video

Page 30: Drupal Lessons by nois3lab

| Slide 30

Configurazione di un field video

✔ Il minimo delle operazioni richieste è l'installazione di un

player flash, l'abilitazione dell'input filter di swftools all'interno

dell'input type del nostro contenuto e la selezione di swftools

fra le opzioni di visualizzazione del campo all'interno della

tipologia di contenuto.

✔ Esistono numerosi player di file flash, ad esempio flowplayer

nella nuova versione 3x che consente anche la

personalizzazione della skin

Drupal, un passo oltre. CCK, audio e video

Page 31: Drupal Lessons by nois3lab

| Slide 31

Audio

✔ Per embeddare contenuti audio di terze parti si può

utilizzare il relativo field messo a disposizione da

embedded media field

✔ Per pubblicare direttamente contenuti audio, uploadando il

file audio sul nostro server, è invece necessario installare il

modulo audio, si potrà poi utilizzare un normale field di tipo

file per il quale si scelga swftools nelle opzioni di

visualizzazione in modo che esso risulti riproducibile.

Drupal, un passo oltre. CCK, audio e video

Page 32: Drupal Lessons by nois3lab

| Slide 32

Node reference

È un campo che consente di richiamare un altro contenuto (nodo) presente nel sito.

Così facendo si crea una relazione fra i due contenuti che potrà anche essere sfruttata nella creazione di views che prelevino informazioni da contenuti diversi, associati appunto da un field nodereference

✔ Per inserire un field nodereference basta scegliere il giusto

type e selezionare uno dei widget disponibili

Drupal, un passo oltre. CCK, nodereference

Page 33: Drupal Lessons by nois3lab

| Slide 33

Configurazione di un field nodereference

✔ Nelle opzioni del field si potranno scegliere i tipi di nodi referenziabili e nelle opzioni di visualizzazioni si potrà scegliere di visualizzare il titolo, il teaser o il full node del nodo referenziato. Esiste anche un modulo chiamato node reference views che consente di utilizzare una view come plugin di stile per un campo nodereference

Drupal, un passo oltre. CCK, nodereference

Page 34: Drupal Lessons by nois3lab

| Slide 34

User reference

È un campo attraverso il quale si può inserire una referenza ad un utente, questo offre la possibilità di avere un link alla relativa pagina utente o, se disponibile, ad una sua pagina di profilo avanzato.

Anche in questo caso è possibile scegliere diversi widget per l'immissione del campo, utilizzando autocomplete si potranno inserire alcuni caratteri e lasciare che sia il sistema a fornirci le alternative disponibili

Drupal, un passo oltre. CCK, user reference

Page 35: Drupal Lessons by nois3lab

| Slide 35

Views 2

✔ Views è uno degli strumenti più potenti a disposizione del

Cms Drupal, attraverso questo modulo ed una varietà di

plugin disponibili è possibile reperire e mostrare contenuti in

maniera guidata attraverso una GUI che utilizza molte

funzionalità di jquery

✔ È possibile generare attraverso views intere pagine e

blocchi e contemporaneamente definire numerosi altri

elementi quali il titolo di pagina, un header ed un footer.

Drupal, un passo oltre. Views 2

Page 36: Drupal Lessons by nois3lab

| Slide 36

La GUI di views 2

A seconda dei plugin installati l'interfaccia di amministrazione di views mostrerà diverse tipologie di views generabili, la più importante e più frequentemente utilizzata rimane comunque la tipologia ”node”

Drupal, un passo oltre. Views 2

Page 37: Drupal Lessons by nois3lab

| Slide 37

I display

✔ In una view è possibile inserire quanti display si

desiderino.

✔ Un display è una modalità di visualizzazione, la

stessa view

✔ Una singola view perciò può essere l'engine di

diverse visualizzazioni utilizzate in diversi contesti.

Drupal, un passo oltre. Views 2

Page 38: Drupal Lessons by nois3lab

| Slide 38

✔ Page

Attraverso questo display si può generare una pagina ed il path cui risulti raggiungibile✔ Block

Genera un blocco attivabile nella pagina di amministrazione dei blocchi✔ Attachment

Genera una visualizzazione che si aggiunga prima o dopo di un altro display della stessa view✔ Feed

Genera in questo caso un file XML, quindi un Feed RSS cui gli utenti possono iscriversi

Drupal, un passo oltre. Views 2

Page 39: Drupal Lessons by nois3lab

| Slide 39

Row styles

Node o fields

✔ Si possono visualizzare i contenuti come nodi (teaser o full

node) o per singoli campi

✔ Questa scelta risulta spesso determinata dalla generale

pianificazione riguardo la temizzazione del sito, una view

per node mostrerà i contenuti per come essi sono temizzati

a monte della view, una per field è invece interamente

temizzabile ma richiede un lavoro aggiuntivo.

Drupal, un passo oltre. Views 2

Page 40: Drupal Lessons by nois3lab

| Slide 40

Styles di una view

✔ Ad ogni display è associabile uno style differente

✔ Molti stili vengono messi a disposizione dai diversi plugin installati, in generale è invece possibile presentare i contenuti di una view come unformatted, html list (ordered e unordered), Table e grid

Drupal, un passo oltre. Views 2

Page 41: Drupal Lessons by nois3lab

| Slide 41

I filtri

Una view senza filtri impostati carica tutti i contenuti esistenti sul sito, i filtri sono perciò delle impostazioni che consentono di selezionare, limitare i contenuti dai quali prelevare informazioni

I filtri più comunemente utilizzati sono: node type, node published, date

In particolare attraverso l'impostazione del filtro node published = Yes ci assicuriamo che vengano mostrati ai visitatori solo contenuti effettivamente pubblicati

Drupal, un passo oltre. Views 2

Page 42: Drupal Lessons by nois3lab

| Slide 42

Relationships

✔ Sono un nuovo strumento di views 2, estremamente potente.✔ Consentono di reperire informazioni all'interno di contenuti

referenziati in qualche modo da quelli attualmente caricati dalla view

✔ Sono quindi strettamente correlate a id dei nodi, uid di utenti ad esempio attraverso field CCK di tipo nodereference o user reference

✔ È in teoria possibile concatenare attraverso relationships un numero indefinito di tipologie di contenuto

✔ Una volta stabilita una relationship sarà possibile visualizzare attraverso la view anche tutti i campi appartenenti alla tipologia collegata

Drupal, un passo oltre. Views 2

Page 43: Drupal Lessons by nois3lab

| Slide 43

Header e footer

✔ È possibile aggiungere un header ed un footer ad una view. Ovvero

contenuti da mostrare prima e dopo quelli della view

✔ Si possono utilizzare tutti i formati di input disponibili

Drupal, un passo oltre. Views 2

Page 44: Drupal Lessons by nois3lab

| Slide 44

Exposed filters

È possibile esporre un filtro agli utenti affinché questi effettuino una selezione nella visualizzazione della view

Per esporre un filtro è sufficiente cliccare su expose nell'interfaccia di configurazione del filtro

Questa funzionalità sostanzialmente consente molteplici utilizzi quali la creazione di un form di ricerca per titolo o per autore piuttosto che la possibilità per l'utente di selezionare direttamente la categoria dei contenuti da visualizzare, anche utilizzando Ajax

Drupal, un passo oltre. Views 2

Page 45: Drupal Lessons by nois3lab

| Slide 45

Ajax - Asynchronous JavaScript and XML

Ajax è una tecnica che fa solitamente uso di funzioni javascript per effettuare chiamate ad un server asincronamente rispetto al caricamento della pagina ovvero consente di modificare dinamicamente i contenuti della stessa senza richiedere un completo refresh.

Views 2 implementa Ajax ad esempio nel paging, ovvero nella divisione dei contenuti in pagine diverse quando questi superino il limite da noi stabilito

Drupal, un passo oltre. Views 2

Page 46: Drupal Lessons by nois3lab

| Slide 46

Embed di una view

Come visto una view genera una pagina oppure un blocco.

È anche possibile e talvolta necessario embeddare una view all'interno di un contenuto, sia esso un nodo specifico, una tipologia di contenuto, una pagina specifica, una tipologia di pagina, una tipologia di blocco, un blocco specifico e perfino un'altra view.

Drupal, un passo oltre. Views 2

Page 47: Drupal Lessons by nois3lab

| Slide 47

✔ Lo snippet presentato nella precedente slide fa uso della funzione

<?php views_embed_view($name, $display_id = 'default') ?>

in cui tutti i parametri aggiuntivi vengono passati come arguments della view

✔ È anche possibile utilizzare altre funzioni

✔ Infine si può utilizzare un modulo chiamato insert_view o anche viewfield per embeddare una view all'interno di un nodo o di un template di una tipologia di contenuto

Drupal, un passo oltre. Views 2

Page 48: Drupal Lessons by nois3lab

| Slide 48

Tanti plugin tanti differenti styles

Come detto views dispone di moltissimi plugin, alcuni di questi consentono la presentazione dei contenuti attraverso un'interfaccia costruita con jquery.

A mo' di esempio questo il risultato di una view con style views showcase fornito dal modulo omonimo

Drupal, un passo oltre. Views 2

Page 49: Drupal Lessons by nois3lab

| Slide 49

Arguments

✔ Gli arguments sono porzioni dell'url o parametri attraverso cui è possibile filtrare dinamicamente una view

✔ È possibile ad esempio visualizzare tutte le immagini presenti all'interno di ogni nodo in uno showcase semplicemente utilizzando il node id come argument ed inserendo il blocco in una regione direttamente all'interno del tipo di contenuto

Drupal, un passo oltre. Views 2

Page 50: Drupal Lessons by nois3lab

| Slide 50

✔ Questo il risultato

Drupal, un passo oltre. Views 2

Page 51: Drupal Lessons by nois3lab

| Slide 51

Arguments

✔ Questo è uno dei casi più semplici, l'argument, ovvero il node id

viene prelevato direttamente dall'url (node/nid è il path di ogni

contenuto di tipo node per Drupal) e consente di filtrare le

immagini presenti in tutti i nodi sulla base del nid del nodo che

stiamo visualizzando

✔ Questa è una view dinamica, ovvero i contenuti che essa

mostra dipendono da un parametro contestuale e non

predefinito dall'Amministratore

✔ È possibile realizzare configurazioni di views molto complesse e

potenti attraverso arguments multipli

Drupal, un passo oltre. Views 2

Page 52: Drupal Lessons by nois3lab

| Slide 52

Webform

✔ Webform è il modulo che consente la creazione di form anche

complessi con Drupal

✔ Questi form possono contenere numerosi elementi quali:

Textfield, textarea, select, fieldset, email, etc.

✔ È anche possibile inserire dei campi condizionali che vengono

mostrati quando l'utente selezioni una determinata opzione in

un precedente campo utilizzando un plugin chiamato

webform_conditional

Drupal, un passo oltre. Webform

Page 53: Drupal Lessons by nois3lab

| Slide 53

WYSIWYG

✔ È ormai uno standard la presenza di software wysiwyg

( what you see is what you get ) nell'inserimento dei

contenuti all'interno dei CMS

✔ Questi software predispongono funzionalità anche

avanzate di editing di testi e non solo all'interno dei campi

in cui sia possibile inserire html

✔ L'inserimento da parte di utenti inesperti di html all'interno

dei contenuti che pubblicano può ingenerare rischi per la

stabilità del layout.

Drupal, un passo oltre. Wysiwyg

Page 54: Drupal Lessons by nois3lab

| Slide 54

WYSIWYG

✔ Esistono numerosi moduli che implementano questa

funzionalità in Drupal

✔ Ckeditor, Yui Editor, Xstandard, wysiwyg, Html Box

✔ Le funzionalità disponibili vanno dalla formattazione del

testo, l'inserimento di links, l'inserimento di immagini,

l'impostazione manuale del teaser e molto altro ancora.

Drupal, un passo oltre. Wysiwyg

Page 55: Drupal Lessons by nois3lab

| Slide 55

Pathauto

✔ È il modulo che consente di gestire in maniera automatica la

generazione di alias

✔ In Drupal ogni contenuto (nodo) ha un path di questo genere

/node/nid dove nid è un numero univoco assegnato al

contenuto in maniera progressiva

✔ L'alias, in Drupal, è un percorso alternativo cui poter

raggiungere un contenuto, questo consente di utilizzare

percorsi più leggibili e significativi per l'utente e per i motori di

ricerca

Drupal, un passo oltre. Pathauto

Page 56: Drupal Lessons by nois3lab

| Slide 56

Pathauto

✔ È quindi possibile creare artificiosamente attraverso

pathauto una struttura gerarchica di contenuti in percorsi

annidati

✔ Questa potenzialità si riflette ad esempio in una razionalità

dei percorsi offerti all'utente, in una facile ed efficace

indicizzazione da parte del motore di ricerca e la possibilità

di proporre all'utente un breadcrumb che renda facilmente

comprensibile la posizione all'interno dell'albero del sito.

Drupal, un passo oltre. Pathauto

Page 57: Drupal Lessons by nois3lab

| Slide 57

Pathauto

✔ Con i soli moduli pathauto e taxonomy è possibile creare una

organizzazione razionale dei contenuti

✔ Affinché un contenuto abbia un percorso di questo genere:

Home -> categoria -> termine -> titolo

è sufficiente che ci sia un termine di un vocabolario e l'intero

percorso sarà navigabile e significativo

✔ La creazione di alias automatici utilizza largamente dei

tokens ovvero dei placeholder di contenuti dinamici per

come forniti dal modulo token

Drupal, un passo oltre. Pathauto

Page 58: Drupal Lessons by nois3lab

| Slide 58

SEO (seach engine optimization)

✔ Realizzare un sito che sia ottimizzato per i motori di ricerca

non è diverso da realizzare un buon sito

✔ Ci sono però dei contenuti, chiamati metatags, che vengono

appositamente predisposti per i motori di ricerca affinché

questo riconosca facilmente il contenuto delle nostre pagine

web

✔ Esistono diversi moduli in Drupal per inserire contenuti quali

keywords, description e page titles

Drupal, un passo oltre. SEO

Page 59: Drupal Lessons by nois3lab

| Slide 59

Page titles

Questo modulo consente di inserire in maniera automatica per tipologie di contenuto o anche manuale per singolo contenuto dei titoli di pagina distinti dai titoli delle pagine per come visualizzati dall'utente.

✔ I page titles ad esempio sono quelli mostrati da google come

risultato della ricerca

✔ Anche in questo caso si fa largamente uso dei tokens per

generare dinamicamente page titles che comprendano ad

esempio il nome del sito, la categoria, il titolo del contenuto

Drupal, un passo oltre. SEO

Page 60: Drupal Lessons by nois3lab

| Slide 60

Questo è il modulo principale per produrre delle metatags, consente la creazione di molte di queste, comprese quelle definite dalla dublin core intiative sulla base di

✔ Impostazioni per nodo

✔ Impostazioni per path

✔ Impostazioni per tipi di contenuto con un plugin

Drupal, un passo oltre. SEO

Nodewords

Page 61: Drupal Lessons by nois3lab

| Slide 61

Nodewords

✔ È anche possibile generare meta tags dinamicamente,

ovvero sulla base di contenuti presenti nella pagina.

✔ Le caratteristiche delle due principali metatags sono:

La description non dovrebbe essere superiore ai 250

caratteri

Le keywords sono termini separati da virgole

Drupal, un passo oltre. SEO

Page 62: Drupal Lessons by nois3lab

| Slide 62

Advanced Theming

✔ Il sistema di theming di Drupal prevede il passaggio per il

relativo layer come insieme di funzioni, overrides di funzioni e

templates.

✔ È possibile perciò adottare diverse metodologie per intervenire

sulla temizzazione di un elemento

✔ Un aiuto nell'individuare l'approccio giusto è rappresentato dal

modulo devel che fornisce uno strumento chiamato theme

developer, questo consente di evidenziare quale template o

funzione abbia generato l'elemento che visualizziamo

Drupal, un passo oltre. Advanced theming

Page 63: Drupal Lessons by nois3lab

| Slide 63

La temizzazione dei tipi di contenuto

Un tipo di contenuto può essere interamente temizzato utilizzando un file nel path del tema che stiamo utilizzando creando un file node-nodetype.tpl.php

✔ Un riferimento rispetto al modo di printare <? php print

$nomevariabile ?> gli elementi base del contenuto, è il

node.tpl.php presente praticamente in tutti i temi.

✔ È il template base utilizzato dalle pagine dei nodi, ovvero di

tutti i contenuti appartenenti ad un tipo di contenuto

Drupal, un passo oltre. Advanced theming

Page 64: Drupal Lessons by nois3lab

| Slide 64

node.tpl.php

✔ Se all'interno di questo si sceglie di non printare $content

all'interno del node-nodetype.tpl.php in sostanza di prende

completamente possesso del tipo di contenuto

✔ Dovremo perciò sapere come printare gli elementi del nostro

contenuto, il modo più semplice è rappresentato dall'uso del

modulo contemplate ovvero content template, che ci guida

rispetto a come printare i diversi field cck che abbiamo

inserito nel contenuto.

Drupal, un passo oltre. Advanced theming

Page 65: Drupal Lessons by nois3lab

| Slide 65

node.tpl.php

✔ Non basta sapere come printare i field cck, ci saranno

probabilmente alcuni moduli che inseriscono i loro contenuti

all'interno di altre regioni del nodo

✔ In questo ci aiuta il modulo devel, possiamo printare

direttamente nel template le funzioni theme_modulename()

oppure delle variabili da noi create nel file template.php

✔ Nel file tpl.php del nostro tipo di contenuto è possibile

includere altri contenuti come views

✔ Per le views è sufficiente utilizzare il codice per l'embed

Drupal, un passo oltre. Advanced theming

Page 66: Drupal Lessons by nois3lab

| Slide 66

Templates

✔ È possibile anche mostrare altri nodi attraverso un

template, se infatti abbiamo una referenza ad un altro

nodo, come un campo nodereference possiamo utilizzare la

funzione node_load($param = array(), $revision = NULL, $reset = NULL)

✔ Avremo a disposizione l'intero $object nodo, possiamo

vedere come è fatto all'interno attraverso un print_r()

oppure, se disponiamo del modulo devel utilizzando la

funzione dsm($input, $name = NULL)

Drupal, un passo oltre. Advanced theming

Page 67: Drupal Lessons by nois3lab

| Slide 67

Theming di views 2

Il nostro sito presenterà pagine con contenuti generati anche o interamente attraverso views

✔ Modificare il codice generato da una view comporta diversi

passaggi e l'uso di diversi file di template

✔ La UI di views 2, tuttavia, fornisce la possibilità di

customizzare il codice di ogni campo:

Drupal, un passo oltre. Advanced theming

Page 68: Drupal Lessons by nois3lab

| Slide 68

Theming di views2

Cliccando su questo link:

Drupal, un passo oltre. Advanced theming

Page 69: Drupal Lessons by nois3lab

| Slide 69

Theming di views 2

Nella schermata precedente vengono mostrati tutti i template con cui è possibile temizzare diversi aspetti della nostra view ed i diversi nomi dei file in funzione dei diversi livelli di specificità che questi assumono

✔ Si possono modificare tutti i singoli elementi di una view ma

questa operazione può diventare estremamente complessa

✔ Si può però temizzare i diversi aspetti delle view attraverso

dei template generici ed intervenire in altro modo solo

laddove una temizzazione puntuale è essenziale per i nostri

scopi.

Drupal, un passo oltre. Advanced theming

Page 70: Drupal Lessons by nois3lab

| Slide 70

Preprocess functions

In questo snippet di codice php vengono definite alcune variabili relativi al contenuto commento, queste variabili saranno accessibili nel file comment.tpl.php.

Drupal, un passo oltre. Advanced theming

Page 71: Drupal Lessons by nois3lab

| Slide 71

Override di funzioni theme_

È possibile utilizzare simili funzioni all'interno del file template.php nella dir del tema che stiamo utilizzando anche per molti altri elementi di Drupal quali page, node, block

Così facendo possiamo aggiungere o modificare variabili esistenti rendendole disponibili nei nostri file di template

In particolare in questo caso il tema blueprint modifica il separatore presente fra i diversi elementi del breadcrumb, definito in theme.inc con la funzione theme_breadcrumb()

Drupal, un passo oltre. Advanced theming

Page 72: Drupal Lessons by nois3lab

| Slide 72

Bibliografia

✔ Pro Drupal Development 2nd edition – Apress

✔ Using Drupal – O'Reilly

✔ Drupal handbook

✔ Building powerful and robust websites with Drupal 6 - Packt

Publishing

✔ Drupal 6 Site Builder Solutions - Packt Publishing

✔ Drupal 6 Themes - Packt Publishing

✔ Drupal 6 Javascript and Jquery - Packt Publishing Ltd

Drupal lessons, bibliografia

Page 73: Drupal Lessons by nois3lab

| Slide 73

Linkografia

✔ http://www.drupal.org✔ http://api.drupal.org✔ http://drupal.org/handbooks✔ http://www.drupalitalia.it✔ http://thedrupalblog.com✔ http://www.lullabot.com✔ http://developmentseed.org✔ http://www.agileapproach.com/✔ http://nanwich.com/✔ http://drupalbook.com

Drupal lessons, linkografia

Page 74: Drupal Lessons by nois3lab

| Slide 74

Glossario dei termini

✔ Core➔ L'insieme di funzionalità, codice, files forniti di default da Drupal

✔ Nodo (Node)➔ L'unità di misura di drupal, il nodo è l'object dentro il quale sono contenute tutte

le informazioni rispetto al contenuto

✔ Moduli (Modules o plugins)➔ Componenti aggiuntivi che è possibili installare ed attivare in un'installazione

✔ Clean Urls➔ Drupal utilizza dei percorsi preceduti da una stringa come questa ?q=, è

possibile evitare l'uso di questi se si abilitano le clean urls

✔ Tipo di contenuto (content type)➔ In Drupal i singoli nodi appartengono sempre ad una tipologia di contenuto e da

questa ottengono tutte le impostazioni ed i campi predisposti.

Drupal lessons, glossario

Page 75: Drupal Lessons by nois3lab

| Slide 75

✔ Percorso (path)➔ Il percorso di un contenuto quale un nodo è in drupal fatto in questo modo: /node/$nid.

È possibile modificare questo percorso, o meglio crearne uno alternativo attraverso il sistema degli alias

✔ Alias➔ Il percorso alternativo configurato automaticamente o manualmente per un contenuto

di tipo node

✔ API➔ Sono il complesso delle funzioni messe a disposizione degli sviluppatori per utilizzare

le funzionalità predisposte dal core o da moduli aggiuntivi

✔ Blocchi (blocks)➔ Elementi che è possibile posizionare all'interno delle regioni configurate da un dato

tema. È possibile inoltre predisporre opzioni di visualizzazione anche attraverso codice PHP che mostrino cioè l'elemento solo al verificarsi di determinate condizioni

✔ Regioni (Regions)➔ In d6 vengono configurate direttamente all'interno del file .info del tema utilizzato

Drupal lessons, glossario

Page 76: Drupal Lessons by nois3lab

| Slide 76

✔ Tema (theme)➔ L'insieme dei files che Drupal utilizza per finalizzare il codice xHTML da

presentare nella pagina richiesta. È composto almeno da un file.info e da un file.css

✔ Subtheme➔ È un tema a tutti gli effetti ma ha la caratteristica di basarsi su un differente tema,

ovvero di ereditarne tutte le impostazioni che possono tuttavia venire sovrascritte. È la tecnica utilizzata più di frequente da i web designer quando utilizzino drupal

✔ View➔ Risultato della configurazione di una visualizzazione tramite il modulo views. È

una query effettuata al database frutto di impostazioni attraverso una GUI. L'object view porta con se anche numerose informazioni rispetto alla modalità di presentazione dei risultati della query come il codice xHTML

✔ GUI ➔ Graphical user interface, interfaccia grafica. Ovvero una rappresentazione

grafica, user friendly attraverso cui far interagire un utente con un componente software

Drupal lessons, glossario

Page 77: Drupal Lessons by nois3lab

Drupal lessons

Lessons

By nois3lab

Questa presentazione è stata realizzata utilizzando esclusivamente software libero. Drupal è un marchio registrato di Dries Buytaert. Questo documento viene rilasciato sotto la licenza creative commons Attribution - Share alike 3.0 Unported