Community Plumbing !
Lisbon, 27th May 2010
Hernâni Borges de Freitas
Ok, I want a web app !
From the ground - Hard to build and maintain an app from zero.
From the top - Hard to customize features, look & feel and specially
Reiventing the wheel - Need to rewrite code/UI between all your
projects, usually with worst results than using something done before.
Rock solid – But hard to maintain and to change when you or your
Alone in the dark – when problems occurs hard to understand the
problem and correct the problem.
Use a Framework
Define your models, actions and
controllers and mix up:
RubyOnRails, CakePhp, CodeIgniter,
Symfony, Zend Framework,
Use a CMS
Features and UI already defined:
Joomla, WordPress, SharePoint, Ez
Shipped in Drupal core you get:
Easy content creation, versioning and categorization
User & Roles Management
Core can be expanded through hooks.
Aspect Oriented Programming.
Hooks are available on main functions
Content creation, user register and login,
Modules can define its own hooks.
All content should be themable and
Started as university project by Dries
Buytaert in 2000 in Antwerp.
Actually runs 1% of the web !
800 contributors to core
5000 modules provide almost any feature.
3000 developers in last drupalcon SF
Several distributions, based in drupal.
Entreprises (Inside/Outside the fw)
Personal / Comunnities Sites
Freelancers / Web Companies
Represent Information !
Everything is reduced to a node
Node has basically
CCK - Model it !
Every node type can be seen as a domain class, having
Fields can have different types (text, numeric, links, references,
media, location coordinates).
Fields edited by different widgets (drop-down, textfields,
media browsers, maps..)
Fields can be shared between node types, related with other
fields and its display can be customized.
Views – Filter and show it !
Select which entities you want to show.
Select how do you want to show it (table, list, grid, xml/json/
rss output ?)
Select which fields you want to show.
Select how do you want to filter entities (type, attributes,
Powerful query builder for all your information.
Blocks & Panels - Organize it !
Modules can define blocks.
Each block can be deployed in different regions, pages and to
Panels allows you to drag and drop content in your page.
Almost any content can be dragged anywhere.
Hooks - Extend it !
Extension available by defining new modules which
implement certain hooks.
Modules inside /sites/all/modules or /sites/default/modules
hook_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL)
hook_user($op, &$edit, &$account, $category = NULL)
Module – Just use it !
CCK and derived (Filefield, Date, Embedded media fields,
Views (Gmap views, Calendar, RSS/XML output).
Workflow & Rules
Auth Modules (LDAP, Fb/Twitter Connect)
Languages - Translate it !
Drupal core and modules can be translated to different
When showing text from
T(‘text’) or l(‘text’) - verify if there is an available translation to
Content can be translated using different versions for the same
Structure can be translated.
Core is translated to 40+ languages.
Themes - Beautify it !
Several template systems available, PHPtemplate most popular.
All content should be outputed through theme () functions.
Theme functions look to templates suggestions in functions or
Themes and modules can override module output by redefining these
Currently around 900 themes available.
HELP ? – Get it !
Check if any module/path/code snippet provides the solution
Don’t be afraid. Really helpfull community!
Drupal em pt