SlideShare a Scribd company logo
Drupal lessons




                 Lessons
Drupal lessons                                               | Slide 2


Drupal, un primo assaggio
✔   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
Drupal lessons                            | 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
Una overview                                                | 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                                          | Slide 5


I linguaggi


✔   Php          <?php ?>
✔   Javascript   <script language=”text/javascript”></script>
✔   Xhtml        <html></html>
✔   Css          selector { property:value }
✔   Xml          <tag></tag>
Drupal lessons                      | Slide 6


Drupal, un primo assaggio

✔   L'environment

    Lamp (Linux/Apache/Mysql/Php)
✔   Il core
✔   I moduli
✔   I temi
✔   Le versioni
Drupal, un primo assaggio                   | 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                      | 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                               | 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                             | 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 – Basic theming             | 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               | 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           | 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                | 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            | 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              | 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                | 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                                   | 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 – Basic theming                | 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              | 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 lessons                                   | 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, un passo oltre. Cck                             | 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                               | 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                               | 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                               | 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                                    | 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                               | 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                            | 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, audio e video                | 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                   | 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                  | 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, nodereference              | 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                 | 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, user reference               | 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. Views 2                         | 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                        | 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                           | 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                     | 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                       | 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                          | 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                         | 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                         | 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                                  | 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                          | 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                      | 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                       | 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                        | 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                       | 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                        | 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   | Slide 50

✔   Questo il risultato
Drupal, un passo oltre. Views 2                         | 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. Webform                          | 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. Wysiwyg                          | 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                          | 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. Pathauto                            | 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                           | 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                        | 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. SEO                             | 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                              | 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                            | Slide 60


Nodewords

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                            | 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. Advanced theming                   | 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                  | 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                | 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                 | 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                        | 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                     | 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   | Slide 68


Theming di views2

Cliccando su questo link:
Drupal, un passo oltre. Advanced theming                  | 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               | 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                | 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 lessons, bibliografia                             | 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, linkografia         | 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, glossario                                                   | 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                                                       | 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                                                   | 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




                                                             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

More Related Content

Viewers also liked

Media tools e significati simbolici 11 aprile 2014 Orient@ti
Media tools e significati simbolici 11 aprile 2014 Orient@tiMedia tools e significati simbolici 11 aprile 2014 Orient@ti
Media tools e significati simbolici 11 aprile 2014 Orient@ti
Università degli Studi di Milano-Bicocca
 
Musica, illustrazione e social media: una storia da raccontare
Musica, illustrazione e social media: una storia da raccontareMusica, illustrazione e social media: una storia da raccontare
Musica, illustrazione e social media: una storia da raccontare
InSide Training
 
Internet e animazione
Internet e animazioneInternet e animazione
Internet e animazione
Pivari.com
 
Wordpress Installation for Windows and Mac
Wordpress Installation for Windows and MacWordpress Installation for Windows and Mac
Wordpress Installation for Windows and Mac
Marcello Mingardi
 
Portfolio of Expertise and Credentials
Portfolio of Expertise and CredentialsPortfolio of Expertise and Credentials
Portfolio of Expertise and Credentials
Portante Andrea
 
2 regole del corso tecniche di modellazione digitale – computer 3d
2 regole del corso tecniche di modellazione digitale – computer 3d2 regole del corso tecniche di modellazione digitale – computer 3d
2 regole del corso tecniche di modellazione digitale – computer 3d
Daniele Francaviglia
 
Presentazione Blog Università la Sapienza
Presentazione Blog Università la SapienzaPresentazione Blog Università la Sapienza
Presentazione Blog Università la Sapienzafabio73
 
Creativity and graphic design 3
Creativity and graphic design 3Creativity and graphic design 3
Creativity and graphic design 3
Daniele Francaviglia
 
Creativity and graphic design 4
Creativity and graphic design 4Creativity and graphic design 4
Creativity and graphic design 4
Daniele Francaviglia
 
