SlideShare a Scribd company logo
1 of 75
1
Introduzione a
Drupal 7
Club degli sviluppatori
14 marzo 2013
a cura di Alessandro Del Gobbo
2
Cos’è e come
funziona
Usare
Drupal7
Concetti
avanzati
Percorso in 3 parti
3
Mi presento
• Sviluppatore dall’epoca di ASP 3.0
• Oggi principalmente su:
–.NET e ASP.NET + SQL Server
–Java (per Android)
–Tecnologie web (HTML5, CSS, JS ecc)
–PHP
–altre conoscenze sparse qua e la
• Skills in grafica / UX
Alessandro Del Gobbo
4
Requisiti minimi per Drupal: **MP
Cioè WAMP, LAMP ecc.
Gli essenziali sono:
• Php 5.3+
• MySql 5.0.15+ (SqlServer e Oracle sono
supportati da moduli aggiuntivi)
Prima di iniziare: cosa c’è da sapere?
5
Conoscenze minime per essere «creativi»:
• Html, CSS, JS
• Funzionamento di un sito dinamico **MP
• PHP e MySql per evolvere.
Requisiti per utilizzare un sito Drupal:
• Essere vivi, (ma dipende dai «creativi»)
Prima di iniziare: cosa c’è da sapere?
6
In caso di panico… www.drupal.org
7
In caso di panico… www.drupal.org
8
In caso di panico… www.drupal.org
9
Cos’è e come funziona
Drupal 7
10
• Content Management System (CMS)
• Content Management Framework (CMF)
• Community Management System
–Gestione eccezionale di utenti e permessi
–Gestione eccezionale di User Generated
Content in relazione ai permessi
Cos’è:
11
• Gratuito & Open Source (GPL)
http://drupal.org/licensing/faq
• Modulare
• Estensibile
• Ultra-flessibile (grazie alle DB-API)
• Manutenibile (updates e no-lock data)!
Caratteristiche salienti 1/2
12
• Interfaccia SEMPLICE (Backend separABILE)
• INTERNAZIONALIZABILE
• Supportato da community enorme
24k+ sviluppatori & 917k+ accounts.
• 20k+ moduli GRATUITI
• Sito di supporto eccellente
• Usato da molte major companies
• Scalabile (info nella terza parte)
Caratteristiche salienti (2/2)
13
• Costruzione di contenuti personalizzati
• Costruzioni di viste (Query)
con relativo layout anche senza scrivere SQL
– Output delle viste dinamico (supporta anche RSS!)
• Già tradotto in 100+ lingue (anche i moduli)
• Traducibilità dei contenuti personalizzati
• Generatore di Form e relative azioni
Funzionalità interessanti (1/2)
14
• URL Seo-friendly
• Gestione profili thumbnail (+ effetti)
• Pubblicazione schedulata contenuti
• System Logs
• Segnalazione aggiornamenti core e moduli
• MULTI SITO!! Un solo code-base per infiniti
siti!
Funzionalità interessanti (2/2)
15
Creato e mantenuto per (secondo loro):
• Web-admin / Developers
(ovviamente)
• Non technical-people
– Managers
– Startuppers
– Ecc.
Per chi è
16
• Creato da Dries Buytaert
in Belgio nel 2000
• Voleva essere una
piattaforma per piccole
community
• Rilasciato Op.Source nel
2001
• A capo di Acquia (servizi
per drupal)
Storia di Drupal
Dries Buytaert
http://buytaert.net/
http://www.linkedin.com/in/buytaert
17
Voleva registrare il dominio dorp.org
(«dorp» in tedesco = villaggio)
Per un errore di battitura registrò DROP.org
Drop in inglese = Goccia… che in tedesco di
pronuncia esattamente come Drupal
Curiosità: perché «Drupal»?
Infatti il logo è… una goccia
18
Cosa puoi farci
• Blogs
• Siti istituzionali
• Web-zine
• Presentazione prodotti
• Wiki
• Gestione KnowHow
interno
• Forum
• Community
• E-commerce
• Ecc.
19
www.adoroletuefoto.it (una startup)
Alcuni esempi…
20
http://www.ricettario-bimby.it/ (una mega community)
Alcuni esempi…
21
http://www.mtv.co.uk/ (una mega community)
Alcuni esempi…
22
Alcuni esempi… si… è proprio lei… La casa bianca.
http://www.whitehouse.gov/
23
http://drupal.org/case-studies (molti altri)
Alcuni esempi…
24
• Wordpress (performante) ha di recente integrato
un sistema di costruzione contenuti, ma la
gestione utenti/permessi non è eccellente.
• Joomla:
– poco manutenibile (maledetti aggiornamenti)
– meno usabile anche di Wordpress
– moduli migliori a pagamento
• Altri CMS in altri linguaggi spesso richiedono
profonda conoscenza della
piattaforma/linguaggio… anche per cose semplici
Perchè usare Drupal?
25
• Non c’è uno scheduling delle versioni
• Ogni versione è abbondantemente testata
tramite Alfa Beta RC1 RC2…
• I moduli seguono lo stesso iter
contemporaneamente (alcuni vengono fuori in
ritardo, quindi meglio aspettare!)
• Spesso i moduli più famosi vengono integrati
nel core di Drupal
Versioni e Versioning di Drupal
26
• Ancora in RC
• Stanno integrando Symfony per la gestione DB
• Stanno integrando moduli come la i18n
• Migliore usabilità
• Interfaccia admin anche Mobile con Html5
• Nuovo sistema Layout (simile a panels)
• Migliorano un sacco di cose tra cui le
prestazioni
Versione 8
27
Questo è il
diagramma
del DB di
Drupal 7
Com’è fatto drupal?
28
Drupal ragiona con le «entità»
• Node :un contenuto generico
• User : un account
• Taxonomy: Categorie/Tags
• Comment: Commenti (gerarchici)
In realtà basta sapere che…
29
I nodi rappresentano la base di un contenuto
generico… una classe astratta
Nodi e contenuti personalizzati
Un «TIPO DI CONTENUTO» come Page (che è incluso di default)
è un Node con quasi nessun campo (Field) aggiuntivo.
Possiamo pensare Page come una classe derivata da Node.
30
I tipi di campo che inseriamo, non sono per forza
tipi SQL… possono anche essere altre entità…
Nodi e contenuti personalizzati
Text_with_summary, c
rea un sommario
automatico dal testo,
Taxonomy_reference
splitta
automaticamente i tag
separati da virgola
Ecc…
31
Con questo tipo di struttura flessibile,
È ovvio che aggiungendo campi ad un nostro
«oggetto» :
NON stiamo aggiungendo Colonne ad una
tabella… ma RIGHE (e in varie tabelle).
• La flessibilità si paga con prestazioni
• Drupal va ragionato
Nodi nel database
32
Racchiude in se i concetti di: Tags, categorie, sezioni ecc.
Un dizionario = un gruppo di identificatori.
Ogni dizionario può essere:
• Prestabilito dall’admin (es. le categorie degli articoli)
• Variabile, come i «tags» aggiunti dagli utenti
• Un campo Taxonomy di un oggetto personalizzato può
avere tantissimi risvolti.
Taxonomy / Tassonomia
33
• Account: profilo di un utente
• Permesso: Possibilità per un utente di compiere un
azione o visualizzare dei dati
• Ruolo: Schema di permessi assegnabili a più utenti
• Ruolo Admin: puo fare tutto. In automatico ha tutti i
permessi.
• Ruoli Custom: stabilisci tu ogni permesso
• Ruolo Guest: Utente non autenticato, può solo vedere i
contenuti.
Users e sistema dei permessi
34
Architettura di Drupal
35
Architettura di Drupal (2)
36
Struttura directory di Drupal
Eventualmente modificare solo i file/cartelle in verde.
37
Temi
• Definiscono e sovrascrivono i
template di qualsiasi modulo
«by-name-convention»
• Sono derivabili in altri temi
• Esistono Temi «framework»
38
Temi
• Il template del tema ha sempre priorità
rispetto al template del modulo
• In caso di temi ereditati scandaglia tutto.
• Per tutti i dettagli sul naming-convention dei
template: http://drupal.org/node/1089656
es:
comment--node-article.tpl.php
verrebbe preso come template per i commenti
ai contenuti di tipo article
39
Temi: com’è fatto un template
Es. page.php nel template «bartik»
40
Meccanismo tramite il quale Drupal diventa
estensibile e flessibile.
• Agganciabili sia nei Temi che nei Moduli
Es. nel tema «bartik», file template.php
Hooks
41
Question time.
Domande?
42
Usare Drupal 7
43
L’installazione si può evitare completamente
se l’hosting ci da Cpanel / Fantastico Script
Assicurarsi di avere un hosting con queste
caratteristiche:
• Apache + Php
• MySql
• Creare un Database in MySql e un utente che
possa accederci. Es. db1 e userdb1@localhost
1. Preparare l’ambiente
44
Copiare nella root folder
del sito, i sorgenti
contenuti nell’archivio
Drupal.
In sites/default copiare il
file default.settings.php e
rinominarlo in
settings.php
1. Preparare l’ambiente
45
Navigare con il browser :
http://localhost/install.php
(dove localhost è eventualmente il vostro dominio)
2. Eseguire lo script di installazione
46
Navigare con il browser :
http://localhost/install.php
(dove localhost è eventualmente il vostro dominio)
2. Eseguire lo script di installazione
47
Seguire il wizard…
2. Eseguire lo script di installazione
48
Seguire il wizard…
2. Eseguire lo script di installazione
49
• Impostare il CronJob
(link speciale in Status Report)
• Abilitare i Clean Urls in
/admin/config/search/clean-urls
(.htaccess già presente… e anche il web.config!)
3. Configurazioni finali
50
• I blocchi dipendono dal tema!
Layout e blocchi
51
• http://drupal.org/project/zen
E’ abbastanza Nerd
Ne esistono molti altri, anche Adaptative, per
Mobile ecc.
PS. Si può sviluppare per MOBILE:
http://drupal.org/documentation/mobile
con i temi o con moduli specifici come
DrupalGap (per chi conosce Phonegap)
Uno dei temi migliori… ZEN
52
NON E’ UN TEMA
E’ più un Framework per temi.
• Sfrutta molto l’ereditarietà
• Include molte funzionalità tra cui la
«Breadcrumb»
Uno dei temi migliori… ZEN
53
• BACKUP AND MIGRATE
http://drupal.org/project/backup_migrate
• Internationalization
http://drupal.org/project/i18n
• Language Icons
http://drupal.org/project/languageicons
• Localization update (l10n_update)
http://drupal.org/project/l10n_update
• Administration Menu
http://drupal.org/project/admin_menu
I moduli da installare subito…
54
• Pathauto
http://drupal.org/project/pathauto
• Token
http://drupal.org/project/token
• Transliteration
http://drupal.org/project/transliteration
• Variable (API)
http://drupal.org/project/variable
• Chaos Tools
http://drupal.org/project/ctools
• Views
http://drupal.org/project/views
• Administration Language
http://drupal.org/project/admin_language
I moduli da installare subito…
55
• Andare in Moduli, link Installa Modulo
Installazione di un modulo
56
• Il link del .tar.gz si trova nella pagina del modulo
Installazione di un modulo
LINK DA COPIARE/SCARICARE
[VERSIONE DI DRUPAL] – [VERSIONE MODULO]
57
WYSIWYG
http://drupal.org/project/wysiwyg
Dopo aver installato il modulo
Scaricare l’editor preferito e piazzarlo in:
/sites/all/libraries/[editorname]
Es. /sites/all/libraries/ckeditor
Creare un profilo WYSIWIG che usa ckeditor e
assegnato ad un «formato testo»
Moduli che fanno comodo…
58
• Date field
http://drupal.org/project/date
• References
http://drupal.org/project/references
• Tutti i * field per Chaos Tool (CTools) (opp. CCK
Content Construction Kit di D6)
• Panels
http://drupal.org/project/panels
• Advanced Help
http://drupal.org/project/advanced_help
• Webform:
http://drupal.org/project/webform
Moduli che fanno comodo…
59
Ecommerce:
• http://drupal.org/project/ecommerce
• http://drupal.org/project/ubercart
• SEO/Accessibilità:
• http://drupal.org/project/seotools
• http://drupal.org/project/seo_checklist
DEVELOPERS:
• http://drupal.org/project/devel
Altri moduli…
60
Riferimento:
http://drupal.org/documentation/multilingual
Impostazioni Lingua e Internazionalizzazione
61
• Aggiunta di una pagina standard
• Creazione di un nuovo tipo di contenuto
• Wysiwyg su nuovo contenuto
• Gestione dei blocchi
• Permessi
Live demos of…
62
Questions time.
Domande?
63
Concetti Avanzati
64
Cari Nerd vi presento DRUSH! DRupal Shell
http://www.drush.org/
Advanced tools
SI! C’è anche per Windows
65
Drush
66
• Drupal As A Service
https://www.getpantheon.com/
(Freemium Cloud DAAS Hosting)
Gestione facile del LIFE-CYCLE di un sito Drupal
Grazie a Drush stanno nascendo i DAAS
DEV PRODUCTION
STAGE
67
• Decrescono con l’aumentare dei moduli attivi
• Il database si riempie molto facilmente!
• Il DB ha un ruolo chiave
(perché le query possono essere pesanti )
• I moduli aggiungono eseguono query aggiuntive.
• Molti errori locali di Drupal sono dovuti
all’ambiente (Wamp/Lamp)
Es. Su un PC locale inserite sempre l’ip 127.0.0.1
come host DB per evitare lag.
Performance di Drupal
68
• Sistema integrato di caching
• Sistema integrato compressione CSS/JS
• Usare CDN per tutti i JS / CSS / immagini tema
• Pensare ad Varnish (Reverse Proxy Caching)
• Usare Nginx e APC (Alternative Php Cache)!
Migliorare le performance
69
• Drupal essere installato in cloud.
• Si, anche su Azure!
Scalabilità
70
Oltre ad usare Varnish e CDN…
Per scalare…
71
214 million hits in 6 ore. Database load: 5%. Apache load: 1%.
Per scalare alla grande…
72
Alcuni avvertimenti su Drupal:
• A volte gli aggiornamenti vi faranno impazzire
(non più di Joomla)
• Per progetti complessi usarlo solo per MVP
( poi passare a custom, magari .NET :-D )
• Bugs nei moduli… aggiornare per steps e solo
quando necessario (Security Fix).
• Attenzione agli update-chains (dipendenze)
Note finali
73
GRAZIE PER L’ATTENZIONE!
Con un breve questionario aiuterete me,
il gruppo e i futuri presentatori a migliorare!
alessandro@delgobbo.com
www.facebook.com/alessandro.adg.ok
twitter.com/alexoverflow
www.linkedin.com/in/delgobbo
Lasciate il vostro indirizzo email!
Alessandro del Gobbo
Cell. 329 792 79 82
74
Question time.
Domande?
75
Alcune immagini tratte da:
• An Introduction to Drupal Architecture - John VanDyk
- DrupalCamp Des Moines, Iowa
• Drupal as webplatform – Calibrate seminar
Bibliografia

