Introduzione a Drupal 7 - 14/03/2013

75
1 Introduzione a Drupal 7 Club degli sviluppatori 14 marzo 2013 a cura di Alessandro Del Gobbo

description

Introduzione a Drupal 7 Incontro Club degli sviluppatori - 13/03

Transcript of Introduzione a Drupal 7 - 14/03/2013

Page 1: Introduzione a Drupal 7 - 14/03/2013

1

Introduzione a

Drupal 7

Club degli sviluppatori14 marzo 2013

a cura di Alessandro Del Gobbo

Page 2: Introduzione a Drupal 7 - 14/03/2013

2

1Cos’è e come funziona

2Usare

Drupal7

3Concetti

avanzati

Percorso in 3 parti

Page 3: Introduzione a Drupal 7 - 14/03/2013

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

Page 4: Introduzione a Drupal 7 - 14/03/2013

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?

Page 5: Introduzione a Drupal 7 - 14/03/2013

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?

Page 6: Introduzione a Drupal 7 - 14/03/2013

6

In caso di panico… www.drupal.org

Page 7: Introduzione a Drupal 7 - 14/03/2013

7

In caso di panico… www.drupal.org

Page 8: Introduzione a Drupal 7 - 14/03/2013

8

In caso di panico… www.drupal.org

Page 9: Introduzione a Drupal 7 - 14/03/2013

9

Cos’è e come funziona Drupal 7

1

Page 10: Introduzione a Drupal 7 - 14/03/2013

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’è:

Page 11: Introduzione a Drupal 7 - 14/03/2013

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

Page 12: Introduzione a Drupal 7 - 14/03/2013

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)

Page 13: Introduzione a Drupal 7 - 14/03/2013

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)

Page 14: Introduzione a Drupal 7 - 14/03/2013

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)

Page 15: Introduzione a Drupal 7 - 14/03/2013

15

Creato e mantenuto per (secondo loro):• Web-admin / Developers

(ovviamente)

• Non technical-people– Managers– Startuppers– Ecc.

Per chi è

Page 16: Introduzione a Drupal 7 - 14/03/2013

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

Page 17: Introduzione a Drupal 7 - 14/03/2013

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

Page 18: Introduzione a Drupal 7 - 14/03/2013

18

Cosa puoi farci

• Blogs• Siti istituzionali• Web-zine• Presentazione prodotti• Wiki• Gestione KnowHow

interno

• Forum• Community• E-commerce• Ecc.

Page 19: Introduzione a Drupal 7 - 14/03/2013

19

www.adoroletuefoto.it (una startup)

Alcuni esempi…

Page 20: Introduzione a Drupal 7 - 14/03/2013

20

http://www.ricettario-bimby.it/ (una mega community)

Alcuni esempi…

Page 21: Introduzione a Drupal 7 - 14/03/2013

21

http://www.mtv.co.uk/ (una mega community)

Alcuni esempi…

Page 22: Introduzione a Drupal 7 - 14/03/2013

22

Alcuni esempi… si… è proprio lei… La casa bianca.

http://www.whitehouse.gov/

Page 23: Introduzione a Drupal 7 - 14/03/2013

23

http://drupal.org/case-studies (molti altri)

Alcuni esempi…

Page 24: Introduzione a Drupal 7 - 14/03/2013

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?

Page 25: Introduzione a Drupal 7 - 14/03/2013

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

Page 26: Introduzione a Drupal 7 - 14/03/2013

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

Page 27: Introduzione a Drupal 7 - 14/03/2013

27

Questo è il diagramma del DB di Drupal 7

Com’è fatto drupal?

Page 28: Introduzione a Drupal 7 - 14/03/2013

28

Drupal ragiona con le «entità» • Node :un contenuto generico• User : un account• Taxonomy: Categorie/Tags• Comment: Commenti (gerarchici)

In realtà basta sapere che…

Page 29: Introduzione a Drupal 7 - 14/03/2013

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.

Page 30: Introduzione a Drupal 7 - 14/03/2013

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…

Page 31: Introduzione a Drupal 7 - 14/03/2013

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

Page 32: Introduzione a Drupal 7 - 14/03/2013

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

Page 33: Introduzione a Drupal 7 - 14/03/2013

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

Page 34: Introduzione a Drupal 7 - 14/03/2013

34

Architettura di Drupal

Page 35: Introduzione a Drupal 7 - 14/03/2013

35

Architettura di Drupal (2)

Page 36: Introduzione a Drupal 7 - 14/03/2013

36

Struttura directory di Drupal

Eventualmente modificare solo i file/cartelle in verde.

Page 37: Introduzione a Drupal 7 - 14/03/2013

37

Temi

• Definiscono e sovrascrivono i template di qualsiasi modulo «by-name-convention»

• Sono derivabili in altri temi• Esistono Temi «framework»