Misurazione del video sul Web
Misurazione del video sul WebMisurazione del video sul Web
Misurazione del video sul Web
Portante Andrea
 
Corso PHP ENAIP - lezione #01 - 17/01/2014
Corso PHP ENAIP - lezione #01 - 17/01/2014Corso PHP ENAIP - lezione #01 - 17/01/2014
Corso PHP ENAIP - lezione #01 - 17/01/2014Matteo Moro
 
Joomla fap-joomla-day-2012
Joomla fap-joomla-day-2012Joomla fap-joomla-day-2012
Joomla fap-joomla-day-2012
elpaso66
 
Tecniche di modellazione 3d metodo progettuale
Tecniche di modellazione 3d metodo progettualeTecniche di modellazione 3d metodo progettuale
Tecniche di modellazione 3d metodo progettuale
Daniele Francaviglia
 
PHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLPHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLextrategy
 
5 tecniche di modellazione digitale – computer 3d stampa
5 tecniche di modellazione digitale – computer 3d stampa5 tecniche di modellazione digitale – computer 3d stampa
5 tecniche di modellazione digitale – computer 3d stampa
Daniele Francaviglia
 
PHP: strutture di controllo e funzioni
PHP: strutture di controllo e funzioniPHP: strutture di controllo e funzioni
PHP: strutture di controllo e funzioni
extrategy
 
Note per workshop Stop Motion Seconda Parte
Note per workshop Stop Motion Seconda ParteNote per workshop Stop Motion Seconda Parte
Note per workshop Stop Motion Seconda PartePortante Andrea
 
Decustruzione progetto e mood board
Decustruzione progetto e mood boardDecustruzione progetto e mood board
Decustruzione progetto e mood board
Daniele Francaviglia
 

Viewers also liked (20)

Media tools e significati simbolici 11 aprile 2014 Orient@ti
Media tools e significati simbolici 11 aprile 2014 Orient@tiMedia tools e significati simbolici 11 aprile 2014 Orient@ti
Media tools e significati simbolici 11 aprile 2014 Orient@ti
 
CINEMA 4D
CINEMA 4DCINEMA 4D
CINEMA 4D
 
Musica, illustrazione e social media: una storia da raccontare
Musica, illustrazione e social media: una storia da raccontareMusica, illustrazione e social media: una storia da raccontare
Musica, illustrazione e social media: una storia da raccontare
 
Internet e animazione
Internet e animazioneInternet e animazione
Internet e animazione
 
Wordpress Installation for Windows and Mac
Wordpress Installation for Windows and MacWordpress Installation for Windows and Mac
Wordpress Installation for Windows and Mac
 
Portfolio of Expertise and Credentials
Portfolio of Expertise and CredentialsPortfolio of Expertise and Credentials
Portfolio of Expertise and Credentials
 
2 regole del corso tecniche di modellazione digitale – computer 3d
2 regole del corso tecniche di modellazione digitale – computer 3d2 regole del corso tecniche di modellazione digitale – computer 3d
2 regole del corso tecniche di modellazione digitale – computer 3d
 
Presentazione Blog Università la Sapienza
Presentazione Blog Università la SapienzaPresentazione Blog Università la Sapienza
Presentazione Blog Università la Sapienza
 
Creativity and graphic design 3
Creativity and graphic design 3Creativity and graphic design 3
Creativity and graphic design 3
 
Creativity and graphic design 4
Creativity and graphic design 4Creativity and graphic design 4
Creativity and graphic design 4
 
Misurazione del video sul Web
Misurazione del video sul WebMisurazione del video sul Web
Misurazione del video sul Web
 
Corso PHP ENAIP - lezione #01 - 17/01/2014
Corso PHP ENAIP - lezione #01 - 17/01/2014Corso PHP ENAIP - lezione #01 - 17/01/2014
Corso PHP ENAIP - lezione #01 - 17/01/2014
 
Joomla fap-joomla-day-2012
Joomla fap-joomla-day-2012Joomla fap-joomla-day-2012
Joomla fap-joomla-day-2012
 