More Related Content

Similar to Introduzione a Drupal 7 - 14/03/2013

WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15Andrea Cardinali
 
Novità in Visual Studio 2012
Novità in Visual Studio 2012Novità in Visual Studio 2012
Novità in Visual Studio 2012Sinergia Totale
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
Drupal - per chi vuole iniziare
Drupal - per chi vuole iniziareDrupal - per chi vuole iniziare
Drupal - per chi vuole iniziareSalvatore Paone
 
Corso Pratico di WordPress
Corso Pratico di WordPressCorso Pratico di WordPress
Corso Pratico di WordPressNicola Strumia
 
I 1000 utilizzi di WordPress
I 1000 utilizzi di WordPressI 1000 utilizzi di WordPress
I 1000 utilizzi di WordPressMarco De Sangro
 
Presentazione django reminiscence
Presentazione django reminiscencePresentazione django reminiscence
Presentazione django reminiscenceAndrea Gottardi
 
WordPress e il vostro blog - 18/19
WordPress e il vostro blog - 18/19WordPress e il vostro blog - 18/19
WordPress e il vostro blog - 18/19Giuseppe Vizzari
 
Creare un Information Radiator con Delphi
Creare un Information Radiator con DelphiCreare un Information Radiator con Delphi
Creare un Information Radiator con DelphiMarco Breveglieri
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteGiuseppe Toto
 
