What is Drupal ?
Drupal is a Content Management System (CMS) which lets you quickly and easily create a website and content without having to understand any of the underlying technology. In this context it matches Wordpress and Joomla and many other content management systems available to you on the internet.
Drupal lets you rapidly set up a website and add content interactively. It is more sophisticated than Wordpress and is designed for a website which may have many contributors and users who can view and comment on content.
The power of the software and the ease in which many people are able to contribute makes it particularly suitable for media companies and charities and many publications and organisations use Drupal for their websites. Some famous examples include the Save the Children, the Economist and the Financial Times and the White House.
Core Drupal allows you to specify content types for your web pages and quickly set up an environment for many authors to create content. You can download a theme that gives your website a specific look and feel with your organisations colours and logo or you can find a themer who will customise the look of the website to your exact design whilst maintaining all the Drupal functionality.
Drupal is Open Source software and there are thousands of contributed software modules that can be installed easily to extend the functionality of core Drupal. Some modules are used in many Drupal installations to provide, for example, support for media such as photos and videos or for groups of users to share common data in a social way. Other modules provide specific functionality such as text messaging or mapping and are used when required. There are literally thousands of modules (of varying quality!) providing a host of functionality available for download to your Drupal installation for free.
Drupal is open source and extensible and many consider it a programming framework for websites. The technology is slightly old-fashioned but provides a rock solid development platform for building custom functionality for your website provided you can find an experienced PHP programmer. There are plenty of resources (books) available for your programmers to program in a way that is compatible with other modules and perhaps get you in a position to contribute the developed code back to the community for installation on other Drupal sites.
It is important to understand the terminology of the building blocks that make up a Drupal installation and these are described below and throughout the rest of the course.
Broadly speaking, each web page displayed by Drupal is known as a node. Nodes are referred to with the rather cryptic URL http://drupalsite?q=node/56 but can easily be renamed to a meaningful long name by changing the individual node properties when you create content. The concept of a node for every piece of content allows Drupal functionality to be built around every page so that the menu structure of the site or search functionality or other features can be applied to each and every web page.
A content type is specified for each node (web page) detailing the different elements available. Drupal installs some default content types to allow you to create simple pages or articles (pages with an image) or blog entries. These are simple content types containing a title and body text and a picture in the case of articles.
Each content type has properties defined against it to determine, for example, whether the content is automatically published on the website or whether it needs to be checked before being released. Permissions can be set up for each content type so that only certain users are allows to create or edit each type.
Drupal 7 makes it very easy to configure your own content types by adding fields to specify the content available on each page so you can define a web page with a heading, some content, an image, and a video for example.
A field specifies a type of content for example a text field that specifies a telephone number, or some html that references a You Tube video, or a collection of values making up an address, or a location and so on. A field is defined together with the content type it first appears in but the data is stored independently of the content type and the same field can be used on different content types.
Drupal has a built-in field type used to organise content known as taxonomies. Each taxonomy has a list of terms known as a vocabularly which can be attached to a node to allow content to be searched for and organised efficiently. Additional modules (views and panels) also access and organise content but a taxonomy is the Drupal core method for organising and associating content.
Drupal refers to users of the website as people and each is given a number of roles that determine what they are allowed to do on the website. A guest visitor does not have a role and the default role for any logged-in user is 'Authenticated User'. You can create your own roles to help specify the security and permissions on the site and the Drupal administrator sets up permissions for each role so that a logged in user can add comments for a particular content type or create content for a blog or selected content types.
Themes define how the final web page will be displayed on the web site. The Drupal system will work out the content for each node and then pass all the content over to the theme to perform the final rendering of the html. That means that a theme can completely control the look and feel of the website without needing to know much about the functionality implemented on the site and you can pick from a range of themes (or develop your own) to create the look and feel of the site.
Each theme defines a number of regions that can contain content. A web page is usually created for each node and there is an area on the theme for displaying the page title and the page content taken from the node. Typically there are additional areas defined for the menus and a header and footer and left and right side bars. Each of these areas can be filled by a block containing content that supplements but is often not connected to the node.
Drupal has a number of menus specified by default that can easily be defined by the administrator and are included in most themes. The main menu is used to navigate around the site and can be specified easily when creating a node and reorganised using the administration area of Drupal. A secondary menu is also specified in many Drupal themes and a navigation menu is displayed by Drupal when a user is logged in giving easy access to create content, modify their account details and so on.
The menu preferences for each node allow the author to specify menu options to add the page onto the site navigation. In addition, some themes define areas at the top or bottom of the web page which can contain links (usually specified in a block) for additional navigation around the site.
Blocks are content types typically displayed on a page alongside the content type from a node. They might contain user information, advertising, a list of the currently online users, or a huge range of functionality according to the configuration of your Drupal website. The point about blocks is that they are usually configured to show up in one of the regions defined in your theme.
The functionality behind Drupal is created by the modules that have been installed. It is a simple process to install modules (you download from www.drupal.org) but you need to take care to investigate the reliability and compatibility (with each other) of each module and take note that some carry a performance penalty. An experienced PHP program can develop custom modules that extend your site is almost any way possible.