Drupal was developed around 2000, as an
open source project, by Dries Buytaert,
then at the University of Antwerp, in Belgium.
Born as a message board for students, in some years
grew and become one of the most popular CMS platforms:
it was used by Howard Dean, a candidate
to the US presidential election in 2002; this contributed
to its diffusion and popularity.
Drupal is maintained by a
community, but many commercial entities support and
sell Drupal products, as Acquia,
founded by Jay Batson and Dries Buytaert, the Drupal creator.
Around 2017, more than one million
of web sites use Drupal; this is a big number but
not comparable to the number of Wordpress sites;
Drupal is much more structured and professional than the
ubiquitous Wordpress, but is more complex and requires more work
to setup and maintain. As Wordpress it has themes, addons (modules),
an easy user interface, a simplified editor for web pages,
different roles for users, an authorization scheme for
publishing. etc., all the features that we find in modern CMS.
Drupal is very configurable: the management interface has many, many
options and expose to the user a rich set of internal features.
This confuse the inexperienced administrator: Drupal is considered difficult
and made for professionals.
The frequent release of updates, whit a minor release every month,
and the lack of an automated update system for the Drupal core,
gives an additional burden to the site maintainer.
Version 7, released in 2011 had a great success,
but Drupal was restructured with version 8,
which is based on the
symfony framework,
with its template system:
twig.
This was a big change and most sites continued to use
version 7; themes and addons for version 7 must be nearly rewritten
to work with version 8 and their migration was slow.
The adoption of Drupal 8, in a world dominated by Wordpress, is
difficult and in
2017 most Drupal sites still use version 7.
Drupal has a fully configurable and rich structure:
The theme is what defines the appearance of the
site: it essentially consists of a set of twig templates and
CSS format specifications. You can completely change the aspect
of your site by only changing theme.
A Drupal theme defines a number of
regions in the web page: we have always a "main content"
region for the page content, then "headers", "footers","sidebars", etc.
Blocks are auxiliary components that can be placed into regions:
blocks are: menus, search form, page title, etc.
Also the "front page" is a block.
"Custom blocks" can also be created, the "block type"
fix its components and can be changed or defined by the user;
there is a pre-defined block type for custom blocks,
which has just two components:
a description
and a body, containing HTML text.
Page contents are composed of fields; a
"content type" property defines the available fields.
Predefined content types are:
basic page and article. The basic page is composed
of the fields: "title", "summary" and "body"; the article
has also an "image" and "comment" field.
Content types can also be defined by the user and modified,
by adding or deleting fields.
There is a "main page content block" to hold contents.
Content displays.
How the set of content fields are shown to the web site visitor,
is defined by the "display mode";
there is also a "form display",
which defines how fields are shown in the form
used to insert the content.
Also displays can be configured by the user.
Content view modes.
Depending on the situation,
a same content can be shown in different ways;
this is the "view mode". Each view mode
has it own display and form display.
View modes are: full content,
teaser (a short format used in lists), etc.
View modes can be added and changed.
Content attributes.
Contents have also many attributes to be defined
as: an "unique identifier (id)", an "URL alias",
a "published status", can be: "stick on top of lists" or
"placed in the front page".
The fields are the single element of the content, to each field
a "widget" is associated, sometimes corresponding to an html element
as: img or textarea. There are a lot of available
fields: numbers, date, email, text, lists, image.
Each field has its own configuration options.
Taxonomy is a way to classify contents; a "vocabulary" can defined,
with "terms", organized in a hierarchical structure. Each content can
be associated to one or more terms. Each term has a title and a description
and can be associated to an URL (a web page), referring to all the contents
associated with the term.
The views are collections of contents defined by filters.
Views are very configurable: have sorting options,
an header , a footer, and its items can be shown on a sequence of pages.
As the contents, they have
different "display modes". For each display mode,
a view can be shown in different "formats", as: table, grid, teaser etc.
A view is typically associated to taxonomy terms, to
define the way in which a list of contents related to the same taxonomy term is shown.
The internal structure of Drupal changed in version 8:
most features are now implemented
by modules, which can be enabled or disabled. Blocks,
comments, fields, contents, taxonomy, views are all managed by modules.
The "core" of Drupal consists of routines for basic functions,
a set of modules and some simple themes. Drupal can be extended
with modules and themes from independent contributors, which
can be downloaded from the
Drupal web site.
There are thousands of modules and themes, but most are
for version 7. When choosing a module is always a good idea to
verify if it is well maintained and if compatible with your
version of Drupal. Also the dependencies from external libraries
can be an issue.
The Drupal core is actively developed: minor releases, with
some feature added, are issued twice an year, each month
we have a bug fixes and security patches. A Drupal site
requires a constant work; updates are not automatically
applied as sometimes happens in Wordpress.