What Should I Know First?
Be familiar with databases and PHPMyadmin, have a
web server and a local database server
Server admin skills, a lot of curiosity, and some time
to spend learning how modules work together and
Main Drupal Topics
1: Understanding Drupal Core
3: Conﬁguring Core
4: Conﬁguring Modules
5: Best Practices
What Is Drupal?
Content Management System (CMS)
Framework - Content Management Framework CMF
Open Source - Under GPL General Public License
Web Application Framework - Written in PHP
A way for developers and non-developers alike
to manage content. Uses control panels rather
than straight code.
Created By Dries Buytaert
Developer from Antwerp, Belgium
Derived from “Druppel,” the Dutch word
for “Drop” which also means village in
Best PHP Open Source CMS from Packt Publishing
Best Overall 2008 Open Source CMS Award for
Second Year in a Row
It does everything Wordpress does, and a lot more
Its code is cleaner and better supported than
Is one of hundreds of CMS, but is continually
Now a large community of developers and designers
all work on Drupal and talk to each other
irc.freenode.net - #drupal, #drupal-support
Conferences - DrupalCon
Unconferences - DrupalCamps
I organize the Drupal Meetup Group here in
Drupal Planning Stages
Prepare the concept of your website:
What’s the main idea? Figure out what kind of
content you want to serve. *CONTENT IS KING.
Create a basic sitemap and features list.
Go shopping for:
Drupal Is Platform Agnostic
Allows for modularity and extensibility
You can install:
Apache/ IIS / Unix / Linux / BSD / Solaris /
Windows / Mac OS X
Database Independence: you can use both MySQL
and PostgreSQL (ask me about even cooler stuff)
The Drupal “Stack”
Apache (lighttpd, IIS)
MySQL (PostgresSQL, SQL Server, Oracle)
PHPMyAdmin for adminisering your SQL Database
Linux (BSD, Mac OS, Windows, Solaris)
(Views Is Basically a Query Builder)
Displaying Page To Browser
1. Browser retrieves dynamic information from the database.
2. Browser checks retrieved data against relevant output filters.
3. Server Inserts information into each core template.
4. Theme Engine Merges template files into template.php
5. Browser displays formatted page in the Web Browser.
Multiple Template Engines Available, though the most
common is PHPTemplate
Total customization possible by using
Writing custom template ﬁles
Overriding template.php functions
Writing a subtheme
Separating Design & Logic
• .info files define your theme
• More templates = more control, better
• Better phptemplate_variables()
• Theme inheritance makes subtheming and
• Pure CSS themes are also possible
Drupal “Core” Allows You To:
Customize the layout with regions and block and any number of pages.
Personalize logos, settings, themes, add blocks and customize templates
Use a multi-level menu system - primary, secondary, tertiary, whatever you like
Allow multiple people to create and edit content
Utilize “roles” and ﬂexible account privileges
Use a hierarchical taxonomy to categorize content, use tagging
Access statistics/logging and use advanced search functions
Wrapper that interfaces
Drupal Template Language
• Understands HTML & PHP Statements for Dynamic Data
• Comes installed, so you need not touch it.
• File Extension - *.tpl.php
• Handles - page.tpl.php, front-page.tpl.php, node.tpl.php,
block.tpl.php Template Files
Blog Post 1
Who’s Online node.tpl.php
Syndicate Blog Post 2
Each Template Handles
A Region of Your Site
• page.tpl.php - Entire Page
• front-page.tpl.php - Just Front Page
• block.tpl.php - Blocks
• comment.tpl.php - Comments
• forum.tpl.php - Forums
Template Hierarchy -
Specific before General
Home Page Nodes
Download the Acqiua Drupal Stack Installer
Run installation GUI
Set up Database name and click through to see your
new Drupal Site!
Acquia Drupal Stack Installer
3rd Party Server: Make sure host supports Drupal
stack, upload ﬁles and create database on server.
Other Installation Options
XAMP - Windows, Does not work well with Mac.
WAMP - Windows
MAMP - I use this on Mac OS X
WampServer - This is the one we will use if the Acquia
Stack Installer does not work out.
Installing on 3rd Party
Shell/ SSH / Command Line
User name and password
Host (localhost on your machine)
Administration menu module provides a theme-independent administration
interface (aka. "navigation", "back-end") for Drupal. It's a helper for novice Drupal
users coming from other CMS, a real time-saver for Drupal site administrators, and
deﬁnitely a must for Drupal developers and site builders (keyword: Devel
The module renders all administrative menu items below 'administer' in a clean,
attractive and purely CSS-based menu at the top of your website. It contains not
only regular menu items - local tasks are also included, giving you extremely fast
access to any administrative resource and function your Drupal installation
What You Can Do With Core
Enable your blog
Conﬁgure your site
Create blocks & move them around
Create the ﬁrst user
Go to admin page - handle errors
Site conﬁguration - ﬁle system
Enable clean URLs
Creat roles and 2nd user
Enable Taxonomy to Create Content Categories
Install admin_menu before doing anything else
Creating News (For example)
1. Create Vocabulary (administer>>categories>> add
vocabulary tab called “News” with “story” checked
under “Types:”, “Hierarchy:”, set to “Disabled”, uncheck
“Multiple select” and check “Required”
2. Create terms (administer>>categories>>add terms)
Under this “News” Vocabulary as follows: “News,”
“Media Releases” and “Events”
Allows you to add custom ﬁelds to nodes using a web
Drupal comes with core content types like story and
blog. For each content type, I can go to 'create
content' and submit a new story, blog entry, etc. That's
great if I can tailor my content needs to ﬁt those models
of pure chunks of text with or without attachments.
Provides a ﬂexible method for Drupal site designers to control how lists and tables
of content (nodes in Views 1, almost anything in Views 2) are presented.
Traditionally, Drupal has hard-coded most of this, particularly in how taxonomy and
tracker lists are formatted.
This tool is essentially a smart query builder that, given enough information, can
build the proper query, execute it, and display the results. It has four modes, plus a
special mode, and provides an impressive amount of functionality from these
Editor interface and button functionality are completely
customizable through administration pages.
It supports role based editor interfaces.
It's possible to create image or text buttons.
Buttons can be customized to generate code snippets,
html tags, bbcode tags etc.
Used as a ﬁle browser in many popular rich text editors
such as FCKEditor, TinyMCE, WYMEditor, Whizzywig
It can been also used for inline image/ﬁle insertion into
textareas. This is a built-in feature that can be used
stand-alone or with a text editor such as BUEditor.
Conﬁgurable upload paths allow you to save ﬁles into
per-ﬁeld or per-user directories
Per-ﬁeld and per-node ﬁle size limits
Extensive API for extending ﬁeld widgets and managing
Full revision/translation ﬁle management
Provides a checklist of good Drupal SEO (Search
Engine Optimization) best practices.
Provides a checklist that helps you keep track of what
needs to be done.
Looks to see what modules you already have installed.
Then, all you have to do is go down the list of
unchecked items and do them.
When all the items are checked, you're done!
Spam Control - Mollom
Google Analytics - drupal.org/project/google_analytics
Pathauto - drupal.org/project/pathauto
Token - drupal.org/project/token
Update module - drupal.org/project/update_status
Don’t Hack Core!
Account and Roles
Plan for future upgrades
Back up both the database and the ﬁles regularly
Use sites/all/modules and sites/all/themes
Avoid spaces in any directory name
Me: Lauren N. Roth
Assisting at Installation Fest Wednesday July 15th at
7:15pm - Union Park downtown
Speaking at Drupalcamp Dallas in early August
Introducing Drupal at Austin Developers and Designers
Meeting on August 11th