Tecniche di modellazione 3d metodo progettuale
Tecniche di modellazione 3d metodo progettualeTecniche di modellazione 3d metodo progettuale
Tecniche di modellazione 3d metodo progettuale
 
PHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLPHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQL
 
Workshop lezione_3_stand
Workshop lezione_3_standWorkshop lezione_3_stand
Workshop lezione_3_stand
 
5 tecniche di modellazione digitale – computer 3d stampa
5 tecniche di modellazione digitale – computer 3d stampa5 tecniche di modellazione digitale – computer 3d stampa
5 tecniche di modellazione digitale – computer 3d stampa
 
PHP: strutture di controllo e funzioni
PHP: strutture di controllo e funzioniPHP: strutture di controllo e funzioni
PHP: strutture di controllo e funzioni
 
Note per workshop Stop Motion Seconda Parte
Note per workshop Stop Motion Seconda ParteNote per workshop Stop Motion Seconda Parte
Note per workshop Stop Motion Seconda Parte
 
Decustruzione progetto e mood board
Decustruzione progetto e mood boardDecustruzione progetto e mood board
Decustruzione progetto e mood board
 

Similar to Drupal Lessons by nois3lab

Corso Pratico di WordPress
Corso Pratico di WordPressCorso Pratico di WordPress
Corso Pratico di WordPress
Nicola Strumia
 
Bene, usiamo WordPress.
Bene, usiamo WordPress.Bene, usiamo WordPress.
Bene, usiamo WordPress.
Paolo Valenti
 
Wordpress 3/7. temi e plugin
Wordpress 3/7. temi e pluginWordpress 3/7. temi e plugin
Wordpress 3/7. temi e plugin
City Planner
 
Introduzione a Drupal 7 - 14/03/2013
Introduzione a Drupal 7 - 14/03/2013Introduzione a Drupal 7 - 14/03/2013
Introduzione a Drupal 7 - 14/03/2013
Alessandro del Gobbo
 
I Temi in WordPress
I Temi in WordPress I Temi in WordPress
I Temi in WordPress
Thomas Vitale
 
Corso Base Wordpress 22-40 | installazione (2 di 4)
Corso Base Wordpress 22-40 | installazione (2 di 4)Corso Base Wordpress 22-40 | installazione (2 di 4)
Corso Base Wordpress 22-40 | installazione (2 di 4)
armandocarcaterra
 
[Gian Mario Mereu] - Drupal & Patternlab: un nuovo approccio al theming
[Gian Mario Mereu] - Drupal & Patternlab: un nuovo approccio al theming[Gian Mario Mereu] - Drupal & Patternlab: un nuovo approccio al theming
[Gian Mario Mereu] - Drupal & Patternlab: un nuovo approccio al theming
Wellnet srl
 
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
DrupalDay
 
WordPress, CMS/Blog per “tutte” le esigenze
WordPress, CMS/Blog per “tutte” le esigenzeWordPress, CMS/Blog per “tutte” le esigenze
WordPress, CMS/Blog per “tutte” le esigenze
Raoul Pettenò
 
Creare distribuzioni con drupal
Creare distribuzioni con drupalCreare distribuzioni con drupal
Creare distribuzioni con drupal
Alessandro Capra
 
Sviluppare Plugin per WordPress
Sviluppare Plugin per WordPress Sviluppare Plugin per WordPress
Sviluppare Plugin per WordPress
Thomas Vitale
 
Drupal - per chi vuole iniziare
Drupal - per chi vuole iniziareDrupal - per chi vuole iniziare
Drupal - per chi vuole iniziare
Salvatore Paone
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more things
KnowCamp
 
Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress GGDBologna
 
WordPress 1.pdf
WordPress 1.pdfWordPress 1.pdf
WordPress 1.pdf
Luca Calderan
 
WordPress 1.pdf
WordPress 1.pdfWordPress 1.pdf
WordPress 1.pdf
Luca Calderan
 
