Introduzione a Drupal 7 - 14/03/2013

Post on 12-Jan-2015

1,293 views 1 download

description

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

transcript

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?

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

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.

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, 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!

alessandro@delgobbo.com

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