This document provides an introduction to the basics of Drupal, an open source content management system (CMS). It describes Drupal's advantages over custom or other CMS platforms, including its modular architecture, security updates, and large community. It also summarizes key Drupal concepts like nodes, taxonomy, modules, themes, and essential modules like Views and CCK. The document concludes with best practices for Drupal usage, administration, and important resources.
2. Drupal vs. My-own-CMS
• Powerful ready-to-go platform to produce web services and
applications
• Open source - Free to use and free to modify
• Open API’s provides easy expandability
• Tested and safe. Regular security updates
• Lots of prepared core functions to ease simple coding tasks
• Lots of ready-made modules and code snippets available
3. Drupal vs. Some-other-CMS
• Power and scalability based on modular architecture and API’s
• Less out-of-the-box modules and features than some others
• More development tools and small functions that enable the
user to build almost any kind of web application
• Active community, helping hand available at drupal.org
4. File structure
• Extension modules and themes
always to sites/ folder
• The modules and themes in sites/
all are shared through all sites
(multisite configuration)
• Sites/mysite.com contents
available only to one specific site
5. Drupal standalone installation
• Easy installer wizard asks for database access information and
stores them in settings.php
• Installer writes the basic tables and data into database
• By default sites/default is used
• Available as any hostname
6. Drupal multisite installation
• Easies way to install a site in multisite configuration:
• Create sites/mysite.com folder (mysite.com is your site’s
hostname)
• Duplicate sites/default/settings.php to that folder
• Create sites/mysite.com/files folder and give 777 permissions
• Run installer wizard
7. Drupal terminology I
Node Taxonomy
• The general term for all stored • Content categorization system
content; articles, pages, news... in core
• Ability to create new content •Predefined categories
types with a simple GUI (D5+) (vocabularies)
• Ability to extend content types •Hierarchical terms
beyond standard title+body
fields (with CCK module)
•Free tagging
•Single or multiple terms per
content
•Multiple vocabularies per
content
8. Drupal terminology II
• Block • Theme
Small pieces of content that are The layout and output in general
usually presented in sidebars: menu what Drupal generates in HTML
links, news topics, etc
• Core
• Module
Drupal core files, that should never
Extension modules can expand and be modified, added or removed
modify Drupal’s core funcionalities
and normal behaviours
9. User management
Users Access to nodes (in core)
• User UID 1 is the root user • Access granted per role /
• Profiles with custom fields content type
• Can be used with external • Cannot restrict read access by
authentication (LDAP, OpenID) default, except for all content
Roles ACL modules (nodeaccess)
• Access control defined by roles • Extends the core access
• User can have multiple roles control
• Show/edit/delete grants can be
given for roles and individual
users. Even per node.
10. Modules
• Always store under sites/ folder
• The core provides ‘hooks’ that
modules can attach to
• Some very often used hooks:
hook_form_alter
hook_cron
hook_nodeapi
• Developer resources available at
http://api.drupal.org
11. Themes
• PHPTemplate engine (other theme engines available)
• Zen theme (xhtml/css) - great, clean way to start theming
• Overriding theme functions without modifying or breaking
any code in core/modules
• Block regions - can be added when needed
12. Essential module: Views
• GUI to build queries from content, users, files
• Multiple displays (page, block, embed)
• Type how the data is selected from database (full nodes/
fields)
• Output styles (list, table, node view)
• Filters (=‘WHERE’ clause), sort order definable
• Arguments provide way to modify the filters based on URL
13. Essential module: CCK
• Drupal allows creation of new Some commonly used fields
content types (e.g. page, news, (fields are modules that expand cck)
event)
• Text field
• Regular content type only has fields
• Select list
title and the body text
• CCK allows content types to be • Image field
extended easily with additional fields • File field
• Date field
• Link field
14. Node API
• Enables modules to interact with nodes. Data can be added,
modified and removed
• Additional data can be shown when node is shown
• hook_nodeapi is called when nodes are stored, edited,
viewed, deleted, searched, etc...
15. Form API
• API that handles programmatical form creation and renders
them as usable HTML forms
• All system forms and forms provided by additional modules
are created using Form API
• Modules can modify forms that are created by other modules
16. Menu System
• URL to callback mapping
• Modules can implement new menu items, that initiate a
function when a user enters a certain URL
• Menu items can be displayed as
• Links in navigation
• Tabs
• Hidden callbacks
17. Input formats
• Filtered / Full HTML for standard text and HTML content
• PHP Code allows PHP code to be run as a part of the node
• Simple code can be put in nodes
• More complex code should be put in a module instead
• Input format modules can be added (wiki, textile, etc)
18. URL aliases
• Essential part of succesful search engine optimization
• Manual paths can be given to any node or other paths
• Pathauto provides automatic URL creation mechanism based
on user-definable terms and other data, for example
mysite.com/news/2009/01/05/my-news
19. Updating Drupal
• Drupal core should be kept up-to-date
• Updates can be rolled by overriding the core files and run
update.php script
• Minor version updates should be always safe
• Major version updates are usually not recommended because
of module incompatibilities and significant code changes
• Backup the database manually prior to every update
20. Good practices
• Root -user should be used only for low-level configuration
and an additional admin role should be created
• Use a right role for the right kind of task when testing
• End user usually runs into problems that the admin role
didn’t encounter
• Set-up framework first before adding any content (languages,
user management, pathauto’s, etc...)
21. Valuable resources
• Pro Drupal Development (2nd edition) book
John VanDyk, Apress 2008
• http://drupal.org forums and module issue cues
• http://api.drupal.org
22. About the author
Juha Niemi (Mr.) is the lead web developer and
entrepreneur at Juha Niemi Design Ltd,
Finland. He has been using and committed to
Drupal since 2006.
http://www.jnd.fi