2 Esercitazione (18/19)
2 Esercitazione (18/19)2 Esercitazione (18/19)
2 Esercitazione (18/19)
Andrea Gorrini
 
Slides webinar Abstract "Pregi e difetti dei principali CMS Open Source"
Slides webinar Abstract "Pregi e difetti dei principali CMS Open Source" Slides webinar Abstract "Pregi e difetti dei principali CMS Open Source"
Slides webinar Abstract "Pregi e difetti dei principali CMS Open Source"
Abstract Technology Agency
 
Drupal
DrupalDrupal
Drupal
NaLUG
 
Pregi e difetti dei principali CMS Open Source
Pregi e difetti dei principali CMS Open SourcePregi e difetti dei principali CMS Open Source
Pregi e difetti dei principali CMS Open Source
nois3
 

Similar to Drupal Lessons by nois3lab (20)

Corso Pratico di WordPress
Corso Pratico di WordPressCorso Pratico di WordPress
Corso Pratico di WordPress
 
Bene, usiamo WordPress.
Bene, usiamo WordPress.Bene, usiamo WordPress.
Bene, usiamo WordPress.
 
Wordpress 3/7. temi e plugin
Wordpress 3/7. temi e pluginWordpress 3/7. temi e plugin
Wordpress 3/7. temi e plugin
 
Introduzione a Drupal 7 - 14/03/2013
Introduzione a Drupal 7 - 14/03/2013Introduzione a Drupal 7 - 14/03/2013
Introduzione a Drupal 7 - 14/03/2013
 
I Temi in WordPress
I Temi in WordPress I Temi in WordPress
I Temi in WordPress
 
Corso Base Wordpress 22-40 | installazione (2 di 4)
Corso Base Wordpress 22-40 | installazione (2 di 4)Corso Base Wordpress 22-40 | installazione (2 di 4)
Corso Base Wordpress 22-40 | installazione (2 di 4)
 
[Gian Mario Mereu] - Drupal & Patternlab: un nuovo approccio al theming
[Gian Mario Mereu] - Drupal & Patternlab: un nuovo approccio al theming[Gian Mario Mereu] - Drupal & Patternlab: un nuovo approccio al theming
[Gian Mario Mereu] - Drupal & Patternlab: un nuovo approccio al theming
 
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
 
WordPress, CMS/Blog per “tutte” le esigenze
WordPress, CMS/Blog per “tutte” le esigenzeWordPress, CMS/Blog per “tutte” le esigenze
WordPress, CMS/Blog per “tutte” le esigenze
 
Creare distribuzioni con drupal
Creare distribuzioni con drupalCreare distribuzioni con drupal
Creare distribuzioni con drupal
 
Sviluppare Plugin per WordPress
Sviluppare Plugin per WordPress Sviluppare Plugin per WordPress
Sviluppare Plugin per WordPress
 
Drupal - per chi vuole iniziare
Drupal - per chi vuole iniziareDrupal - per chi vuole iniziare
Drupal - per chi vuole iniziare
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more things
 
Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress
 
WordPress 1.pdf
WordPress 1.pdfWordPress 1.pdf
WordPress 1.pdf
 
WordPress 1.pdf
WordPress 1.pdfWordPress 1.pdf
WordPress 1.pdf
 
2 Esercitazione (18/19)
2 Esercitazione (18/19)2 Esercitazione (18/19)
2 Esercitazione (18/19)
 
Slides webinar Abstract "Pregi e difetti dei principali CMS Open Source"
Slides webinar Abstract "Pregi e difetti dei principali CMS Open Source" Slides webinar Abstract "Pregi e difetti dei principali CMS Open Source"
Slides webinar Abstract "Pregi e difetti dei principali CMS Open Source"
 
Drupal
DrupalDrupal
Drupal
 
Pregi e difetti dei principali CMS Open Source
Pregi e difetti dei principali CMS Open SourcePregi e difetti dei principali CMS Open Source
Pregi e difetti dei principali CMS Open Source
 

