38. konference EurOpen.CZ
11. května .2011
DRUPAL
VOJTĚCH KUSÝ | @WOJTHA
www.vojtechkusy.cz
KDO JSEM
D R U P A L V Ý V O J Á Ř / E V A N G E L I Z Á T O R & P H D. S T U D E N T • postgraduální studium na ČVUT FSV
• Katedra inženýrské informatiky
• Obor informační systémy ve stavebnictví
Software na řízení projektů; Modelování dynamických systémů
• 8 let na volné noze: PHP, webdesign, Drupal (5 let)
• Drupal.cz, Drupal.org
• reference:
spolupráce na:
• od února 2011 Atomic Ant Ltd. http://atomicant.co.uk
C O J E D R U P A L
ZÁKLADNÍ CHARAKTERISTIKY
•
•
•
•
•
•
vysoce modulární
open source
content management system (CMS)
nebo content management framework (CMF)
napsaný v PHP
snadno rozšiřitelný - téměř každý aspekt Drupalu
lze ovlivnit pomocí modulů nebo témat
Druplicon vs Drupal logo
D R I E S B U Y T A E R T
A N E B K D O Z A T O M Ů Ž E ... •
•
•
•
původní autor: Dries Buytaert, kol. roku 2000
Drupal 1.0.0 - opensource projekt od 15.1.2001
vlastní DrupalTM trademark
zakladatel
- enterprise Drupal support
TECHNOLOGIE
ZÁKLADNÍ POŽADAVKY NA SERVER
• PHP:
o Drupal 6: PHP 5.2, min PHP 4.4.0
o Drupal 7: PHP 5.3, min PHP 5.2.5
• Podporované databáze:
o Drupal 6: MySQL 4.1+, PostgreSQL 7.1+,
(Oracle – modul)
o Drupal 7: PHP PDO (MySQL, PostgreSQL,
SQLite, ...), MS SQL a MS Azure (modul)
• WebServer:
o Apache (Linux/Windows)
o Nginx (Linux/Windows)
o Lighttpd (Linux/Windows)
o IIS (Windows only)
DRUPAL-ARCHITEKTURA
D R U P A L J A K O S T A V E B N I C E L E G O
Contrib
=
moduly od
přispěvatelů
Jádro
Vlastní
modul
Jádro
=
knihovny
+
základní
subsytémy
Obrázek z knihy Pro Drupal Development, 2nd Edition
DRUPAL
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
• Srdce systému :=
o knihovny základních funkcích
o povinné moduly:
 System, User, Node, Filter, Block
 System, User, Node, Filter,