Page 38: Introduzione a Drupal 7 - 14/03/2013

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

Page 39: Introduzione a Drupal 7 - 14/03/2013

39

Temi: com’è fatto un template

Es. page.php nel template «bartik»

Page 40: Introduzione a Drupal 7 - 14/03/2013

40

Meccanismo tramite il quale Drupal diventa estensibile e flessibile.• Agganciabili sia nei Temi che nei ModuliEs. nel tema «bartik», file template.php

Hooks

Page 41: Introduzione a Drupal 7 - 14/03/2013

41

Question time.

Domande?

Page 42: Introduzione a Drupal 7 - 14/03/2013

42

Usare Drupal 7 2

Page 43: Introduzione a Drupal 7 - 14/03/2013

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

Page 44: Introduzione a Drupal 7 - 14/03/2013

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

Page 45: Introduzione a Drupal 7 - 14/03/2013

45

Navigare con il browser :http://localhost/install.php(dove localhost è eventualmente il vostro dominio)

2. Eseguire lo script di installazione

Page 46: Introduzione a Drupal 7 - 14/03/2013

46

Navigare con il browser :http://localhost/install.php(dove localhost è eventualmente il vostro dominio)

2. Eseguire lo script di installazione

Page 47: Introduzione a Drupal 7 - 14/03/2013

47

Seguire il wizard…

2. Eseguire lo script di installazione

Page 48: Introduzione a Drupal 7 - 14/03/2013

48

Seguire il wizard…

2. Eseguire lo script di installazione

Page 49: Introduzione a Drupal 7 - 14/03/2013

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

Page 50: Introduzione a Drupal 7 - 14/03/2013

50

• I blocchi dipendono dal tema!

Layout e blocchi

Page 51: Introduzione a Drupal 7 - 14/03/2013

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

Page 52: Introduzione a Drupal 7 - 14/03/2013

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

Page 53: Introduzione a Drupal 7 - 14/03/2013

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…

Page 54: Introduzione a Drupal 7 - 14/03/2013

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…

Page 55: Introduzione a Drupal 7 - 14/03/2013

55

• Andare in Moduli, link Installa Modulo

Installazione di un modulo

Page 56: Introduzione a Drupal 7 - 14/03/2013

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]

Page 57: Introduzione a Drupal 7 - 14/03/2013

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…

Page 58: Introduzione a Drupal 7 - 14/03/2013

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…

Page 59: Introduzione a Drupal 7 - 14/03/2013

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…

Page 60: Introduzione a Drupal 7 - 14/03/2013

60

Riferimento:http://drupal.org/documentation/multilingual

Impostazioni Lingua e Internazionalizzazione

Page 61: Introduzione a Drupal 7 - 14/03/2013

61

• Aggiunta di una pagina standard• Creazione di un nuovo tipo di contenuto• Wysiwyg su nuovo contenuto• Gestione dei blocchi• Permessi

Live demos of…

Page 62: Introduzione a Drupal 7 - 14/03/2013

62

Questions time.

Domande?

Page 63: Introduzione a Drupal 7 - 14/03/2013

63

Concetti Avanzati 3

Page 64: Introduzione a Drupal 7 - 14/03/2013

64

Cari Nerd vi presento DRUSH! DRupal Shellhttp://www.drush.org/

Advanced tools

SI! C’è anche per Windows

Page 65: Introduzione a Drupal 7 - 14/03/2013

65

Drush

Page 66: Introduzione a Drupal 7 - 14/03/2013

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

Page 67: Introduzione a Drupal 7 - 14/03/2013

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

Page 68: Introduzione a Drupal 7 - 14/03/2013

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

Page 69: Introduzione a Drupal 7 - 14/03/2013

69

• Drupal essere installato in cloud. • Si, anche su Azure!

Scalabilità

Page 70: Introduzione a Drupal 7 - 14/03/2013

70

Oltre ad usare Varnish e CDN…

Per scalare…

Page 71: Introduzione a Drupal 7 - 14/03/2013

71

214 million hits in 6 ore. Database load: 5%. Apache load: 1%.

Per scalare alla grande…

Page 72: Introduzione a Drupal 7 - 14/03/2013

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

Page 73: Introduzione a Drupal 7 - 14/03/2013

73

GRAZIE PER L’ATTENZIONE!

Con un breve questionario aiuterete me,il gruppo e i futuri presentatori a migliorare!

[email protected]

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

Page 74: Introduzione a Drupal 7 - 14/03/2013

74

Question time.

Domande?

Page 75: Introduzione a Drupal 7 - 14/03/2013

75

Alcune immagini tratte da:

• An Introduction to Drupal Architecture - John VanDyk - DrupalCamp Des Moines, Iowa

• Drupal as webplatform – Calibrate seminar

Bibliografia