Useful Drupal modules

This is my working list of useful Drupal 8 modules as I find out about them. It's mainly a reference for myself and includes reminders/advice based on my experience of using each module. (I also mention bugs, but don't let that put you off testing the modules yourself.)

At the bottom of the page I've linked to useful blogs and a longer auto-generated list.

Name My notes D8 Tested Last Checked
AddToAny Share Buttons

Project: addtoany

Nice, clean, SVG sharing buttons. Project page says it's specifically optimised for Drupal.

2017-02-07
Advanced Page Expiration

Project: ape

I would avoid this.  The idea is you enter URL paths with wildcards and override the cache expiration.  I was unable to get it to work properly for pages (settings on config under Development > Performance) Also, re: caching images, those are files being served directly by Apache or Nginx, not via the Drupal front-controller, so caching settings need to be configured there.

2017-02-20
Alexa

Project: alexa

Integrates with Amazon Echo. Allows Drupal to respond to Alexa skills requests.  See Dries' blog with video demo.

2017-02-06
Autofocus

Project: focus

Autofocuses the first field of form (forms can be specified).  No sign of a D8 port.

2017-02-08
Automatic Nodetitles

Project: auto_nodetitle

You can hide a node's title field (for reference, every node has to have a title) and generate it automatically, similar to pathauto.  No-one's porting this to D8 yet.

2017-02-07
Autosave

Project: autosave

Saves snapshot of content type form using AJAX.  Content types and save frequency can be configured.  No sign of a D8 port yet.

2017-02-08
BigPipe

Project: big_pipe

In Core (was experimental) from 8.3.0. 

2017-02-06
Block Visibility Groups

Project: block_visibility_groups

Rather than change visibility for individual blocks, you can group them together and assign complex visibility settings to all of them. Module page promotes it as a simpler alternative to Panels.

2017-02-08
Coffee

Project: coffee

Keyboard shortcuts. A bit like Spotlight/Alfred/Launchbar. Alt+D to launch (memonic: alt + D = coffee!) Handy as it doesn't clash with browser keyboard-shortcut extensions such as Vimium.

2017-02-20
Configuration Read-only

Project: config_readonly

Lock all configuration changes via the admin UI - e.g. if you need to lockdown a production environment.

2017-02-08
Contact Storage

Project: contact_storage

Lets you view messages sent via the contact form. It's in a (late) beta in D8, maintainers want to move it into core.  May be useful considering From: address SPF/DMARC problem with contact forms.

2017-02-08
Entityqueue

Project: entityqueue

Build a custom list of nodes. The setup is via Admin > Structure. Currently D8 alpha.

2017-02-07
Exclude Node Title

Project: exclude_node_title

There are situations where you will want to hide a node title - e.g. if you have a view and insert an image field that's an entity reference to another content type.  Module allows you to hide titles by content type or view mode and for all nodes or just a custom selection.  Beta in D8.

2017-02-06
Features

Project: features

Package up selected configuration for "features" (e.g. a blog or a photo gallery etc.) for reuse on other sites.  Not the same as the new D8 Config sync, which is for exchanging configs between different environments of the same site and requires a cloned DB sharing the same UUIDs.

2017-02-08
Field collection

Project: field_collection

Allows you to group a set of fields together.  In active development for D8 but still a lot of open bugs at time of writing - project page says it will likely be replaced by Paragraphs.

2017-02-08
Field Permission

Project: field_permissions

Control editing/visibility of individual fields by role.  There's a generic "private" setting, for the author + administrators, but you can set custom permissions per role for 'create own', 'edit own', 'view own', 'edit any' and 'view any'.  These are automatically applied to views, for example.  Note: the setting you're looking for is Field visibility and permissions – it's on the Edit tab, NOT Field Settings.

2017-02-20
Field Tools

Project: field_tools

Provides a more detailed field list (under Reports) with individual instances.  You can also copy fields, form and view displays to other bundles.

