Recommended extensions

by Gisle Hannemyr

This page is a placeholder.

Table of contents

Introduction

Drupal sites can be extended with hundreds of additional modules available for free download. In this chapter, 14 of the most useful will be described.

[Break out installation and usage in separte chapters in the Drupal notes.
See installment for Webform to see wanted format.]

Choosing an extension

Before I list the contributed extensions I frequently use when building a Drupal website, some general advice about choosing a Drupal extensions.

Each project hosted on Drupal.org, whether a module or theme, has its own project page. A screenshot of a typical Drupal project page is shown below.

project01.png
Figure 22-1: Project page for the Token extension on Drupal.org.

When looking for a contributed module that may solve a particular problem or provide a desirable feature, you may get a rough idea of the “health” of the project by looking at some metrics about the project available on the Drupal.org. Below is a list of the metrics I always review when I consider making a contributed project part of a website:

To learn how to find these metrics, please examine the screenshot above of the Token project page.

The user name of the person who initially created theproject is listed after “Created by” above the project description, but the creator may not maintain the project. The current owner, maintainers and co-maintainers are displayed in the right sidebar. The right sidebar also gives an overview of all issues (i.e. bug reports and support requests filed by users) in the project's issue queue. In this screen shot, you can see that there there has been 1 725 issues filed during the project's lifetime, and that there is 447 open issues. To drill down on these, click on the link to the open issues. That will take you to a report with exposed filters that let you examine the issue queue in detail.

Under the heading "Project information" you can find the total number of sites using this module. These are computed from statistics collected by the core Update module. If you click on the number, you open the "User statistics" page for the module, breaking it down to versions. A project with only a few installations of the relevant version, a lot of outstanding bugs, poor documenta­tion, and an absent or un-responsive maintainer is probably not worth spending time on.

In the same place, you can find the project's category (or categories). Here these are "Rules" and "Utility". Each is a link that takes you to all extensions in this category. Use this to browse for alternatives-

Near the bottom of the page, under the heading “Releases”, are the commands to install the project using Composer. download links to the packaged releases available. In this case, four different releases are shown. The project has a recommended release for Drupal 10 and 7. The recommended releases are version 8.x-1.10, released 4 December 2021, for Drupal 9, and version 7.x-1.9, released 12 January 2022, for Drupal 7. Finally, there are also development snapshot releases available: Version 8.x-1.x-dev and 7.x-1.x-dev.

Notice the green shield next to two of the releases. The shield indicates that this is a stable release, and is covered by Drupal's security advisory policy. On a production website, best practice is to only use extensions with security advisory coverage. This means that other releases should only be used for testing and evaluation purposes.

See alsoTo find the best suited contributed project for a specific task, also see the community documentation: Comparisons of contributed modules, and the Similar Module Review group. Both resources offers capsule reviews and feature comparisons of modules that offer similar functionality.

Most Drupal extensions are maintained in independent, parallel branches, e.g. (e.g. a 7.x-branch and a 8.x-branch). Often, totally different teams of maintainers work on each branch. One team my be responsive, the other team may have lost interest and abandoned the project. When looking at the metrics, concentrate on the metrics attached to the version you're interested in.

Further considerations om chosing extensions:

Drupal extensions consume space and resources:
One thing to keep in mind is that although the contributed Drupal extensions are free of cost, they are not bulk-free. Unused extensions can consume a lot of space and resources. This will make your Drupal website heavier and slower. Before you install an extension, make sure you really need it. Also check if the Drupal core or an extension you already use can perform the desired functionality. Don't hesitate to abandon extensions that are mariginal or hardly used to make your website healthier and lighter.
Prefer actively maintained extensions:
You should choose extensions that are actively maintained, updated and published by its developers. Mostly because if you run into security vulnerabilities or any other issues you'll likely get a quicker response from the developers if the extension is actively maintained. Also, you'll have a much better chance that bugs are fixed in a timely manner.
Prefer popular extensions:
Popular extensions receives most eyeballs. This usually means that you can trust the extension to do the job securely and with less issues. In the extension's project page on Drupal.org, you can see how many sites that currently report using this module. If you have a choice, pick the one installed on most websites. The Project usage overview on Drupal.org ranks the contributed projects by popularity.
Examine the issue queue:
On the right side of the extension's project page on Drupal.org, you can find the number of issues and bugs (open and closed) associated with the extension. Clicking on the link will show you a detailed report of all bugs and other issues which will help give you a sense if the extension will provide the functionality you're looking for. The "Last Updated" date can also give you an idea of how responsive the developers are in solving issues
Keep a diary:
There is a lot of contributed projects around. You, or one of your collegues may install a Drupal contri­bu­ted project, and days or weeks later look at the list of projects that are installed on your website without being able to remember when, why or by whom a particular module from the project was enabled. The diary may be on paper (e.g. in a spiral notebook), or you may use the Project Documentation project to have the diary in your site's database.

