Drupal Drupal Content Management System

Drupal is an open source Content Management System (CMS). A CMS uses a programming language to fetch information stored in a database, format the information, and pass it to a web server which presents the generated web page to the client's web browser. A CMS also contains administration capabilities, such as the ability to:

  1. Create users and restrict their activities.
  2. Track and revert content revisions.
  3. Log and email error notifications.
  4. Run automatic site maintenance tasks (Cron).
  5. Tune website performance.
  6. Block website access by IP address.
  7. Run reports (Access Logs, Website Status, Search Phrases).
  8. Configure system and content files.
  9. Control website user actions (make comments, transfer files).

Drupal also has the ability to:

  1. Extend website functionality by enabling program modules.
  2. Change website presentation with themes.
  3. Structure websites with menus and tag taxonomy.
  4. Control website publishing activities.
  5. Support RSS publishing and aggregation.
  6. Control website indexing and searching.

The typical software stack (AMP stack) requirements for Drupal 7 are:

  1. PHP (5.2 or higher)
  2. MySQL (5.0.15 or higher), with phpMyAdmin frequently used for DB administation.
  3. Apache (1.3 or higher)

Drupal originated as a bulletin board system developed by Dries Buytaert in the Netherlands, and became an Open Source project in 2001. Drupal is a transliteration of the Dutch "druppel" which means droplet. The Drupal logo is called Druplicon and represents a drop of water. Drupal is supported by a community of users and developers. The official Drupal home page is drupal.org.

Training for Drupal is available at drupalize.me, Drupal Camp, Level Ten Interactive, Open Source CMS and lynda.com. Examples of sites created with Drupal are: drupal.org, www.examiner.com, www.commerce.gov, www.sonymusic.com, and others can be found at buytaert.net/tag/drupal-sitesand www.backendbattles.com/backend/drupal. Support for Drupal exists on drupal.org under the areas of documentation, forums, and issues for particular modules and themes. IRC support is also available at http://webchat.freenode.net on the channels #drupal,#drupal-support.

acquia drupal www.acquia.com

Understanding Drupal drupalize.me by Lullabot

