You are on page 1of 49

SynapseIndia Sharing Reviews on

Drupal Development

What is Drupal?
Open Source software written in php.
A CMS or content-management
system.
A sophisticated web application
building tool.

What is a CMS?
Simply put, a CMS is a website you
build using the website itself.

A content management system (CMS) such


as a document management system (DMS) is a
computer application used to manage work flow
needed to collaboratively create, edit, review,
index, search, publish and archive various kinds
of digital media and electronic text.[1]

What can Drupal be?

blog
Forum
Online newspaper, Portal / Directory
Brocure site, portfolio, flickr like photo drop
Social community site, job post board
Video site like youtube
Project management site
CRM, ERP, SCM, Wiki
Shopping cart system
E-learning, training site
Dating site
Anything you can think of

Why use a CMS?


It helps manage complexity.
It provides a user interface (UI) for
adding, editing and publishing
content.
It provides a means for collaboration
among many to perform the above
tasks.

Why use Drupal over


Wordpress?

Wordpress was designed only to be a blog with some easy add-ons.

Drupal was designed to be more of a generalist: its for making


anything and is far more robust.

Wordpress could be the better choice for blogs since it is better at


being a blog than Drupal. This is something of debate.

Wordpress is still a sound choice of CMS for SEO and security; so if


wordpress satisfies a simpler projects requirements then by all means
use it- it is easier and faster to set up than Drupal.

Wordpress is not designed to be highly scalable to many simultaneous


users, nor does it have flexible roles, permissions, extensible content
types, nor does it have plentiful well-tested, quality add-ons. It has a
few and a lot of really poor plugins.

Caveat: Trying to force Wordpress to do something it cannot do easily


with very popular plug-ins can be worse than suffering the learning
curve of Drupal.

Why use Drupal over Joomla? (or other


CMS)

It has superior session handling for a CMS.

It has superior security.

It is a more consistent, reliable and flexible framework for


development.

It is considered better for SEO from our research.

It uses a separation of concerns architecture to cleanly and


consistently separate structure, function, form, and presentation in
layers (ie: php from data as db/xml, layout and presentation as
html and css).

It heavily uses defaults overrides in code in the form of hooks


and in themes in the form of templates. This makes it extremely
flexible.

Other CMSes do a very very bad job of at least one of the above.

Downsides to the Druup


Drupal has a steeper learning curve
than wordpress or Joomla.
Drupal and its developers make no
excuse for this fact- it is a robust,
flexible tool
That said, the drupal community is
constantly addressing usability and
user-experience issues because they
want the industry market share.

What is a UI?
UI is a user-interface, which is a
general term for the layout of
options, widgets and settings used to
configure the system or manage
content.
Site-building activities refer to
configuring settings or managing
content through the UI, such as
building navigation menus.

Drupal Structure
Drupal is a database-driven
(dynamic) application. It requires a
database.
Drupal has a core filesystem whose
functionality can be extended using
the UI itself, modules and themes.
The UI settings are stored in the
database.

Modules
Packages of files in a directory that you
upload into drupals module space
(/sites/all/modules)
Add functionality to drupal
Core Modules come shipped with
drupal
Contributed Modules are downloads
from drupal.org

Themes
Packages of files in a directory that
you upload into drupals theme space
(/sites/all/themes)
Themes adjust the site layout and
style. Like skinning your media
player.
Themes can be easily changed in the
UI.

Drupal Database
Drupals database tracks things like :

Site and Module settings,


Users information,
Access information,
Logging information,
Permissions and User Roles,
System Paths
Content and content metadata

Nodes
A node is the primary form of content
in a drupal site. At a minimum it is a
title and a body, and can be
specialized.
A page and story for example are
node types that have a specific node
settings.
A node type is a blueprint for
creating instances of content of a

Nodes (cont)
Not everything in Drupal is a node.
This is important!!
Ex: A user is not a node. A taxonomy
is not a node. An account is not a
node.
Knowing this is important for
evaluation of what can and cannot be
easily done through the UI, without
additional programming.

Layout and Regions


A Region is an area in a layout, such as a
header, footer, content, left/right sidebar
into which blocks can be placed and
arranged.
A block is a box containing some
information
A node resides only in the content area of
the layout (except in special circumstances).
Think of the content region as a big node
block that allows other blocks in it but the
node itself cant move.

Blocks
Blocks are added by modules.
Blocks can contain views, widgets,
menus, nodes (in special
circumstances), and panels.
Blocks can be moved around through
the UI
Blocks can be styled individually.