noteThere exist a lot of contributed extensions for Drupal! However you should be careful when picking extensions to use on your own site. The more extensions you enable, the bigger the strain on your website. Some badly designed extensions may break your site by consuming too much memory or by introducing database errors. And even a well-behaved extension will increase the number of code lines executed, memory footprint, and number of database transactions. Installing more extensions increases the complexity of the site, making it harder to debug and maintain. When tuning a site for production, make sure you disable and uninstall unnecessary extensions, and remove those that are unused.

Useful extensions

Thousands of contributed extensions exist for Drupal. It is not possible to keep track of them all. Also, the quality of contributed extensions are very mixed. You do not pay anything for this free software, and some people say that you only get what you pay for. Personally, I think this saying is unfair. Yes, some free software is badly written and not worth the trouble, but some of it is excellent. When using free software, you just have to find the gems and avoid the duds.

See alsoThe projects listed in this chapter provide features for end-users and content editors. There also exists contributed projects that may be useful for developers. Some of these are described in another chapter, as Drupal projects for developers.

For what it is worth, below is the list I've compiled of Drupal contributed extensions that I often make use of. Knowing about these extensions and roughly what functionality they provide may come handy when you set up a new website.

Admin Toolbar

Admin Toolbar module is extremely useful for site admin and site builder navigation. It's not that the default Toolbar isn't useful, but it's not as user friendly. This module extends the functionality of the toolbar by offering drop-down menus that allow easy access to various admin pages. It also offers a submodule to extend its functionality called Admin Toolbar Extra Tools. This submodule adds even more helpful links to the admin menu to perform tasks like flush cache, run cron and more.

CAPTCHA

The CAPTCHA module lets you place a so-called CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart") within web forms to determine whether the user is human.

A CAPTCHA is a random puzzle that site visitors must solve in order to submit a webform. Most often, it is a small graphic image that contains a printed word. The word in the image has to be typed into a form before a user can complete some action on a site. CAPTCHAS can also be basic math questions (for example, your visitor has to type in the answer to “2+2”), or it can consist of a string of text about which the visitor is asked a question (for example, “What is the third word in the phrase fonom lulkul ruku gert?”) Using a CAPTCHA keeps spammers from being able to use automated programs (spam bots) to spam your site with lots of fake comments that are actually advertisements for prescription drugs, online casinos, or other questionable services.

tipWhile using a CAPTCHA is a good idea, it doesn't stop humans from posting spam. It only prevents automated spamming, programs that locate Drupal sites and root through them looking for places to add spammy comments. I highly recommend you moderate all comments in addition to using the CAPTCHA plug-in. This may seem like overkill, but CAPTCHA limits the amount of spam you have to wade through so you have a manageable number of comments to moderate.

After you have uploaded and activated the module, you can configure where CAPTCHAS appear in your site by choosing Administer » User Management » Captcha (see figure 22-2).

[Figure 22-2: CAPTCHA interface]

You will see a list of form types on your site and a drop-down menu that allows you to select which of the three CAPTCHA types – text, image, or math – that must be answered before a form can be successfully submitted.

The Image CAPTCHA tab gives you some options to control the image CAPTCHA. You can specify font size, which font to use, what characters should be used, and what colors to use. The Distortion and noise section lets you control the appearance of the text by adding noise and distorting the letters. If you do distort the text in your image CAPTCHA, make sure you test it a few times to ensure that it is still readable.