More from nois3lab

Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)
nois3lab
 
Programmazione web - Lezione 2 - Anatomia dei siti... alla griglia
Programmazione web - Lezione 2 - Anatomia dei siti... alla grigliaProgrammazione web - Lezione 2 - Anatomia dei siti... alla griglia
Programmazione web - Lezione 2 - Anatomia dei siti... alla griglia
nois3lab
 
Open web programming
Open web programmingOpen web programming
Open web programming
nois3lab
 
[Better Software 2010] talk: Mozilla Drumbeat Social Media Plan
[Better Software 2010] talk: Mozilla Drumbeat Social Media Plan[Better Software 2010] talk: Mozilla Drumbeat Social Media Plan
[Better Software 2010] talk: Mozilla Drumbeat Social Media Plan
nois3lab
 
[en] nois3lab resume
[en] nois3lab resume[en] nois3lab resume
[en] nois3lab resumenois3lab
 
Social Media Strategy for Mozilla Drumbeat
Social Media Strategy for Mozilla DrumbeatSocial Media Strategy for Mozilla Drumbeat
Social Media Strategy for Mozilla Drumbeat
nois3lab
 
nois3lab resume
nois3lab resumenois3lab resume
nois3lab resumenois3lab
 

More from nois3lab (8)

Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)Ancora anatomia, le pagine HTML(5)
Ancora anatomia, le pagine HTML(5)
 
Programmazione web - Lezione 2 - Anatomia dei siti... alla griglia
Programmazione web - Lezione 2 - Anatomia dei siti... alla grigliaProgrammazione web - Lezione 2 - Anatomia dei siti... alla griglia
Programmazione web - Lezione 2 - Anatomia dei siti... alla griglia
 
Open web programming
Open web programmingOpen web programming
Open web programming
 
Bbox
BboxBbox
Bbox
 
[Better Software 2010] talk: Mozilla Drumbeat Social Media Plan
[Better Software 2010] talk: Mozilla Drumbeat Social Media Plan[Better Software 2010] talk: Mozilla Drumbeat Social Media Plan
[Better Software 2010] talk: Mozilla Drumbeat Social Media Plan
 
[en] nois3lab resume
[en] nois3lab resume[en] nois3lab resume
[en] nois3lab resume
 
Social Media Strategy for Mozilla Drumbeat
Social Media Strategy for Mozilla DrumbeatSocial Media Strategy for Mozilla Drumbeat
Social Media Strategy for Mozilla Drumbeat
 
nois3lab resume
nois3lab resumenois3lab resume
nois3lab resume
 