Additional Terminology
Views an interface for making
customized lists of the data
contained in the drupal database.
Panels an interface for making
customized layouts of nodes
available to the panels module.
Widgets a general term for
interactive form elements or graphs
that are enabled by modules.

Admin Menu
The administrative menu is a part of
the UI that allows one to configure
Drupals settings.
The settings available depend on
which modules are installed and
enabled.
Permissions allow users to have
administrative access to module

Users
All CMSes (wordpress, Joomla,
Drupal) have a user login system;
users have a username/pw.
Drupal also supports the concepts of
1) Roles and 2) Permissions.
Roles are user designations to groups
having the same set of permissions.

Anonymous User
A (not-logged-in) site visitor is called
a guest, visitor or anonymous
user.
Has a user-id (uid) of 0 (zero).
All anonymous users belong to the
anonymous user role (a role ID of 1)
and have a set of permissions
assigned to them.

Authenticated User
A user in drupal may belong to one
or more roles.
Every registered user in Drupal
belongs to at least the authenticated
user role.
Authenticated user role has a role ID
of 2

Root Admin User


The root user or root admin has
the ability to do anything on the site
and is a special user.
The root user has a user-id (uid) of
1.
The root user does NOT have rolepermissions to set because they are
effectively gods within Drupal.

Managing Permissions
KEY concept: if you grant permission
to an authenticated user, it applies to
ALL roles except the anonymous
user.
To grant a permission to everyone on
a site, you must grant the permission
to both the anonymous user and
authenticated user.

Managing Permissions
To grant permission to only a newly
created dentist role, tick the
permission on that role.
Leave all the other roles deselected.
If you grant to both the dentist role
AND the authenticated user role,
you would be doing it wrong. Drupal
assumes you know this.

Recipe: Change Site


Information
In Administer > Site Configuration >
Site Information:
Change the information to suit your
site following the help text.
Dont change the Default front page
just yet.
Click Save configuration

Recipe: Change Date and


Time
In Administer > Site Configuration >
Date and Time:
Change the timezone to the correct
time for America/Denver (-0600 UTC)
Change the time formats
Click Save Configuration

Recipe: Clean Urls


Clean URLs remove the ?q= from the
location bar in your web browser.
In Administer > Site Configuration >
Clean Urls:
Tick Enabled
Click Save Configuration

Clean Urls Issue


If Clean URLs is an unchangeable
option, then there is a
misconfiguration of the drupal site
hosting environment.
Contact your local IT support for
assistance or consult the drupal
handbook for more info.
For the purposes of this demo, its
not important but it -is- important to

Recipe: Add a user


Go to Administer > User
Management > Users
Click Add user
Choose options.
Click Create New Account

Recipe: Add a user


A user can also add themselves by
registering, if the root user has allowed
this option.
Go to Administer > User Management >
User Settings
Tick Visitors can create accounts and
no administrator approval is required
Click Save Configuration

Recipe: Add Roles


You will note that anonymous and
authenticated users are there by
default, undeletable.
Type in the box below the roles in the
Name column. Click add role.
Thats it.

Recipe: Edit / Delete role


Click edit next to the role name.
Here you can change the name or
delete the role.
Warning: If you click delete role,
there is NO confirmation. This can
be bad.

Recipe: Assign multiple roles to


User
In Administer > User Management >
Users:
Click the edit link under operations
for a user
Under Roles, Tick an additional role
you created.
You will notice authenticated user is
locked.

Recipe: Altering Permissions


Under Administer > User Management > Permissions:
you will see there is a permissions column and role
columns.

Scroll down to the user module section.

Tick change own username in the authenticated


user column.

Tick Save Permissions

Recipe: Build Menu


Under Administer > Site Building > Menus:

Click Primary Links


On the Primary Links List Items page, click Add Item
In Path, type contact. In Menu link title, type Contact
Form.
Change weight to 50 (drupal 6.x; 10 in drupal 5.x)
Click Save.
You will notice that Contact Form appears now on the far
right of your primary links. Click it to go to the contact
form.

Recipe: Create About Page

In the Navigation (left sidebar), click Create Content

Click Page under the content type listing.

In the Title, type About Us. In the body type This is my first drupal page.

Expand the Menu settings fieldset.

In the Menu link title type About Us.

Change the weight to 49.

Expand the URL path fieldset and type about-us

Click Save

You should now see the About Us menu item in the Primary Link navigation.
Click it to go to this newly created node.

Recipe: Get modules


Default Drupal installs can only do so much.
Go to http://drupalmodules.com to find a module
that supports what you are trying to do.
Do rely on the ratings here as they are tied to
download / popularity metrics from
http://drupal.org

Recipe : Change Site