Realizzare una rete aziendale con linux e samba
Realizzare una rete aziendale con linux e sambaRealizzare una rete aziendale con linux e samba
Realizzare una rete aziendale con linux e sambaAndrea Mauro
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...MariaDB plc
 
Drupal Lessons by nois3lab
Drupal Lessons by nois3labDrupal Lessons by nois3lab
Drupal Lessons by nois3labnois3lab
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSMAU
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migrationAndrea Cirioni
 
Link. php [santi caltabiano]
  Link. php [santi caltabiano]  Link. php [santi caltabiano]
Link. php [santi caltabiano]santi caltabiano
 
Drupal - LinuxDay 2010 (Pistoia)
Drupal - LinuxDay 2010 (Pistoia)Drupal - LinuxDay 2010 (Pistoia)
Drupal - LinuxDay 2010 (Pistoia)Andrea Grandi
 

Similar to Introduzione a Drupal 7 - 14/03/2013 (20)

WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
 
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
 
Novità in Visual Studio 2012
Novità in Visual Studio 2012Novità in Visual Studio 2012
Novità in Visual Studio 2012
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
WordPress 1.pdf
WordPress 1.pdfWordPress 1.pdf
WordPress 1.pdf
 
WordPress 1.pdf
WordPress 1.pdfWordPress 1.pdf
WordPress 1.pdf
 