Drupal Lessons by nois3lab

  • 1. Drupal lessons Lessons
  • 2. Drupal lessons | Slide 2 Drupal, un primo assaggio ✔ 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
  • 3. Drupal lessons | 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
  • 4. Una overview | 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
  • 5. Una overview | Slide 5 I linguaggi ✔ Php <?php ?> ✔ Javascript <script language=”text/javascript”></script> ✔ Xhtml <html></html> ✔ Css selector { property:value } ✔ Xml <tag></tag>
  • 6. Drupal lessons | Slide 6 Drupal, un primo assaggio ✔ L'environment Lamp (Linux/Apache/Mysql/Php) ✔ Il core ✔ I moduli ✔ I temi ✔ Le versioni
  • 7. Drupal, un primo assaggio | 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
  • 8. Drupal, un primo assaggio | 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
  • 9. Drupal, un primo assaggio | 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
  • 10. Drupal, un primo assaggio | 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.
  • 11. Drupal, un primo assaggio – Basic theming | 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
  • 12. Drupal, un primo assaggio – Basic theming | 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
  • 13. Drupal, un primo assaggio – Basic theming | 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)
  • 14. Drupal, un primo assaggio – Basic theming | 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
  • 15. Drupal, un primo assaggio – Basic theming | 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
  • 16. Drupal, un primo assaggio – Basic theming | 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
  • 17. Drupal, un primo assaggio – Basic theming | 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
  • 18. Drupal, un primo assaggio | 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
  • 19. Drupal, un primo assaggio – Basic theming | 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
  • 20. Drupal, un primo assaggio – Basic theming | 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
  • 21. Drupal lessons | 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
  • 22. Drupal, un passo oltre. Cck | 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.
  • 23. Drupal, un passo oltre. CCK | 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.
  • 24. Drupal, un passo oltre. CCK | 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
  • 25. Drupal, un passo oltre. CCK | 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
  • 26. Drupal, un passo oltre. CCK | 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à
  • 27. Drupal, un passo oltre. CCK | 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
  • 28. Drupal, un passo oltre. CCK | 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.
  • 29. Drupal, un passo oltre. CCK, audio e video | 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
  • 30. Drupal, un passo oltre. CCK, audio e video | 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
  • 31. Drupal, un passo oltre. CCK, audio e video | 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.
  • 32. Drupal, un passo oltre. CCK, nodereference | 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
  • 33. Drupal, un passo oltre. CCK, nodereference | 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
  • 34. Drupal, un passo oltre. CCK, user reference | 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
  • 35. Drupal, un passo oltre. Views 2 | 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.
  • 36. Drupal, un passo oltre. Views 2 | 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”
  • 37. Drupal, un passo oltre. Views 2 | 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.
  • 38. Drupal, un passo oltre. Views 2 | 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
  • 39. Drupal, un passo oltre. Views 2 | 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.
  • 40. Drupal, un passo oltre. Views 2 | 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
  • 41. Drupal, un passo oltre. Views 2 | 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
  • 42. Drupal, un passo oltre. Views 2 | 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
  • 43. Drupal, un passo oltre. Views 2 | 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
  • 44. Drupal, un passo oltre. Views 2 | 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
  • 45. Drupal, un passo oltre. Views 2 | 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
  • 46. Drupal, un passo oltre. Views 2 | 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.
  • 47. Drupal, un passo oltre. Views 2 | 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
  • 48. Drupal, un passo oltre. Views 2 | 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
  • 49. Drupal, un passo oltre. Views 2 | 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
  • 50. Drupal, un passo oltre. Views 2 | Slide 50 ✔ Questo il risultato
  • 51. Drupal, un passo oltre. Views 2 | 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
  • 52. Drupal, un passo oltre. Webform | 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
  • 53. Drupal, un passo oltre. Wysiwyg | 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.
  • 54. Drupal, un passo oltre. Wysiwyg | 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.
  • 55. Drupal, un passo oltre. Pathauto | 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
  • 56. Drupal, un passo oltre. Pathauto | 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.
  • 57. Drupal, un passo oltre. Pathauto | 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
  • 58. Drupal, un passo oltre. SEO | 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
  • 59. Drupal, un passo oltre. SEO | 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
  • 60. Drupal, un passo oltre. SEO | Slide 60 Nodewords 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
  • 61. Drupal, un passo oltre. SEO | 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
  • 62. Drupal, un passo oltre. Advanced theming | 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
  • 63. Drupal, un passo oltre. Advanced theming | 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
  • 64. Drupal, un passo oltre. Advanced theming | 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.
  • 65. Drupal, un passo oltre. Advanced theming | 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
  • 66. Drupal, un passo oltre. Advanced theming | 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)
  • 67. Drupal, un passo oltre. Advanced theming | 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:
  • 68. Drupal, un passo oltre. Advanced theming | Slide 68 Theming di views2 Cliccando su questo link:
  • 69. Drupal, un passo oltre. Advanced theming | 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.
  • 70. Drupal, un passo oltre. Advanced theming | 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.
  • 71. Drupal, un passo oltre. Advanced theming | 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()
  • 72. Drupal lessons, bibliografia | 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
  • 73. Drupal lessons, linkografia | 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
  • 74. Drupal lessons, glossario | 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.
  • 75. Drupal lessons, glossario | 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
  • 76. Drupal lessons, glossario | 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
  • 77. 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