What is Drupal?
Drupal is a community managed, open-source content management system – CMS, which is built as CMF – content management framework. With Drupal, you can get features like user management,
content management and access management out of the box.
Now, the question is, what is a content management system?
A content management system is either a web-based application or service which allows you to publish content, which includes assets like images, audio, video, documents etc. along with text on the web. Such CMS allows you to control who can access/view/consume the said content. And none of these steps require you to write a single line of code or to have back end technical knowledge & skills of the services/application/server it is hosted on.
There are many CMS available, commercial and community developed & maintained. Among all of them, Drupal stands out for a few reasons:
- A great community, continuously improving Drupal by fixing issues and building new features.
- Drupal is secure, robust, feature rich, CMF approached out of the box, which ensures completing the use case at hand.
- No-cost, free contributed modules & themes which are available on drupal.org and can extend the existing Drupal features further.
- A great security team monitors all the contributed modules, themes & Drupal core for any security vulnerabilities. No bug goes unnoticed & unfixed.
- Irrespective of whether you know writing code or not, you can always contribute back to the community in different ways.
- Easy to extend with your own custom code by utilizing the underlying Drupal APIs.
Here are a few out of the box Drupal features briefly:
The codebase which ships with Drupal and forms the basic building block of Drupal as a standalone, without any other custom and/or contributed modules/themes. The general idea of the core is everything that resides under the core directory.
A collection of files which follow a certain naming pattern and have specific file types, i.e.,
info.yml, install, routing.yml, libraries.yml, links[.menu].yml, composer.json, services.yml, module
etc. These files may extend any existing features of the Drupal CMS and/or offer a complete new set of features which solves a particular problem or enhance the user experience.
A single piece or collection of information which can be displayed without occupying much real estate, on page regions defined by the Drupal theme.
A specific function, defined by either the Drupal core or a contributed module. This function follows certain naming pattern convention, usually text before info.yml file i.e.,
The Drupal hooks can be triggered/invoked by the Drupal core system to enhance and/or add new features provided by a custom, core or contributed module. The motive behind triggering the hook is to alter the way Drupal core reacts/behaves upon certain events/actions.
As the name suggests, the routes define the routes that can be accessed to use features of the website. For example, in your custom module, if you define a route like admin/content/course-link, you will be able to navigate to the page that can be accessible over that route.
Views has been the most sought-after feature of Drupal. No website is published without using views extensively. The views is a functionality that fetches the data from the Drupal database, along with relations you define, and displays the retrieved information in different formats to the end users.
In Drupal, a piece of content is represented by a node. A node can have multiple fields which take different types of data – text, numbers, videos, images, tags etc. and saves them in the Drupal database. When you visit a node, which is usually accessible using node/, you can see all the information captured previously.
A page consists of multiple regions, and each such region can have one or more blocks with different kinds of information. For example, the logo is a block set, typically into either in header or navigation region.
An entity in Drupal is a type of content that end users can access/view/consume. A page, a user, a taxonomy, a product are types of different entities.
A field is an HTML field to which a type of data can be entered and saved by Drupal CMS. A field can be associated with one or more entities at any time.
In the earlier versions of Drupal, settings of a block, node, views, field, content type, taxonomy, user and all the other entities were used to be stored in the database. The latest version of Drupal – 8, 9 & upcoming version 10, are no difference. However, the fascinating thing is, you can export & import those configurations/settings and can have similar configurations on one or more Drupal websites. This saves the efforts in configuring everything again.
A taxonomy serves for categorising the content, usually referred to as nodes, on a Drupal website. This allows the site builders to display different contents on different pages in compliance with the Drupal website structure.
Cache is a mechanism which allows storing certain data on browser, and in Drupal DB to quickly serve to the user requests. This way, the page load time decreases significantly.
This is the actual content on any Drupal website and referred to as nodes. Individual nodes can have different types of information and can have different fields. The nodes can be of many types, as many as you want to create. Nodes have two aspects – 1. Form 2. Display.
- The node form displays the HTML fields which capture the information from the end users. This form is intended for end users to provide the required information.
- Once the required information is provided by the user and the form is saved, the user is redirected to the node display. Here, all the captured information is displayed as it is. Using one or more contributed modules, the site builders can amend the appearance of this information for the end users.
Since Drupal 8, site builder can arrange the form fields using ‘Form display’ and can have different layouts of the same for different use cases.
How is Drupal useful?
For different users, Drupal serves different purposes. For end users, however, it is always a win-win!
Drupal is secure. All the user information is secured by Drupal and is stored with encryption in the database. With out-of-the box caching in place, the pages load fast and decreases the wait time on mobile devices over slow networks. With a few contributed modules, end user experience can be enhanced further. With inclusion of CKEditor 5 in Drupal 9, the authoring experience is now quite excellent.
With inclusion of more tools like layout builder, site builders can alter/build page layouts without even writing a single line of code. Using configurations, site builders can import/export configurations for all the entities. This saves a lot of time. The contributed modules aid to the site builder experience and make everything easy.
Drupal core uses symfony components which makes it very modular in true sense. This allows Drupal developers to Starting from Drupal 8, Drupal takes the OOP approach.