(Admin) Email

Note: There are multiple places to change the email


address for a site root user administrator. You may
have to dig around for them in admin menu
when logged in as the root user. Get login info
from Salesforce.
In site information : admin/settings/site-information
Site-wide contact form settings : admin/build/contact
(edit operation)
Mass contact settings (if used) :
admin/build/mass_contact/settings
Mail settings (different places, ex uses mimemail) :
admin/settings/mimemail
User register notify : admin/settings/register_notify

Recipe: Halp! The site is


messed up
If the login disappears and you cant login, go to
www.yourdomain.com/user or
www.yourdomain.com/index.php?q=user
If clean URLs is not working, substitute the first
forward slash (/) after the domain/host with
/index.php?q= without the quotes.
If all else fails, call Chris or Alex to build a GUI
interface in Visual Basic to track down the
perpetrator in realtime.

Installing Modules
Download (from drupal.or) and Unpack module
tarballs (*.tar.gz) files to the folder inside.
Upload the module folder to <drupal_root>
/sites/all/modules.
Create the modules and themes directories if
they are not there.
Go to Administer > Site Building > Modules :
and tick Enabled next to the module to enable
it and click Save Configuration

Using Modules
A newly enabled module will add an
administration menu.
Go to that module and read the help
before changing anything.
Play around and learn its feature set.
Install the Advanced Help module to
get more verbose help with modules.

Modules Used on Almost every Drupal Site

Most Useful Contributed Modules


Administrati CCK
on
menu

Views

String
Overrides

Backup and
Migrate

SEO Checklist

SEO Compliance
Checker

Pathauto

Path Redirect

Global
Redirect

Search404

Meta Tags

Global GEOurl

Html Purifier

Page Title

Menu Attributes

New XML Sitemap

Site Map

Taxonomy
Manager

Token

Auto Assign Role


(+patch)

Ubercart

Date

Mollum / Spam

Captcha

WYSIWYG API

FCKEditor

IMCE

Chaos Tools +
Delegator

Panels

Actions

Triggers

Notify

Scheduler

Guestbook

Simplenews

Addthis /
Diggthis/
Sharethis

GoogAnalytics

Most Useful Contributed Modules for SEO

SEO Checklist

SEO
Compliance
Checker

Path +
Pathauto

Path Redirect

Global
Redirect

Search404

Meta Tags

Global GEOurl

Html Purifier

Page Title

Site Map

Advanced:
Open Calais
RDF metadata
WS

Menu
Attributes

New XML
Sitemap

Most Useful Contributed Modules (OLD)


Administration
menu

CCK

Views

String
Overrides

Backup and
Migrate

SEO Checklist

SEO Compliance
Checker

Pathauto

Path Redirect

Global Redirect

Search404

Meta Tags

Global GEOurl

Html Purifier

Page Title

Menu Attributes

New XML Sitemap

Site Map

Taxonomy
Manager

Token

Auto Assign Role


(+patch)

Ubercart

Mollum / Spam

Captcha

WYSIWYG API

FCKEditor

IMCE

Actions

Triggers

Notify

Date
Addthis /
Diggthis/
Sharethis
Advanced:

Advanced:
Apache Solr
Search (we
cannot support
yet)

Scheduler
Chaos Tools +
Delegator

Panels

Guestbook

Simplenews

GoogAnalytics

Advanced: Open
Calais RDF
metadata WS

Advanced: Devel
(danger)

Advanced:
PHPmailer /
SMTP Auth

A warning about using Free


and Low Cost (downloaded)
Themes

They are more difficult to customize than starting from scratch, but
faster to use.

Some of the markup is not seo-friendly.

Some of the markup is over-engineered and messy; less is more.

Free or amateur / low-cost themes can be confusing if you look at the


code; this may impair your ability to learn drupal theming.

Some of the markup may be in tables or liquid layout and this may be
hard to change for your particular project, even if it looks nice to you.

Best practice suggests you either find a theme design and mimic its
look-and-feel or do the traditional photoshop mock up.

If you take someone elses theme, you dont know what youre going
to get and this can hinder your ability to develop

Getting free themes


http://themegarden.org/drupal6/
http://drupal.org/project/Themes
http://themebot.com/free-websitetemplates/drupal-themes

Google drupal themes youll find a


bunch of stuff. Buyer beware.

Most Useful Themes


Zen
(use starter kit to
subtheme)

960 grid based


themes

Garland
(use as admin
theme)

Blarland an evil
copy of garland. Place
it in sites/all/themes
and change the name
of garland to blarland
in folder, and file
names esp in the info
file.

You might also like