Drupal is a content management framework (CMF) that can be used to build web applications and websites. It provides features out of the box for content creation, user management, navigation, and customization. Drupal has a large community of contributors and modules that allow it to be expanded and customized for any need. All content in Drupal is represented as nodes that can have custom fields defined and displayed in different ways using views. Modules, themes, languages and hooks allow Drupal to be fully extended.
1. Drupal
Community Plumbing !
Lisbon, 27th May 2010
Hernâni Borges de Freitas
"
2. Ok, I want a web app !
Common difficulties:
From the ground - Hard to build and maintain an app from zero.
From the top - Hard to customize features, look & feel and specially
small details.
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
client needs.
Alone in the dark – when problems occurs hard to understand the
problem and correct the problem.
3. Traditional Receipt
Use a Framework
Define your models, actions and
controllers and mix up:
RubyOnRails, CakePhp, CodeIgniter,
Symfony, Zend Framework,
Django,etc....
Use a CMS
Features and UI already defined:
Joomla, WordPress, SharePoint, Ez
Publish, etc..
5. CMS Highlights
Shipped in Drupal core you get:
Easy content creation, versioning and categorization
User & Roles Management
Navigation configuration
Look&Feel customization
MultiSite/MultiLanguage
Reporting
Caching
Routing
6. Framework
Core can be expanded through hooks.
Aspect Oriented Programming.
Hooks are available on main functions
Content creation, user register and login,
url routing,
Modules can define its own hooks.
All content should be themable and
translable.
7. Evolution
Started as university project by Dries
Buytaert in 2000 in Antwerp.
Actually runs 1% of the web !
Developers
800 contributors to core
5000 modules provide almost any feature.
3000 developers in last drupalcon SF
Several distributions, based in drupal.
8. Rockstars !
Entreprises (Inside/Outside the fw)
Government Entities
Media
Universities
Personal / Comunnities Sites
Freelancers / Web Companies
15. Represent Information !
Everything is reduced to a node
Node has basically
Type
Title
Body
Fields
Revisions
16. CCK - Model it !
Every node type can be seen as a domain class, having
attributes (fields).
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.
17. 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,
terms).
Powerful query builder for all your information.
18. Blocks & Panels - Organize it !
Modules can define blocks.
Each block can be deployed in different regions, pages and to
different users.
Panels allows you to drag and drop content in your page.
Almost any content can be dragged anywhere.
19. Hooks - Extend it !
Extension available by defining new modules which
implement certain hooks.
Modules inside /sites/all/modules or /sites/default/modules
Common hooks
hook_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL)
hook_user($op, &$edit, &$account, $category = NULL)
Hook_menu
Hook_block
Hook_perm
Hook_install
20. Module – Just use it !
Popular Modules
CCK and derived (Filefield, Date, Embedded media fields,
Location)
Wysiwyg
Views (Gmap views, Calendar, RSS/XML output).
ImageApi/ImageCache
Notifications
Pathauto
Workflow & Rules
Auth Modules (LDAP, Fb/Twitter Connect)
Solr Search
21. Languages - Translate it !
Drupal core and modules can be translated to different
languages
When showing text from
T(‘text’) or l(‘text’) - verify if there is an available translation to
current language.
Content can be translated using different versions for the same
content.
Structure can be translated.
Core is translated to 40+ languages.
22. 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
template files.
Themes and modules can override module output by redefining these
functions.
Currently around 900 themes available.
23. HELP ? – Get it !
Drupal.org
Check if any module/path/code snippet provides the solution
Don’t be afraid. Really helpfull community!
Drupalmodules.com
Themegarden.org
Books
Drupal em pt
http://groups.drupal.org/portugal
http://groups.google.com/group/drupal-portugal/