technicalHacker techniques grow increasingly sophisticated all the time. Image CAPTCHAS work best when they are a little difficult to read. Optical character recognition programs, the same algorithms used to allow scanned documents to be output as text, can easily scan CAPTCHA images and extract the text, so adding a bit of noise or distortion can help foil them.

The Text CAPTCHA tab allows you to create and use your own phrase for visitors to answer rather than the random gibberish it produces.

External Links uses jQuery to differentiate between external and internal links on a page. It provides three configurable features:

  1. Open an external links in a new browser tab.
  2. Add an external icon to a hyperlink to indicatg it will take you offsite.
  3. Add a mail icon for mailto:-links.

Forward

Forward module adds a “forward this page to a friend”-link to each node. This module allows users to email an URL to a specific node or other entity on your site to a friend. You can customise the link text and icon and choose the view modes on which the link appears.

[Instructions for installing and use.]

Frequently Asked Questions

The Frequently Asked Questions module allows aministrators create question and answer pairs which they want displayed on a FAQ page.

Many websites benefit by having a FAQ page where you can answer questions about the purpose and function of your site. The FAQ module allows you to easily create one without having to worry about formatting a page for it.

As soon as you add this module, a link appears in the Navigation menu (see figure 22-3).

You probably will want Frequently Asked Questions to appear as a link in the Primary menu. To do this, follow these steps:

  1. Choose Administer --- Site building --- Menus --- Navigation. Find the Menu item Frequently Asked Questions and click the Edit link to the right.
  2. Find the Parent item drop-down, and scroll down to choose the "Primary links" option.
  3. Click "Save".

The Frequently Asked Questions link will now appear in your Primary menu.

Figure 22-3: FAQ configuration

Google Analytics

This is probably the most obvious, but the Drupal Google Analytics bridge module adds Google analytics tracking system to your website. Using this Drupal module, all features of Google analytics can be accessed and integrated with your website. It allows for domain tracking, users tracking, monitoring tracked links, monitoring downloaded files, site search, Adsense support and much more.

Specbee: How to.

Group

The Group module allows you to create arbitrary collections of your content and users on your site and grant access control permissions on those collections.

Paragraphs

The Paragraphs module provides an alternative to using a WYSIWYG editor for content creation.

If you're hoping to stave off any complaints from your content producers, put power in the hands of content authors and editors by allowing them to create flexible and structured content easily with the Paragraphs. They can now easily add various paragraphs field types like images, text blocks, quotes, slideshows, videos and so much more.

Using the familiar node edit form, they can add/play around with paragraph items and place them wherever they want to. It also offers widgets which will allow drag and drop functionality, duplicating paragraphs and many other features that can elevate user experience while working with the Paragraphs module.

Pathauto

The Pathauto module automatically generates URL (path) aliases for various kinds of content (nodes, taxonomy terms, users) without requiring the user to manually specify the path alias. This automatically creates human-readable and SEO-friendly and well-structured URLs.

Site admins can also change the pattern system by changing the tokens it uses.

Redirect

Nobody likes broken links, especially not Google. If you've changed your URL structure or have opted not to serve that content anymore, you can avoid making the Internet angry with the help of the Redirect module. This helpful module makes creating URL redirects easy.

SEO Checklist

Project page: SEO Checklist.

This handy module creates a page that recommends other modules and techniques to make your site more visible to search engines. This means that when someone is searching for a service your site provides or information on your site, it will appear closer to the top of the list in search engines. This makes it more likely that the person searching for information will click on the link to your site. The practice of making your site more search-engine friendly is known as search engine optimization (SEO).

When you activate the SEO check list module, it creates a check list with sug- gestions for modules you can add to optimise your site for search engines. To get to the check list, choose Administer --- Site configuration --- SEO Checklist.

You see a list of checkboxes (see figure 22-6).

As you check off each one, you click the Save button to keep track of what you have finished from the list. Most involve the installation of additional modules.

Figure 22-6: "SEO" checklist