Drupal - per chi vuole iniziare
Drupal - per chi vuole iniziareDrupal - per chi vuole iniziare
Drupal - per chi vuole iniziare
 
Corso Pratico di WordPress
Corso Pratico di WordPressCorso Pratico di WordPress
Corso Pratico di WordPress
 
I 1000 utilizzi di WordPress
I 1000 utilizzi di WordPressI 1000 utilizzi di WordPress
I 1000 utilizzi di WordPress
 
Presentazione django reminiscence
Presentazione django reminiscencePresentazione django reminiscence
Presentazione django reminiscence
 
WordPress e il vostro blog - 18/19
WordPress e il vostro blog - 18/19WordPress e il vostro blog - 18/19
WordPress e il vostro blog - 18/19
 
Creare un Information Radiator con Delphi
Creare un Information Radiator con DelphiCreare un Information Radiator con Delphi
Creare un Information Radiator con Delphi
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parte
 
Realizzare una rete aziendale con linux e samba
Realizzare una rete aziendale con linux e sambaRealizzare una rete aziendale con linux e samba
Realizzare una rete aziendale con linux e samba
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...
 
Drupal Lessons by nois3lab
Drupal Lessons by nois3labDrupal Lessons by nois3lab
Drupal Lessons by nois3lab
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del cero
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
Link. php [santi caltabiano]
  Link. php [santi caltabiano]  Link. php [santi caltabiano]