Field, Field SQL Storage, Text
o téma vzhledu (frontend a administrační)
• Nepovinné:
o Blog, Taxonomy, Comment, Poll …
o a dalších asi 20 modulů
• Contrib:
o Asi 7000 modulů a témat vzhledu, ke stažení na
drupal.org (bezplatně, GNU GPL v2)
DRUPAL NENÍ MVC
D R U P A L N E N Í M V C A L E P A C
• Presentation-abstraction-control
Zdroj: http://en.wikipedia.org/wiki/File:Pac-schema.png
KONCEPTY
ZÁSADNÍ
KONCEPTY V DRUPALU
• systém háků
• Zásadní moduly:
o CCK = Fields
o Views
o Features
o Drush
o Panels
o ...
HÁKY (HOOKS)
D R U P A L Z P O H L E D U V Ý V O J Á Ř E
• Až do Drupalu 6 bylo jádro Drupalu s jedinou
výjimkou (xml parser) striktně procedurální
• Drupal má poměrně unikátní architekturu, která
spočívá v systému háků (hooks) a jmenných
konvencích (naming conventions)
o komunikace jádra s moduly
o komunikace modulů mezi sebou
• Modifikační háky (alter hooks) – umožňují měni
výstup jiných modulů či jádra
• Od Drupalu 7 změna, procedurální jádro a systém
háků zůstává, ale subsystémy jsou objektové
D R U P A L 6 M Á 7 3 H Á K Ů
... A D R U P A L 7 J E Š T Ě V Í C
hook_access, hook_actions_delete, hook_action_info, hook_action_info_alter,
hook_block, hook_boot, hook_comment, hook_cron, hook_db_rewrite_sql,
hook_delete, hook_disable, hook_elements, hook_enable, hook_exit,
hook_file_download, hook_filter, hook_filter_tips, hook_flush_caches,
hook_footer, hook_form, hook_forms, hook_form_alter,
hook_form_FORM_ID_alter, hook_help, hook_hook_info, hook_init,
hook_insert, hook_install, hook_link, hook_link_alter, hook_load, hook_locale,
hook_mail, hook_mail_alter, hook_menu, hook_menu_alter,
hook_menu_link_alter, hook_nodeapi, hook_node_access_records,
hook_node_grants, hook_node_info, hook_node_operations, hook_node_type,
hook_openid, hook_perm, hook_ping, hook_prepare, hook_profile_alter,
hook_requirements, hook_schema, hook_schema_alter, hook_search,
hook_search_preprocess, hook_system_info_alter, hook_taxonomy,
hook_term_path, hook_theme, hook_theme_registry_alter,
hook_translated_menu_link_alter, hook_translation_link_alter,
hook_uninstall, hook_update, hook_update_index,
hook_update_last_removed, hook_update_N, hook_update_projects_alter,
hook_update_status_alter, hook_user, hook_user_operations,
hook_validate, hook_view, hook_watchdog, hook_xmlrpc
Zásada: Don’t hack core
http://media.brianshumate.com/stuff/dont_hack_drupal_core_wallpaper.png
SOUBOR .INFO
R E G I S T R A Č N Í S O U B O R M O D U L U mymodule.INFO
name = My first module
description = Say hello.
core = 7.x
;dependencies[] = profile
;dependencies[] = menu
package = "My modules"
;php = 5.3
INI
SOUBOR .MODULE
H L A V N Í S O U B O R M O D U L U mymodule.MODULE
<?php
/**
* Implementation of hook_init()
*/
function mymodule_init() {
drupal_set_message(t('Hello World'));
}
PHP
ZÁKLADNÍ KNIHOVNY
Z Á K L A D N Í R O Z H R A N Í D R U P A L A P I
•
•
•
•
•
•
•
•
Překlad (lokalizace) a filtrování výstupu
Databázová vrstva
Menu systém a routování
Systém práv přístupu
Form API - rozhraní pro práci s formuláři
File API - rozhraní pro práci se soubory
Field API - rozhraní pro práci s datovými poli
Entity - obecná implementace Drupal objektů, API
pro vytváření dalších entit
• API pro přístup k Drupal objektům:
Node, Taxonomy, Comment, User
• Šablonovací vrstva - hook_theme(), theme()
D R U P A L T E R M I N O L O G I E
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
• Entity
o Drupal 6 - uživatel, taxonomie, uzel, komentář
jednotlivé nesouvisející objekty
o Drupal 7 entity
 všechny tyto objekty jsou entity
 některé jsou tzv. "fieldable" - je možné je
rozšířit pomocí Field API (dříve modul CCK)
D R U P A L T E R M I N O L O G I E
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
• Uzel (node - entita)
o část obsahu, obvykle má nadpis a nějaký obsah
o příklady: Story, Page, Forum topic, Product
• Taxonomie (taxonomy - entita)
o Drupal systém pro kategorizaci obsahu
o obsahuje termíny (terms) organizované ve
slovnících (vocabularies)
• Háky/háčky (hooks)
o Systém háků umožňuje Drupalu komunikovat s
moduly a také umožňuje komunikovat modulům
sobě navzájem
D R U P A L T E R M I N O L O G I E
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
• Modul
o Je obecně jednotka která rozšiřuje Drupal o
nějaké funkce, nebo upravuje chování Drupalu
• Téma (Theme)
o Mění "look & feel" Drupalu
• Instalační profil
o Instalační skript, který umožňuje Drupal
přednastavit
• Distribuce
o Instalační balení Drupalu = jádro + moduly +
profil
D R U P A L T E R M I N O L O G I E
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
• Field - pole - (Fields API)
o jednoduchý datový typ, který je možné navěsit
na entity
• Field instances - instance polí
o sdílená pole mezi entitami
• Bundle - balík
o instance entity
 skupina polí
