Introduzione a Drupal 7 - 14/03/2013
-
Upload
alessandro-del-gobbo -
Category
Technology
-
view
1.293 -
download
1
description
Transcript of Introduzione a Drupal 7 - 14/03/2013
1
Introduzione a
Drupal 7
Club degli sviluppatori14 marzo 2013
a cura di Alessandro Del Gobbo
2
1Cos’è e come funziona
2Usare
Drupal7
3Concetti
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: **MPCioè 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?
9
Cos’è e come funziona Drupal 7
1
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 Buytaerthttp://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.
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, crea 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.phpverrebbe 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 ModuliEs. nel tema «bartik», file template.php
Hooks
41
Question time.
Domande?
42
Usare Drupal 7 2
43
L’installazione si può evitare completamentese 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/zenE’ abbastanza Nerd
Ne esistono molti altri, anche Adaptative, per Mobile ecc.
PS. Si può sviluppare per MOBILE:http://drupal.org/documentation/mobilecon 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 MIGRATEhttp://drupal.org/project/backup_migrate
• Internationalizationhttp://drupal.org/project/i18n
• Language Iconshttp://drupal.org/project/languageicons
• Localization update (l10n_update)http://drupal.org/project/l10n_update
• Administration Menuhttp://drupal.org/project/admin_menu
I moduli da installare subito…
54
• Pathautohttp://drupal.org/project/pathauto
• Tokenhttp://drupal.org/project/token
• Transliterationhttp://drupal.org/project/transliteration
• Variable (API)http://drupal.org/project/variable
• Chaos Toolshttp://drupal.org/project/ctools
• Viewshttp://drupal.org/project/views
• Administration Languagehttp://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 fieldhttp://drupal.org/project/date
• Referenceshttp://drupal.org/project/references
• Tutti i * field per Chaos Tool (CTools) (opp. CCK Content Construction Kit di D6)
• Panelshttp://drupal.org/project/panels
• Advanced Helphttp://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 3
64
Cari Nerd vi presento DRUSH! DRupal Shellhttp://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!
www.facebook.com/alessandro.adg.ok
twitter.com/alexoverflow
www.linkedin.com/in/delgobbo
Lasciate il vostro indirizzo email!
Alessandro del GobboCell. 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