2017-02-25
Flag

Project: flag

Handle favourites, reading lists, spam, friend lists etc.  Can be applied to any entity (nodes, users, comments etc.)  It appears as a clickable link. Can choose between page reload and AJAX when user toggles it.  Linked with views, and you can trigger events when flag count reaches a threshold.

2017-03-13
Flippy

Project: flippy

Add Next/previous links to node view for specific content types - e.g. image gallery.  Powerful - supports: next/last, random link, you can specify exact text used etc.  Currently a dev version in D8.

Setup: activate for a content type in the 'Edit' tab (NOT manage display). Once Flippy is active, Manage Display tab will have a pager field so you can reposition the links relative to other fields on the page (e.g. above or below image).

2017-02-06
Flood Control

Project: flood_control

Protect against brute-force login attacks. Unclear what's happening with porting of this.

2017-02-08
Group

Project: group

Alternative to the Organic Groups module. Allows you to create groups - e.g. classes, subscriptions, multiple communities.  Drupal module of the week post. Blog post.  It is by all accounts solidly written, but I found the initial UI confusing (in a "so what do I do now?" way) - you probably need to watch the YouTube video to understand it.

2017-02-07
HMS Field

Project: hms_field

Hours/minutes/seconds field type (formats: h:mm, h:mm:ss, m:ss, h, m or s). Drupal 8 in beta.

2017-02-08
Image Lazyloader

Project: lazyloader

Images are hidden until they scroll into view.  Can specify distance before loading is triggered, also placeholder image, loading GIF and any pages to be excluded.  There's been some Drupal 8 development but unclear how complete it is.

2017-02-27
IMCE

Project: imce

Adds a file browser to the CKEditor link dialog, so you can select files that have already been uploaded. Settings in Admin > Config > Media. In many cases will be better IA to add a dedicate file field to the content type and use that, or wait for the new media browser (currently being designed, follow the Drupal UX group.)

2017-02-08
Masquerade

Project: masquerade