o typ obsahu (uzlu), slovníky,...
M O D U L C C K - F i e l d s A P I
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
• CCK (Fields UI) poskytuje UI pro vytváření typů
obsahu
• stará se o ukládání a nahrávání dat z databáze
o automaticky vytváří DB tabulky s příslušnými
sloupečky (single vs. multiple)
o kromě toho ukládá podrobné nastavení všech
definic políček do vlastní tabulky (metadata)
• dále poskytuje
o formulářové prvky (widget) a jejich validaci,
o zobrazení dat je možné několika způsoby
pomocí formátovačů (formatters)
C C K P O L E = F I E L D
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
M O D U L C C K - F i e l d s A P I
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
DEMONSTRACE
M O D U L C C K / F I E L D S A P I
CONTENT CONSTRUCTION KIT
M O D U L C C K
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
M O D U L C C K
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
M O D U L C C K
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
M O D U L C C K
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
M O D U L V I E W S
TVORBA POHLEDŮ NA DATA
•
•
•
•
nástroj na generování pohledů na data
vizuální editor pro vytváření dotazů
filtrování, třídění dat
široké možnosti formátování
o nativní formatování - např. zobrazit celý uzel
o nebo vlastní - např. zobrazit jako tabulku
• vytváření hlavního obsahu nebo bloků, RSS zdrojů,
CSV, XML apod
• od verze 6.x-3.0 a 7.x-3.0 umožňuje práci i s
externími daty (YQL, Google API, Wolfram
Search...)
M O D U L V I E W S
TVORBA POHLEDŮ NA DATA
http://www.yoroy.com/elders/drupal/Views-sitemap.png
M O D U L V I E W S
TVORBA POHLEDŮ NA DATA
M O D U L V I E W S
Z Á K L A D N Í A R C H I T E K T U R A D R U P A L U
DEMONSTRACE
M O D U L V I E W S
TVORBA POHLEDŮ NA DATA
M O D U L V I E W S
TVORBA POHLEDŮ NA DATA
M O D U L V I E W S
TVORBA POHLEDŮ NA DATA
A CO OBRÁZKY?
TVORBA POHLEDŮ NA DATA
• V Drupal 7 použijeme vestavěné Image Styles
• V Drupal 6 doinstalujeme ImageCache a ImageApi
M O D U L V I E W S
TVORBA POHLEDŮ NA DATA
PROČ ENTITY?
E N T I T Y - N O V Ý K O N C E P T
• Použití Node API pro řešení některých problémů sice
urychlilo práci, ...
• ... na druhou stranu to ale někdy znamenalo řešit spoustu
jiných problémů:
o co když nechci, aby se můj typ uzlu indexoval
o proč musí mít každý typ uzlu titulek a URL?
o ...
• Node API bylo skutečně dobré pro řešení klasických typů
obsahu jako je Stránka, Článek, Produkt ...
• ... v ostatních případech použití Node API občas
připomínalo drbání se pravou rukou za levým uchem
PROČ ENTITY?
E N T I T Y - N O V Ý K O N C E P T
• Vznikla tak silná potřeba abstrahovat od konceptu uzlů
• Entita je OBJEKT se kterým Drupal, umí velmi dobře
pracovat
• Entitou může být cokoliv:
o Uzel (Node)
o Uživatel (User)
o Komentář (Comment)
o Uživatel (User)
o Blok (Block)
o Položka menu...
• Entity API http://drupal.org/project/entity
o Wolfgang Ziegler (fago)
PANELS
K D Y Ž P E V N É R E G I O N Y N E S T A Č Í
• Vytváření flexibilních dynamických šablon a layoutů
stránek bez nutnosti kódovat extra šablony
• Definování libovolných regionů
• Možné měnit i "za provozu", převádění obsahu
mezi regiony
• Podobná filozofie jako modul Views – mají i
stejného autora
PANELS
K D Y Ž P E V N É R E G I O N Y N E S T A Č Í
PANELS
K D Y Ž P E V N É R E G I O N Y N E S T A Č Í
PANELS
K D Y Ž P E V N É R E G I O N Y N E S T A Č Í
PANELS
K D Y Ž P E V N É R E G I O N Y N E S T A Č Í
A N A T O M I E D R U P A L W E B U
S T R U K T U R A S T R Á N K Y P Ř I P O U Ž I T Í O B V Y K L Ý C H M O D U L Ů
A N A T O M I E D R U P A L W E B U
S T R U K T U R A S T R Á N K Y P Ř I P O U Ž I T Í O B V Y K L Ý C H M O D U L Ů
ŠABLONOVÁNÍ
THEMING A JEDNODUCHÁ ÚPRAVA ŠABLON
• Oddělení logiky od prezentace
• Každý prvek má nějaký presenter, tzn. nějakou výchozí
šablonu, presentery jsou na sobě navrstvené
• V tématu můžeme tyto výchozí presentery „přetěžovat“
tak, že vytvoříme svoje vlastní
• Šablona v tématu má přednost před výchozí šablonou v
modulu
• Jakýkoliv výstup modulu by mělo jít přepsat, pokud to
nejde, jedná se o chybu
• Výstup by měl být bezpečnostně ošetřen, ale nelze na
vývojáře spoléhat, obzvláště u contrib modulů
• .info soubor + css = minimální šablona
atomicant.co.uk | atomicant.cz
ÚVOD DO ŠABLONOVÁNÍ
THEMING A JEDNODUCHÁ ÚPRAVA ŠABLON
• Anatomie tématu vzhledu
o .info soubor vyžadováno
o .tpl.php soubory - přetížené šablony
o template.php - přetížené theme funkce a pomocné funkce
o styly - css
o skripty - js,...
o obrázky
o atd...
atomicant.co.uk | atomicant.cz
ÚVOD DO ŠABLONOVÁNÍ
THEMING A JEDNODUCHÁ ÚPRAVA ŠABLON
atomicant.co.uk | atomicant.cz
ÚVOD DO ŠABLONOVÁNÍ
THEMING A JEDNODUCHÁ ÚPRAVA ŠABLON
atomicant.co.uk | atomicant.cz
ÚVOD DO ŠABLONOVÁNÍ
THEMING A JEDNODUCHÁ ÚPRAVA ŠABLON
atomicant.co.uk | atomicant.cz
MULTISITE
One Drupal to rule them all!
INSTALAČNÍ PROFILY
DISTRIBUCE A INSTALAČNÍ PROFILY
• Instalační profil
o Instalační skript, který umožňuje Drupal přednastavit
• Instalační profily na Drupal.org
o
http://drupal.org/project/installation+profiles
atomicant.co.uk | atomicant.cz
INSTALAČNÍ PROFILY
DISTRIBUCE A INSTALAČNÍ PROFILY
• Distribuce
o Instalační "balíček" Drupalu = jádro + moduly + profil
atomicant.co.uk | atomicant.cz
DISTRIBUCE
DISTRIBUCE A INSTALAČNÍ PROFILY
• OpenAtrium - http://openatrium.com/ groupware distribuce
určená pro intranety (původně vyvinuto jako intranet pro
mezinárodní pracovní skupiny Světové banky)
• OpenPublish - http://openpublishapp.com/ distribuce určená
pro publikační portály
• OpenPublic - http://openpublicapp.com/ - distribuce určená
pro státní organizace
• Pressflow - http://pressflow.org/ - distribuce/fork Drupalu
uzpůsobená pro vyšší výkon
• Tattler (app) - http://tattlerapp.com/ - agregační nástroj pro
monitorování zadaných témat v libovolných veřejných zdrojích
a sociálních sítích
• Acquia Drupal http://acquia.com/products-services/acquia-drupal
• Drupal Commons - distribuce společnosti Acquia určená pro
webu
a trychlé
o m i c a n t . cvybudování
o . u k | a t o m i c a n t . ckomunitního/sociálního
z
RDF
NATIVNÍ PODPORA RDF
• Resource Description Framework (RDF)
• česky systém popisu zdrojů
• RDF je jednou z hlavních komponent sémantického
webu
• triplet / triple / trojice: podmět-vlastnost-předmět
• "Obloha má modrou barvu":
o Obloha
o má barvu
o modrou
• I have a dream for the Web [in which computers]
become capable of analyzing all the data on the
Web ...
– Tim Berners-Lee, 1999
• http://semantic-drupal.com/
RDF
NATIVNÍ PODPORA RDF
http://richard.cyganiak.de/2007/10/lod/lod-datasets_2010-09-22.html
RDF
NATIVNÍ PODPORA RDF
RYCHLÁ DEMONSTRACE
VÝKON
VÝKON V DRUPALU
• Pokud nenačítá data z cache je Drupal obecně
relativně pomalý a náročný na zdroje
• Operační paměť, databáze i procesor (zejména
kvůli renderování)
• Je to daň za architekturu
• Naštěstí ta samá architektura umožňuje data
centrálně cachovat a nebo rozkládat zátěž na více
strojů
• Memcache, Varnish, Squid, CDN, NoSQL DB pro
některé tabulky
• Modul Boost alias „poorman’s Varnish“
• Optimalizace frontendu: agregace CSS a JSS,
image sprites
• Weby pro anonymní uživatele zcela bez problémů
D E V E L N Á S T R O J E
Z Á K L A D N Í N Á S T R O J E P R O V Ý V O J V D R U P A L U
• Devel - základní toolkit pro vývojáře
• http://drupal.org/project/devel
• Drush – Drupal Shell - Drupal v příkazové
řádce http://drupal.org/project/drush
• Coder - kontrola standardů a upgrade modulů
• http://drupal.org/project/coder
• Backup and Migrate - zálohování databáze
http://drupal.org/project/backup_migrate
• SimpleTest - testovací framework (D7+ v jádru)
• http://drupal.org/project/simpletest
• Translation template extractor - extrakce
překladů: http://drupal.org/project/potx
D R U P A L A P I
VYVÍJÍME PRO DRUPAL
ukázky programování pro Drupal
(jestli zbude čas)
KOMUNITA
KOLIK ?
• 5. ledna 2011
• Drupal 7 Release party - 326 akcí - 96 zemí
KOMUNITA
KDE?
• 5. ledna 2011
• Drupal 7 Release party - 326 akcí - 96 zemí
• http://www.drupal7releaseparty.org/
http://www.drupal7releaseparty.org/
KOMUNITA
JÁDRO
• Jádro Drupalu
7 obsahuje
patche od 954
lidí
• 5 Čechů
DRUPAL 8
D r u p a l w e b j a k o s o u č á s t g i g a n t i c k é h o g r a f u
• „The RAM is new disk and the disk is new tape“
CRUD => CRA (P)
• UUID v jádře
• Pluggable core
• Orientace na mobilní zařízení
• Orientace na webservices
VIZE
DRUPAL JAKO JEDNOTÍCÍ
PRVEK
http://buytaert.net/acquia-product-strategy-and-vision
VIZE
DRUPAL JAKO JEDNOTÍCÍ
PRVEK
http://buytaert.net/acquia-product-strategy-and-vision
VIZE
DRUPAL JAKO JEDNOTÍCÍ
PRVEK
http://buytaert.net/acquia-product-strategy-and-vision
VIZE
DRUPAL JAKO JEDNOTÍCÍ
PRVEK
http://buytaert.net/acquia-product-strategy-and-vision
D R U P A L - V L A S T N O S T I
K L Í Č O V É V L A S T N O S T I D R U P A L U
+
+
+
Rozšiřitelnost
7500 modulů a témat na drupal.org
Málo kvalitních témat (obtížné, musí být univerzální)
Až 80-100% práce i u velkých webů lze vyřešit
pouhou konfigurací přes UI
- Konfigurace je držena v databázi, nešikovné pro
dlouhodobý vývoj (ale nástroje už existují)
+ Bezpečnost
+ Škálovatelnost
+ Vývojářská komunita
+ Důraz na standardy a dokumentaci
- Bez podpůrných systémů náročný na zdroje
+/- Není zpětná kompatibilita (major verze)
W O R D P R E S S , J O O M L A !
SROVNÁNÍ S NEJVĚTŠÍMI KONKURENTY
• Wordpress určen obecně spíš na jednoduché
weby s jedním administrátorem
• Joomla! určena pro menší až po střední weby
• Drupal zvládne malé weby i velké weby, je
připravený na škálování
• Pro menší weby je ale náročnější na zdroje
• Neexistuje pro něj trh hotových aplikací, takže vývoj
může být dražší
• I když se Drupal snaží být stále více „user-friendly“,
jeho hlavní cílovou skupinou jsou vývojáři či
geekové, kterým vyhovuje flexibilita a možnost
pokročilých nastaveních kdekoliv a kdykoliv
• Drupal není produkt, za produkty se dají považovat
až distribuce, v porovnání s Wordpressem se jedná
jen o „polotovar“
K D O P O U Ž Í V Á D R U P A L ?
?
K D O P O U Ž Í V Á D R U P A L ?
DRUPAL.ORG
K D O P O U Ž Í V Á D R U P A L ?
GARMIN.DK
K D O P O U Ž Í V Á D R U P A L ?
LEFIGARO.FR
K D O P O U Ž Í V Á D R U P A L ?
ECONOMIST.COM
K D O P O U Ž Í V Á D R U P A L ?
LONDON.GOV.UK
K D O P O U Ž Í V Á D R U P A L ?
WHITEHOUSE.GOV
K D O P O U Ž Í V Á D R U P A L ?
ENERGY.GOV
K D O P O U Ž Í V Á D R U P A L ?
PYTHONLINE.COM
K D O P O U Ž Í V Á D R U P A L ?
GRAMMY.COM
K D O P O U Ž Í V Á D R U P A L ?
SHC.STANFORD.EDU
K D O P O U Ž Í V Á D R U P A L ?
WWW.DUKE.EDU
K D O P O U Ž Í V Á D R U P A L ?
UBUNTU.COM
LITERATURA
K D E S E D O Z V Ě D Ě T V Í C
• Pro Drupal 7 Development
• Drupal 7 Module
Development
SETKÁNÍ
K D E S E D O Z V Ě D Ě T V Í C
•
•
•
•
Komunita Drupal.cz
BRNO - 12. května 2011 – Drupal hospoda
PRAHA - 18. května 2011 – Drupal hospoda
PRAHA – konec května – Drupal setkání v Hubu
• Drupalcon London 2011, 22.-26. 8. 2011
http://london2011.drupal.org/
D Í K Y Z A P O Z O R N O S T
R O Z L O U Č E N Í A P R O S T O R N A D O T A Z Y
"Come for software, stay for
community"
Vojtěch Kusý @wojtha
http://drupal.org/user/56154
Atomic Ant Ltd.
http://atomicant.co.uk
http://atomicant.cz
Download

D R U P A L - EurOpen.CZ