Understanding Drupal is an introductory video at drupalize.me:

  1. Content Management System (CMS) - When the web started, web pages consisted of individual files containing HTML code. Each individual page on the site was coded with an application like Front Page, Dreamweaver, or with a simple text editor. This resulted in a huge number of files each representing a web page. Maintaining all these files required a tremendous amount of work. This lead to the concept of CMS where web pages are created by programs which retrieve the content data from a database. CMS commonly use a stack of software consisting of a programming language (PHP, or one of many others), a web server (Apache), a database management system (MySQL) and an operating system (Linux, Windows, MAC).

  2. Content Management Framework (CMF) - Drupal has grown to contain a framework for developing new Drupal modules to extent functionality. Its APIs, hooks, and plug-in support allow the Drupal community to add new features. Drupal contains a clean simple core that has many hooks exposed for adding additional features.

  3. Modularized - Drupal consists of many program modules (PHP) that can be connected together to create websites with rich functionality. You begin with the core modules and then enable additional modules to add the features needed by the website. You can test the additional modules and view their source code.

  4. Open Source - Drupal is free software with a GNU General Public License (GPL) that ensures the core software, and future enhancements, will remain free of charge.

  5. Drupal Jargon

    • Content - Drupal refers to any piece of content as a "node". Node is basically the common components (title, body) for all content types (articles, pages, stories, etc). Then additional components (fields, photos, etc). are added to the basic node to construct a particular type of content. Nodes have an identifier so they can be referenced uniquely through out the system. This allows the changes to nodes to be tracked and reverted if necessary. The node terminology is used by developers, but not usually by end users. End users refer to "content types" instead of nodes.

    • Content Type - Drupal allows you to divide the content into different types (blog posts, photos, events, etc.). Each content type can be configured as to how it will display on the website. Also permissions can be set by content type so the system will control who can create or edit a particular type of content. Drupal has a group of modules called Content Construction Kit (CCK) that allows users to create custom types of content. The Content Construction Kit Handbook describes how to download and install the CCK modules. Custom content types can have default values and provides a form for data entry of the content for end users.

    • User Created Content - Older models for publishing content on web pages contained a group of developers who created the content for the web page, and a group of users who viewed the content. Drupal can allow users to help create and build content, as well as view content.

    • Users - Drupal calls a visitor to the website a "user". There are two basic types of users: anonymous users who have not logged in, and authenticated users who have logged into the website. The data displayed on the website, and the ability to interact with the website can be different for anonymous users and authenticated users. Different authenticated users can also be presented with different content and have different permissions for interacting with the website. Drupal is able to track the actions of users (content created, sessions created, cron submissions, errors).

    • Roles and Permissions - Drupal contains a role-based permission system. Different permissions are assigned to a particular role. Then users are assigned roles. The user has the permissions associated with the role(s) they are assigned. Drupal contains three roles by default (anonymous, authenticated, administrator{V7.0 only}), but additional roles can be created.

    • Blocks - Blocks are boxes of content visible in various areas of a website screen. Whether, and where, a given block will appear on a page depends on both the theme enabled and on administrative block settings <Administration><Structure><Blocks>. Blocks are frequently used for dynamic content such as who is online or a list of most recent comments. Blocks are also used for supplementary information such as information about an author. A node is usually permanent content where as a block usually contains transient or supplementary content.

    • Modules - Modules are Drupal's plugins that change the default behaviors or adds new functionality within the system. Modules are designed to interact with each other and provide a way to "build up" the functionality of a website. "Core" contains a small set of modules associated with the default download of Drupal (System, User, Filter). In addition to the core modules, there are currently 6,499 modules available for version 7.0. The small number of core modules create a very basic website (tight, lean, efficient, secure). Additional modules are downloaded and enabled to add the desired functionality to a website. Modules can either be defined as "core" or "contributed" modules, and reside in different code repositories. Most websites require modules from both categories.

    • Hook System - Drupal's hook system makes the system extensible. At certain processing points the Drupal system will stop and ask if any other modules would like to modify the content currently being processed. These processing points (or hooks) provide a way for individual modules to interface with the Drupal system.

    • Menus - Drupal contains a menu system for navigation of the website. Drupal dynamically creates a web page and stores it in "index.php". A Drupal site contains only one generated php file called "index.php". The index.php file is returned for every request and the first element in index.php is the menu system. The menu system contains every valid URL in the website. It can be considered a "page router".

    • Clean URLs - Clean URLs simplifies the URLs and makes them more user-friendly. Clean URLs hides ampersands and tildes from the page addresses and provides an alias that can be user to access particular web pages.

    • Themes - Themes are Drupal's presentation layer that determines how web pages are displayed. This provides for separation between the websites behavior and its presentation.

    • Cron - Cron is a utility for running maintenance processes on a schedule. Cron is important to site performance as it cleans up cache and log tables. It also provides maintenance functions that need to be run periodically like site indexing.

    • Caching - Drupal supports both page and module caching. When certain pages of a website require a lot of processing to build, they can be added to a cache to eliminate the need to rebuild the page for every request. This can improve performance but can make the content stale. Drupal can also cache data that is created by cpu-intensive portions of modules.

Drupal System Layers Drupal Information Flow

In Drupal the information flows between five main layers:

  1. Data (Nodes, etc) - At the base of the system is a data pool represented by a collection of nodes. Content must be input as data before it can be displayed on the website.

  2. Modules - Modules provide website functionality and can be either a part of the Drupal core or they can be contributed modules created by members of the Drupal community.

  3. Blocks and Menus - Blocks provide an area for the display of contents. Blocks can be configured to display content in various ways.

  4. User Permissions - Permissions are defined for various roles. Then the users are assigned these roles to grant them the defined permissions.

  5. Template - Also know as site themes or "skins" they control the presentation of the website. They determine how the Drupal-generated content is displayed.