You can easily build a basic website without customizing a single setting in your Drupal installation, but chances are your needs are a bit more complex.

There’s a number of ways you can add new features to Drupal:

Let’s take a look at these three options.



Optional preinstalled Drupal core modules

If you’re new to Drupal, you might not know that it comes prepackaged out of the box with a number of optional modules that you must manually activate in order to use.

If you have site content in more than one language, for example, you’ll need to turn on the four optional Multilingual modules to manage translations. The ability to store end dates in a field also needs to be activated manually.

multilingual optional modules

To access the list of preinstalled optional modules, go to Admin Extend.

Here are all Drupal core modules that aren't enabled by default:

Actions

What it does: Lets you configure tasks for your site to execute (e.g. send an email, unpublish a page) in response to a predetermined trigger event

When to activate it: If you need a simple automation solution for routine website tasks, or if you're using a module that includes its own actions

Activity Tracker

What it does: Lets you track what your content editors have been up to and displays a list of recently published content

When to activate it: If you want to keep track of what's getting published, when, and by whom

Aggregator

What it does: Allows you to gather and display RSS, RDF, and Atom feeds from external sources

When to activate it: If you wish to display aggregated content from outside your website, this might be all you need.

Ban

What it does: Lets you ban specific IP addresses from accessing your site

When to activate it: Activate Ban if your site receives malicious or spam-type traffic

Content Moderation

What it does: Lets you define custom states (e.g. draft, needs review, ready to publish) for your content publication workflow

When to activate it: If you have any sort of editorial process or publication calendar, Content Moderation is definitely helpful.

Inline Form Settings

What it does: Displays inline error messages for your forms

When to activate it: Almost always - it's an easy way to increase your site's accessibility

Layout Builder

What it does: Provides editors with a visual, drag-and-drop interface for adding and arranging blocks and content fields directly within a piece of content

When to activate it: Read this article for an overview of the two main page editing options in Drupal, Paragraphs and Layout Builder

Layout Discovery

What it does: API module that provides a way for modules or themes to register layouts

When to activate it: Layout Discovery is required if you use Layout Builder on your site.

Media

What it does: Lets you manage how media items are created, configured and displayed

When to activate it: Unless you have some kind of third-party solution for this, you'll want to activate both Media and Media Library for easier asset management.

Media Library

What it does: Adds more features to the default media list, making it easier to find and use assets that have already been uploaded to Drupal

When to activate it: Almost always

Responsive Image

What it does: Leverages the HTML5 picture tag with formatting and breakpoint mappings in order to output responsive images

When to activate it: With today's mobile-first paradigm, responsive images are a must-have. Activate this module unless you have another option to accomplish the same thing.

Settings Tray

What it does: Lets editors modify blocks directly via a page

When to activate it: If your editors have permission to edit blocks, activate Settings Tray to make it more efficient for them

Statistics

What it does: Keeps track of your site's content stats

When to activate it: You can never have too much data, right?

Syslog

What it does: Logs and records system events

When to activate it: See above.

Testing

What it does: Provides a framework for unit and functional testing

When to activate it: Use the Testing module to monitor the impact of code changes on your site

Workflows

What it does: Lets you create workflows with transitions between different states provided by other modules (e.g. publication states from the Content Moderation module)

When to activate it: If you rely on a state-based module such as Content Moderation

Experimental modules

These two optional modules are labelled experimental, meaning they should work, but you might run into some bugs. Install at your own risk!

  • Help Topics displays helper text provided by themes and modules directly in the user interface
  • Workspaces lets you have multiple workspaces related to a single site, enabling content staging and full site previews

Field types

Two lesser-used field types that you can activate if needed:

  • Datetime Range adds the ability to store end dates (e.g. to display multi-day events)
  • Telephone adds a field for storing phone numbers

Migration

Turn on these optional helper modules if you need to migrate content from another platform or from an older version of Drupal.

  • Migrate
  • Migrate Drupal
  • Migrate Drupal UI

Multilingual

You'll need all four of these to be active if your site handles content in more than one language.

  • Configuration Translation
  • Content Translation
  • Interface Translation
  • Language

Web services

Drupal comes with a handful of web service integrations you can activate as needed. You'll find many more of these in the contributed module library.

  • HAL
  • HTTP Basic Authentication
  • JSON:API
  • RESTful Web Services
  • Serialization

Going beyond Core: Tips for finding the right contrib module

You can find plugins and add-ons for all popular CMS options, but Drupal stands out for two main reasons:

  • Modules are centralized. Nearly every available Drupal module can be found in one place.
  • Modules are overwhelmingly free. While the freemium model is extremely prevalent in the CMS plugin space, Drupal's philosophy tends to discourage monetizing one's contributions to the open-source project. As a result, almost all of the community-made modules available for Drupal are available for free, forever.

If you’re looking for a community-made module to add specific functionality to your Drupal site, the official module library is your one-stop-shop. You can narrow down your search to only include actively maintained and supported modules, or, if you’d prefer an overview of what’s available, select a module category to browse.

Modules on drupal.org

For a side-by-side look at the available options for common use cases (content deployment, mapping, image management, etc.), refer to the comparison of contributed modules page.

Have it your way: Creating custom Drupal modules

If you can’t find a module that’s able to accomplish what you’re looking for, there’s always the DIY route. If you’ve never done this sort of thing before, developing your own custom Drupal module can seem a bit daunting, but there’s plenty of help available to get you started.

Here are a few things you’ll need to get up to speed with:

  • PHP, the main language involved in building custom Drupal modules, and a solid understanding of object-oriented programming
  • Common design patterns, especially dependency injection, which is heavily used in Drupal
  • PHP namespaces
  • Symphony, a PHP framework
  • PHP annotations
  • Drupal’s Plugin API

This page lists lots of resources for each topic to help you start learning.

If you’re already familiar with most of the concepts listed above, you can skip to this tutorial and try building your first Hello World module.

Make Drupal yours 

Evolving Web’s experienced Drupal team can help you build the digital experience platform of your dreams.

Whether you need advice on extending Drupal’s functionality with modules or you’d like to start building your own custom project, we offer the assistance, training, and support you need to get it done quickly and effectively. Reach out to us, and start doing more with Drupal.