Chances are it is too time consuming to work through the entire list in one sitting, so you can save the form. The next time you choose Administer - Site configuration - SEO Checklist, the items you have finished will still be checked off.

A few of the modules I mention in this chapter are on this list, so when you finish you can check off Sitemap and CAPTCHA.

Sitemap

Project pages: Site map [?], Sitemap.

Note that here there are different projects for Drupal 7 and Drupal 10.

As your site grows, it's important that visitors be able to find the informa- tion they are seeking. Creating a site map can help, and the Site map module automatically creates one for you. To create one, choose Administer --- Site configuration --- Site map. This opens the Site map form, shown in figure 22-8.

The form allows you to enter text to appear at the top of the page. You can specifically include menus and front page content if you wish. Click Save con- figuration to generate your site map.

You have to activate the site map by changing the Permissions. To do this, follow these steps:

  1. Choose Administer --- User management --- Permissions.
  2. Scroll down to site_map module and click in the checkboxes to the right for the roles you wish to see the site map.
  3. Click Save permissions.

The newly created site map is located on your site under yourdomain- name.com/sitemap. For example, mine is at http://drupalnewbies.com/sitemap. You can link to the site map as you would any other page by adding a link in one of your menus.

Figure 22-8: Site map configuration

Webform

Webform is a rich form builder that is easily customizable and extendable. It lets you create feedback forms, questionnaires and other forms for your website without you having to use PHP or HTML.

It also allows you to collect form data, and send it to third-party applications or send emails to admins or users. You can also export this data to spreadsheets for further analysis.

See also our Drupal notes about Webform.

Useful contributed extensions [Legacy]

All projects listed have a stable release for Drupal 7. The status as of November 2023 for a Drupal 10 is also given.

Anonymous Publishing
This project is for site developers and administrators that want to lower the threshold for participation, enhance privacy, or both. It allows people to bost content without first registering with the site, while at the same time protecting the site from spam. Typical applications include classified advertising (craiglist style), visitor guestbooks, imageboards, social media. D10: dev.
Calendar
This project contains a module that works with Date and Views to creates a view containing a number of calendar related displays, including one that display a full-size and/or mini-calendar on your site. D10: beta.
CustomError
The CustomError project lets the site admin to create custom error pages for HTTP status codes 403 (access denied) and 404 (not found), without the need to create nodes for each of them. D10: beta.
Flexi Access
The project contains a module that provides a simple and flexible interface to the ACL. It will let you set up and mange ACLs naming individual users that are granted the right to: View (read), update (edit/write), and delete the node. D10: no.
Link checker
This project will periodically scan for broken hypertext links in nodes, blocks and fields by checking the remote sites and evaluating the HTTP response codes. It produces a report that shows all broken links in the reports/logs section and on the content edit page. D10: alpha.
Rate
This project provides an assortment of voting widgets for nodes and comments. It depends on the Voting API module. Also contains the Rate expiration module (close voting/rating on a specified date) which depends on the Date module. D10: stable

For good measure, I also list below some modules that are frequently suggested or requested by other modules. Note that you should not install one of these unless another module you use suggests or requests that you do so.