Link. php [santi caltabiano]
 
Drupal - LinuxDay 2010 (Pistoia)
Drupal - LinuxDay 2010 (Pistoia)Drupal - LinuxDay 2010 (Pistoia)
Drupal - LinuxDay 2010 (Pistoia)
 

Recently uploaded

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 

Recently uploaded (6)

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 

Introduzione a Drupal 7 - 14/03/2013

  • 1. 1 Introduzione a Drupal 7 Club degli sviluppatori 14 marzo 2013 a cura di Alessandro Del Gobbo
  • 3. 3 Mi presento • Sviluppatore dall’epoca di ASP 3.0 • Oggi principalmente su: –.NET e ASP.NET + SQL Server –Java (per Android) –Tecnologie web (HTML5, CSS, JS ecc) –PHP –altre conoscenze sparse qua e la • Skills in grafica / UX Alessandro Del Gobbo
  • 4. 4 Requisiti minimi per Drupal: **MP Cioè WAMP, LAMP ecc. Gli essenziali sono: • Php 5.3+ • MySql 5.0.15+ (SqlServer e Oracle sono supportati da moduli aggiuntivi) Prima di iniziare: cosa c’è da sapere?
  • 5. 5 Conoscenze minime per essere «creativi»: • Html, CSS, JS • Funzionamento di un sito dinamico **MP • PHP e MySql per evolvere. Requisiti per utilizzare un sito Drupal: • Essere vivi, (ma dipende dai «creativi») Prima di iniziare: cosa c’è da sapere?
  • 6. 6 In caso di panico… www.drupal.org
  • 7. 7 In caso di panico… www.drupal.org
  • 8. 8 In caso di panico… www.drupal.org
  • 9. 9 Cos’è e come funziona Drupal 7
  • 10. 10 • Content Management System (CMS) • Content Management Framework (CMF) • Community Management System –Gestione eccezionale di utenti e permessi –Gestione eccezionale di User Generated Content in relazione ai permessi Cos’è:
  • 11. 11 • Gratuito & Open Source (GPL) http://drupal.org/licensing/faq • Modulare • Estensibile • Ultra-flessibile (grazie alle DB-API) • Manutenibile (updates e no-lock data)! Caratteristiche salienti 1/2
  • 12. 12 • Interfaccia SEMPLICE (Backend separABILE) • INTERNAZIONALIZABILE • Supportato da community enorme 24k+ sviluppatori & 917k+ accounts. • 20k+ moduli GRATUITI • Sito di supporto eccellente • Usato da molte major companies • Scalabile (info nella terza parte) Caratteristiche salienti (2/2)
  • 13. 13 • Costruzione di contenuti personalizzati • Costruzioni di viste (Query) con relativo layout anche senza scrivere SQL – Output delle viste dinamico (supporta anche RSS!) • Già tradotto in 100+ lingue (anche i moduli) • Traducibilità dei contenuti personalizzati • Generatore di Form e relative azioni Funzionalità interessanti (1/2)
  • 14. 14 • URL Seo-friendly • Gestione profili thumbnail (+ effetti) • Pubblicazione schedulata contenuti • System Logs • Segnalazione aggiornamenti core e moduli • MULTI SITO!! Un solo code-base per infiniti siti! Funzionalità interessanti (2/2)
  • 15. 15 Creato e mantenuto per (secondo loro): • Web-admin / Developers (ovviamente) • Non technical-people – Managers – Startuppers – Ecc. Per chi è
  • 16. 16 • Creato da Dries Buytaert in Belgio nel 2000 • Voleva essere una piattaforma per piccole community • Rilasciato Op.Source nel 2001 • A capo di Acquia (servizi per drupal) Storia di Drupal Dries Buytaert http://buytaert.net/ http://www.linkedin.com/in/buytaert
  • 17. 17 Voleva registrare il dominio dorp.org («dorp» in tedesco = villaggio) Per un errore di battitura registrò DROP.org Drop in inglese = Goccia… che in tedesco di pronuncia esattamente come Drupal Curiosità: perché «Drupal»? Infatti il logo è… una goccia
  • 18. 18 Cosa puoi farci • Blogs • Siti istituzionali • Web-zine • Presentazione prodotti • Wiki • Gestione KnowHow interno • Forum • Community • E-commerce • Ecc.
  • 20. 20 http://www.ricettario-bimby.it/ (una mega community) Alcuni esempi…
  • 21. 21 http://www.mtv.co.uk/ (una mega community) Alcuni esempi…
  • 22. 22 Alcuni esempi… si… è proprio lei… La casa bianca. http://www.whitehouse.gov/
  • 24. 24 • Wordpress (performante) ha di recente integrato un sistema di costruzione contenuti, ma la gestione utenti/permessi non è eccellente. • Joomla: – poco manutenibile (maledetti aggiornamenti) – meno usabile anche di Wordpress – moduli migliori a pagamento • Altri CMS in altri linguaggi spesso richiedono profonda conoscenza della piattaforma/linguaggio… anche per cose semplici Perchè usare Drupal?
  • 25. 25 • Non c’è uno scheduling delle versioni • Ogni versione è abbondantemente testata tramite Alfa Beta RC1 RC2… • I moduli seguono lo stesso iter contemporaneamente (alcuni vengono fuori in ritardo, quindi meglio aspettare!) • Spesso i moduli più famosi vengono integrati nel core di Drupal Versioni e Versioning di Drupal
  • 26. 26 • Ancora in RC • Stanno integrando Symfony per la gestione DB • Stanno integrando moduli come la i18n • Migliore usabilità • Interfaccia admin anche Mobile con Html5 • Nuovo sistema Layout (simile a panels) • Migliorano un sacco di cose tra cui le prestazioni Versione 8
  • 27. 27 Questo è il diagramma del DB di Drupal 7 Com’è fatto drupal?
  • 28. 28 Drupal ragiona con le «entità» • Node :un contenuto generico • User : un account • Taxonomy: Categorie/Tags • Comment: Commenti (gerarchici) In realtà basta sapere che…
  • 29. 29 I nodi rappresentano la base di un contenuto generico… una classe astratta Nodi e contenuti personalizzati Un «TIPO DI CONTENUTO» come Page (che è incluso di default) è un Node con quasi nessun campo (Field) aggiuntivo. Possiamo pensare Page come una classe derivata da Node.
  • 30. 30 I tipi di campo che inseriamo, non sono per forza tipi SQL… possono anche essere altre entità… Nodi e contenuti personalizzati Text_with_summary, c rea un sommario automatico dal testo, Taxonomy_reference splitta automaticamente i tag separati da virgola Ecc…
  • 31. 31 Con questo tipo di struttura flessibile, È ovvio che aggiungendo campi ad un nostro «oggetto» : NON stiamo aggiungendo Colonne ad una tabella… ma RIGHE (e in varie tabelle). • La flessibilità si paga con prestazioni • Drupal va ragionato Nodi nel database
  • 32. 32 Racchiude in se i concetti di: Tags, categorie, sezioni ecc. Un dizionario = un gruppo di identificatori. Ogni dizionario può essere: • Prestabilito dall’admin (es. le categorie degli articoli) • Variabile, come i «tags» aggiunti dagli utenti • Un campo Taxonomy di un oggetto personalizzato può avere tantissimi risvolti. Taxonomy / Tassonomia
  • 33. 33 • Account: profilo di un utente • Permesso: Possibilità per un utente di compiere un azione o visualizzare dei dati • Ruolo: Schema di permessi assegnabili a più utenti • Ruolo Admin: puo fare tutto. In automatico ha tutti i permessi. • Ruoli Custom: stabilisci tu ogni permesso • Ruolo Guest: Utente non autenticato, può solo vedere i contenuti. Users e sistema dei permessi
  • 36. 36 Struttura directory di Drupal Eventualmente modificare solo i file/cartelle in verde.
  • 37. 37 Temi • Definiscono e sovrascrivono i template di qualsiasi modulo «by-name-convention» • Sono derivabili in altri temi • Esistono Temi «framework»
  • 38. 38 Temi • Il template del tema ha sempre priorità rispetto al template del modulo • In caso di temi ereditati scandaglia tutto. • Per tutti i dettagli sul naming-convention dei template: http://drupal.org/node/1089656 es: comment--node-article.tpl.php verrebbe preso come template per i commenti ai contenuti di tipo article
  • 39. 39 Temi: com’è fatto un template Es. page.php nel template «bartik»
  • 40. 40 Meccanismo tramite il quale Drupal diventa estensibile e flessibile. • Agganciabili sia nei Temi che nei Moduli Es. nel tema «bartik», file template.php Hooks
  • 43. 43 L’installazione si può evitare completamente se l’hosting ci da Cpanel / Fantastico Script Assicurarsi di avere un hosting con queste caratteristiche: • Apache + Php • MySql • Creare un Database in MySql e un utente che possa accederci. Es. db1 e userdb1@localhost 1. Preparare l’ambiente
  • 44. 44 Copiare nella root folder del sito, i sorgenti contenuti nell’archivio Drupal. In sites/default copiare il file default.settings.php e rinominarlo in settings.php 1. Preparare l’ambiente
  • 45. 45 Navigare con il browser : http://localhost/install.php (dove localhost è eventualmente il vostro dominio) 2. Eseguire lo script di installazione
  • 46. 46 Navigare con il browser : http://localhost/install.php (dove localhost è eventualmente il vostro dominio) 2. Eseguire lo script di installazione
  • 47. 47 Seguire il wizard… 2. Eseguire lo script di installazione
  • 48. 48 Seguire il wizard… 2. Eseguire lo script di installazione
  • 49. 49 • Impostare il CronJob (link speciale in Status Report) • Abilitare i Clean Urls in /admin/config/search/clean-urls (.htaccess già presente… e anche il web.config!) 3. Configurazioni finali
  • 50. 50 • I blocchi dipendono dal tema! Layout e blocchi
  • 51. 51 • http://drupal.org/project/zen E’ abbastanza Nerd Ne esistono molti altri, anche Adaptative, per Mobile ecc. PS. Si può sviluppare per MOBILE: http://drupal.org/documentation/mobile con i temi o con moduli specifici come DrupalGap (per chi conosce Phonegap) Uno dei temi migliori… ZEN
  • 52. 52 NON E’ UN TEMA E’ più un Framework per temi. • Sfrutta molto l’ereditarietà • Include molte funzionalità tra cui la «Breadcrumb» Uno dei temi migliori… ZEN
  • 53. 53 • BACKUP AND MIGRATE http://drupal.org/project/backup_migrate • Internationalization http://drupal.org/project/i18n • Language Icons http://drupal.org/project/languageicons • Localization update (l10n_update) http://drupal.org/project/l10n_update • Administration Menu http://drupal.org/project/admin_menu I moduli da installare subito…
  • 54. 54 • Pathauto http://drupal.org/project/pathauto • Token http://drupal.org/project/token • Transliteration http://drupal.org/project/transliteration • Variable (API) http://drupal.org/project/variable • Chaos Tools http://drupal.org/project/ctools • Views http://drupal.org/project/views • Administration Language http://drupal.org/project/admin_language I moduli da installare subito…
  • 55. 55 • Andare in Moduli, link Installa Modulo Installazione di un modulo
  • 56. 56 • Il link del .tar.gz si trova nella pagina del modulo Installazione di un modulo LINK DA COPIARE/SCARICARE [VERSIONE DI DRUPAL] – [VERSIONE MODULO]
  • 57. 57 WYSIWYG http://drupal.org/project/wysiwyg Dopo aver installato il modulo Scaricare l’editor preferito e piazzarlo in: /sites/all/libraries/[editorname] Es. /sites/all/libraries/ckeditor Creare un profilo WYSIWIG che usa ckeditor e assegnato ad un «formato testo» Moduli che fanno comodo…
  • 58. 58 • Date field http://drupal.org/project/date • References http://drupal.org/project/references • Tutti i * field per Chaos Tool (CTools) (opp. CCK Content Construction Kit di D6) • Panels http://drupal.org/project/panels • Advanced Help http://drupal.org/project/advanced_help • Webform: http://drupal.org/project/webform Moduli che fanno comodo…
  • 59. 59 Ecommerce: • http://drupal.org/project/ecommerce • http://drupal.org/project/ubercart • SEO/Accessibilità: • http://drupal.org/project/seotools • http://drupal.org/project/seo_checklist DEVELOPERS: • http://drupal.org/project/devel Altri moduli…
  • 61. 61 • Aggiunta di una pagina standard • Creazione di un nuovo tipo di contenuto • Wysiwyg su nuovo contenuto • Gestione dei blocchi • Permessi Live demos of…
  • 64. 64 Cari Nerd vi presento DRUSH! DRupal Shell http://www.drush.org/ Advanced tools SI! C’è anche per Windows
  • 66. 66 • Drupal As A Service https://www.getpantheon.com/ (Freemium Cloud DAAS Hosting) Gestione facile del LIFE-CYCLE di un sito Drupal Grazie a Drush stanno nascendo i DAAS DEV PRODUCTION STAGE
  • 67. 67 • Decrescono con l’aumentare dei moduli attivi • Il database si riempie molto facilmente! • Il DB ha un ruolo chiave (perché le query possono essere pesanti ) • I moduli aggiungono eseguono query aggiuntive. • Molti errori locali di Drupal sono dovuti all’ambiente (Wamp/Lamp) Es. Su un PC locale inserite sempre l’ip 127.0.0.1 come host DB per evitare lag. Performance di Drupal
  • 68. 68 • Sistema integrato di caching • Sistema integrato compressione CSS/JS • Usare CDN per tutti i JS / CSS / immagini tema • Pensare ad Varnish (Reverse Proxy Caching) • Usare Nginx e APC (Alternative Php Cache)! Migliorare le performance
  • 69. 69 • Drupal essere installato in cloud. • Si, anche su Azure! Scalabilità
  • 70. 70 Oltre ad usare Varnish e CDN… Per scalare…
  • 71. 71 214 million hits in 6 ore. Database load: 5%. Apache load: 1%. Per scalare alla grande…
  • 72. 72 Alcuni avvertimenti su Drupal: • A volte gli aggiornamenti vi faranno impazzire (non più di Joomla) • Per progetti complessi usarlo solo per MVP ( poi passare a custom, magari .NET :-D ) • Bugs nei moduli… aggiornare per steps e solo quando necessario (Security Fix). • Attenzione agli update-chains (dipendenze) Note finali
  • 73. 73 GRAZIE PER L’ATTENZIONE! Con un breve questionario aiuterete me, il gruppo e i futuri presentatori a migliorare! alessandro@delgobbo.com www.facebook.com/alessandro.adg.ok twitter.com/alexoverflow www.linkedin.com/in/delgobbo Lasciate il vostro indirizzo email! Alessandro del Gobbo Cell. 329 792 79 82
  • 75. 75 Alcune immagini tratte da: • An Introduction to Drupal Architecture - John VanDyk - DrupalCamp Des Moines, Iowa • Drupal as webplatform – Calibrate seminar Bibliografia