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?
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.
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
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
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
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
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
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…
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…
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…
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à
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