ACL
The ACL (Access Control List) project contains an API that provides functions that allow client modules to create ACLs (lists of users that shall be granted access to specific nodes. It is useful when role based access control is not fine-grained enough. Note that this project does not come with an user interface and will not do anything by itself. It requires a client module (which may be Flexi Access) to be useful. D10: beta.
Chaos Tool Suite
The Chaos tool suite (aka. CTools) is a developer-oriented project that consists of a set of APIs and tools to make difficult development tasks simpler. For instance, it can help with exporting Drupal configuration to code, constructing multi-page forms, building AJAX requests. Many other modules, such as the Views and Entity reference, modules have a dependency on some of the tools provided by CTools. Most tools are in the D10 core, rest is D10: stable.
Voting API
This project provides a standardised set of functions and a database schema for storing, retrieving, and tabulating votes. D10: beta.

Moved to core

The section lists contributed project for Drupal 7 that has become part of the core in Drupal 10:

CKEditor - WYSIWYG HTML editor.
In core for D10.
Date
This project builds on the Field API and provides a custom date field type with an optional JavaScript calendar pop-up used to select dates. There are a number of options to configure how date data is saved and displayed, each on a node type by node type basis. It also provides a lot of the functionality that may be exposed through the Calendar module.
jQuery Update
The version of jQuery that comes bundled with the Drupal core is outdated. This project upgrades the version of jQuery in Drupal core to a newer version of jQuery.
This project builds on the Field API and provides a custom content field for links. It also provides storage and formatters for URLs with associated attributes (title, target, and rel).
Localization update
The Localization update (aka. L10n update) is essential if you are using other languages than English on your site. It will automatically download and update translations for the core and contributed modules. It also has an administrative interface that lets administrators upload .po (Portable Object) translation files for custom and unreleased modules. It is based upon the GNU gettxt framework.
Entity API
This project contains a module that provides API functions that let other modules create, save, delete, view or determine access for any entity. It does not provide any end-user features, but is required by modules that provides end-user access to entities, such as Entity reference.
Entity reference
This project builds on the Field API and contains a module that allows you to include a entity reference field in any entity. The field may reference the following target types: Comment, Node, File, Taxonomy term, Taxonomy vocabulary, and User. It depends upon CTools and Entity API. It is an essential part of Drupal.
Transliterate filenames for uploads
If users are allowed to upload file to your site I recommended that you install this module (D10). It does the following to filenames for uploads: transliterate (romanization), make filesnames lowercase, replace whitespace with an underscore.
Views
The Views project is one of Drupal's most popular contributed project. It contains the Views module that is used to pull nodes, node revisions, taxonomy terms, comments, files, users, fields, and more, plus any related data such as fields, into a web page, block, or RSS feed. The output generated by the Views module is easily configurable and themeable. It can be used to display images, lists of content, summaries of content, slide-shows, maps, and more. Included in the project is also the Views UI module, which is an interactive query editor. Views UI is used to construct queries and displays, while Views output them. Views is an essential part of Drupal.

Deprecated

Mollom

Project page: Mollom.

Web service for spam filtering.

Replaced by Akismet or AntiSpam – see Will dere be a Drupal 9 version? in the AntiSpam issue queue.

Printer, email, and PDF Versions

Project page: Printer, email and PDF versions.

Replacements are Printer and PDF versions for Drupal 8+ and Entity Print.

This module allows your visitors to print, email, and create PDF versions of your content.

To control the settings, choose Administer --- Site configuration --- Printer, email, and PDF versions. There are four tabs: Web page, which controls the printer version settings; email; PDF; and Settings, which controls module- wide settings.

This module gives you nearly complete control over the appearance and behavior of this module. For example, you can specify the text or logo to be used to produce the print, email, or PDF output. With the email output, among many other options, you can control how many emails a user can send out in an hour.

By default, no pages or stories on your site will have the print, email, or PDF links. You have to activate them. After you install the module, each time you create content, you will see a Printer, email and PDF versions menu on the content creation page (see figure 22-5). This controls whether this content can be output, and in what fashion.

When you publish your content, links to print, email to a friend, or create a PDF will appear. By default, they show up after the Add new comment link at the end of the content.

Sometimes it is easier to set an entire content type to have these output links. For example, you might have a news section that you always want visitors to be able to email, print, or create a PDF out of. To set an entire content type with the same output settings, follow these steps:

    Choose Administer - Content management- Content types. Click on the Edit link to the right of the content type you wish to modify. You will see the same Printer, email and PDF versions menu on this page. Choose your settings and click Save content type. From now on, anytime you create content of that type, the output options you selected will be visible.
Figure 22-5: Printer, email, and PDF versions settings in Article content creation form.

Simple Ad Block

Project page: Simple Ad Block.

Abandoned. [D6 only].

This is a simple module that lets you enter text from a third-party advertising service or your own advertising content and posts it for you in the Left or Right sidebar.

Spread

Project page: Spread.

The Spread module creates a small form that allows site visitors to send the URL of a page of your site to a friend. The form shows up in a sidebar.

This form is a bit nicer than the Send to a friend link that the Printer, email, and PDF Versions module creates.


Last update: 2023-11-17.