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