Allows you to browse the site as another user (to see what they see) and then quickly switch back again.  A general Drupal recommendation is to create test accounts for each of your roles, so this is useful for testing them.  (As per notes, don't use it for anonymous access, just log out.)  Replacement for 'Switch User'.

2017-02-08
Metatag

Project: metatag

This comes with a whole series of modules, including metatag_verification that will allow you to insert a google-site-verification tab. Instructions

2017-05-14
Module builder

Project: module_builder

Add a UI to easily create scaffolding for new modules (including hooks, plugins, permissions etc.) NB: first, you need to download drupal-code-builder from GitHub and place it in a /libraries top-level directory (see module builder's README.txt).   You can preview and edit the output files before writing to disk - and each module's configuration is saved  as a node, so you can add another hook etc. at a later date, regenerate the files and copy/paste the extra things you need. Video walkthrough.

2017-02-26
Mollom

Project: mollom

Acquia will no longer support or maintain Mollom from April 2018. Spam filtering SaaS from Acquia. Free for up to 50 "ham" messages a day.  Scans message then provides a captcha if appropriate, scores each message for reputation, spam etc.  I never tried this module and anecdotally I've seen mixed reports / people suggesting it's not all that good.

2017-05-04
Paragraphs

Project: paragraphs

For those familiar with WordPress, this is the equivalent of the ACF repeater field.  You can create paragraph types, which are collections of one or more fields, and the user can add as many of them as they like.  So you could have distinct paragraph styles, e.g. with images aligned in a certain way, or a page consisting of parallax backgrounds etc.

2017-03-14
Password Policy

Project: password_policy

Lots of constraints (length, types of characters etc. also delay and check against previously used passwords.) D8 alpha.

2017-02-08
Pathauto

Project: pathauto

Generates URL aliases for new content automatically - using token-based patterns per content type - e.g. /reports/[node:title]

When you install this, the settings are in /admin/config/search/path – normally this page has no tabs, with this module you get Patterns, Settings, Bulk Generate, Delete Aliases). 

2017-02-07
PDF Reader

Project: pdf_reader

Render a file field with one of several PDF readers.  Mixed success with pdf.js support - seems to force a full screen view.

2017-02-07
Prepopulate

Project: prepopulate

Allows you to prefill form fields by supplying values in a query string.  Syntax (also in readme) Useful for bookmarklets.  D8 alpha version.

2017-02-08
Redirect

Project: redirect

Add redirects, including specifying from the full range of HTTP codes (e.g 307 Temporary).  Won't let you redirect from the homepage, use Config > Basic Site Settings for that.

2017-02-20
Refreshless

Project: refreshless

Only loads the parts of page that change when navigating between pages.

Currently in alpha.

2017-02-06
Restrict Login or Role Access by IP Address

Project: restrict_by_ip

Can specify single IP address or ranges. Two modes: restrict login, so they can only login from certain IPs, and restrict role, so they can login from anywhere but only access a role's permissions from the defined IPs. There's a D8 dev branch, last updated June 2016.

2017-02-08
SEO Checklist

Project: seo_checklist

Shows a long checklist, split over a series of tabs, you can tick off items and some (e.g. modules you need to install) are auto-detected. See Module of the Week blog post. 

2017-02-07
TagCloud

Project: tagclouds

Provides a block with a tag cloud of chosen taxonomy term. Works but a bit buggy, e.g. UI taxonomy setting reverts to 'tags'.  Requires clearing the cache to update (including changing any settings).  Choice of numbers after each tag to indicate quality, or 'wordcloud' style with varying sizes (will need you to modify your CSS to add some spacing between words). 

2017-02-20
Telephone

Project: telephone

Telephone number field type.  This is in core, but you need to enable it.

2017-02-08
Token

Project: token

Adds a user interface for browsing tokens (the tags you can insert into various fields).

2017-02-24
Trash

Project: trash

Adds a trash bin for all content, so you may later restore (or permanently delete) it.  Depends on Content Moderation module.  Alpha in D8.

2017-02-08
Twig Xdebug

Project: twig_xdebug

Use Xdebug breakpoints in Twig templates - {{ breakpoint() }}

2017-02-08
Two Factor Authentication

Project: tfa

D8 porting seems to have stalled.

2017-02-08
Unique field ajax

Project: unique_field_ajax

Gives you a checkbox for 'Unique' when editing fields - can have it checked during form entry (via AJAX) and specify a custom error message per field.  Seems to have bug where field you're checking is sometimes refocused (even if no errors) if you've already tabbed away from it and continued typing.

2017-02-08
Warden

Project: warden

Monitor core/module update status of multiple Drupal sites from a separate server (Symfony app.)   If you're familiar with Nagios and NRPE, it's a little bit like that, but for Drupal modules, and more lightweight.  Note the server uses MongoDB, so you need to install that, plus the PHP extension, and it communicates with a public key-pair, though it should set that up itself.  For PHP 7 support for the server, apply this patch.

2017-02-08
Web Profiler

Project: webprofiler

Install the devel module first.  The profile is a toolbar at the bottom of the screen. Features:

  • useful shortcuts (e.g. clear cache)
  • view info about current user, their role and permissions
  • server HTTP response
  • cache, DB and DOM loading performance
  • memory use
  • which blocks and views have been loaded

Tip: there are further reports ("collectors") you can turn on in the module preferences, and there's a shortcut to these from the menu in the first icon (Drupal logo). The toolbar is only a summary, all icons are clickable to view a full report. Each report is saved in the DB for later reading.

This module was ported from Symfony

2017-02-26
Workbench Moderation

Project: workbench_moderation

Don't install this separately, it's an experimental core module - Content Moderation - since Drupal 8.2.x. Allows you to define and use workflow states such as Draft, Archived and Published.

2017-05-14