35,719 Modules match your search

Extend and customize Drupal functionality with contributed modules. If a module doesn't quite do what you want it to do, if you find a bug or have a suggestion, then join forces and help the module maintainer. Or, share your own by starting a new module.


This module provides integration between your Drupal site and Varnish cache, an advanced and very fast reverse-proxy system. Basically, Varnish handles serving static files and anonymous page-views for your site much faster and at higher volumes than Apache, in the neighborhood of 3000 requests per second.

This module provides admin-socket integration which allows Drupal to dynamically invalidate cache entries, and also lets you query the Varnish admin interface for status, etc.

Automatic Entity Label


"Automatic Entity Label" is a small and efficient module that allows hiding of entity label fields. To prevent empty labels it can be configured to generate the label automatically by a given pattern.

This can be used on any entity type, including e.g. for node titles, comment subjects, taxonomy term names and profile2 labels.

Patterns for automatic labels can be constructed with tokens. Drupal core provides a basic set of tokens. For a token selection widget install the token module. Some entity types (e.g. profile2) provide tokens via the entity_token module (part of entity).

Advanced users can use PHP code for automatically generating labels.

IMCE for FileField

Screenshot of IMCE for File Field

IMCE for FileField allows users to select files from IMCE File Browser. It supports FTP uploaded files by automatically registering them as IMCE files thus making them usable in a FileField.

How to use

  1. Go to your FileField settings page.
  2. Check the box saying Allow users to select files from IMCE File Browser for this field

Note that, only the roles with an IMCE configuration profile can use this feature.

Drupal 8: The functionality is in IMCE 8.x

Commerce features

Drupal 8 Port

Not needed! The equivalent functionality is now present in Commerce 2.x itself

Features integration for Drupal Commerce.

Security Kit


SecKit provides Drupal with various security-hardening options. This lets your mitigate the risks of exploitation of different web application vulnerabilities.

SecKit facilitates certain mitigations for Cross-site Scripting, Cross-site Request Forgery, and Clickjacking, among other issues.

Video Filter

This is a highly flexible and easily extendable filter module to embed any type of video in your site using a simple token. Other modules can add video sites/formats (called codecs) using an easy plugin architecture.

With WYSIWYG installed, you can use the Video Filter button to easily add videos in a rich text editor. TinyMCE and CKeditor are supported (both standalone and with WYSIWYG).

WYSIWYG module integration is only for Drupal 7 version. Drupal 8 version works with core CKEditor.

Inline Conditions

This module allows conditions to be defined on the entity add / edit form, and
 those conditions are later mapped to rules conditions when the rule is generated.

Inline Conditions are specially defined (hook_inline_condition_info()) and
 consist of a configure callback (provides a user-facing form) and a build
callback (adds the actual condition to the rule).

Integration consists of creating a field of the "inline_conditions" type on the
 entity, and later calling inline_conditions_build() from the implementation 
of hook_default_rules_configuration().

Localization client


This module helps you fix translations on your site as you see the issues. Just by navigating around your pages, you'll be able to fix translations and fill in missing ones using the on-page translation editor. At the same time, if configured properly, the module also submits your translations back to the community, to localize.drupal.org or any other localization server.

Related projects:

  • Localized Drupal, an install profile that will download translations automatically (and comes with Localization client and Localization update).
  • Localization update, which will help you automatically install and keep translations updated.


  • You can select text from the page and hit Ctrl+Shift+S to automatically search the string in l10n client

Video demonstrations



Skinr's main purpose is to allow the theme to define a set of reusable and modular CSS styles, and to make those styles available in Drupal's UI. Skinr was developed for themers to allow them to tap into the power of Drupal's modularity and apply those same principals to theme development. It does not provide any styles of its own. These styles are defined in the .info file of the theme (or subtheme), by the themer and end up in various places in Drupal's UI, such as:

  • Block Configuration
  • Node Type (and Comment) Configuration
  • Panel Panes
  • Views Displays

It also provides a CSS class field, where you can manually add custom classes.

Publish Content

Picture 6.png

This module enables granular publish and unpublish permissions which allows you to grant roles on your site the ability to publish or unpublish specific content types without having to give them the administer content permissions. This is a lightweight solution to managing your content workflows.

SpamSpan filter

The SpamSpan module obfuscates email addresses to help prevent spambots from collecting them. It implements the technique at the SpamSpan website (a German version is also available). The problem with most email address obfuscators is that they rely upon JavaScript being enabled on the client side. This makes the technique inaccessible to people with screen readers. SpamSpan however will produce clickable links if JavaScript is enabled, and will show the email address as example [at] example [dot] com if the browser does not support JavaScript or if JavaScript is disabled.

This technique is unlikely to be absolutely foolproof. It is possible in theory for a determined spambot to harvest addresses from your site no matter how you disguise them. But research suggests that the by far the great majority of spambots do not bother to attempt to collect addresses which have been hidden using JavaScript. Indeed, most spambots cannot currently read JavaScript at all.

Here are a links to the results of a few experiments into the efficacy of JavaScript obfuscation. Let me know if you know of any more.

http://www.cdt.org/speech/spam/030319spamreport.shtml (2003)

Fieldable Panels Panes (FPP)

This module creates an entity that may be used in panel panes to create fieldable entity panes. These panes can be created either directly in the Panels UI or in a separate administrative UI and later added.

Once added, they can appear in the "Add content" dialog to be easily reused. Since they are fieldable entities, they can contain any kind of data that field API can provide.

Each entity supports revisions, and any revision can be made current without having to make a new revision.

Views tree

Heirarchical listing of Drupal Core versions created with Views Tree and Views

This module provides a tree-based style plugin for Views. It is equivalent to the tree-based style template from Views 1.

It is based off of the list style. Although it generates a nested view, there is still only a single query run for the view making it quite performant.

The 1.x branch is compatible with Views 2. The 2.x branch is compatible with Views 3.


  1. Create a new view using the Fields row style. Populate it with the appropriate fields you want.
  2. Select the Tree (Adjacency model) style plugin.
  3. Select the linking fields in the style configuration panel. Generally, you will want to link from a nodereference field to the nid on the same node type. That is, the nodereference field is used as a pointer to the "parent" node.
  4. Save and enjoy.


This module has been tested and used with the following relationship-oriented modules:

  • Taxonomy (in core) - parent/child relationships
  • References - node and user references
  • Relation - references between any entities (D7 only)
  • Entity reference - references between any entities (D7 only)

Media Gallery

Media Gallery

Uses the Media module to provide a rich media gallery. It currently supports images and youtube videos well. Other file types may or may not work as well, but the facility is there to add them.

This module was developed by the engineering team at Acquia.


  • Add media from URL, upload or existing files
  • Multi-file upload
  • Set rows and columns and dynamically size images to fit space
  • Lightbox support
  • CC license settings
  • Title, description and tags on images
  • Drag and drop re-ordering
  • Gallery collections to group related galleries together
  • Creates gallery blocks

HTTP Parallel Request & Threading Library

Blocking vs Non Blocking

This is a library module. It provides no out of the box functionality other then providing an API that other modules/code can use. Other projects might require/recommend this module. Install HTTPRL only if other modules recommend or require it.

What does httprl do?

Using stream_select() it will send http requests out in parallel. These requests can be made in a blocking or non-blocking way. Blocking will wait for the http response; Non-Blocking will close the connection not waiting for the response back. The API for httprl is similar to the Drupal 7 version of drupal_http_request().

As a bonus, a simple threading library is built on top of the parallel http requests functionality. This allows you to split a job and have multiple http "workers" running this split job in parallel. Anything that takes a long time to do can greatly benefit from using threads.


Module Missing Message Fixer

This module displays a list of missing modules that appear after the Drupal 7.50 release and lets you fix the entries.

If you are receiving these messages, then you should use this module to help you:

The following module is missing from the file system: MODULE NAME. In order to fix this, put the module back in its original location. For more information, see the documentation page.


Block Title Link

D7-dev screenshot

Have you ever needed to make a block title a link? This module makes it easy. Block Title Link creates a link field on the Block Admin page. It works by overriding the $block->subject variable and changes it to a link.

Features Support: Block Title Link is compatible with the Features module by using the Strongarm module. Simply select any block_titlelink prefixed variables and they will be exported in your feature.

Crumbs, the Breadcrumbs suite

Crumbs calculates breadcrumbs for your site.
It does so by finding the parent of the current page, then the parent of the parent, etc, until it arrives at the home page.

Crumbs comes with a bunch of built-in plugins, that can be individually enabled, disabled and prioritized, and some of which provide further configuration options.

Built-in plugins

Crumbs plugins have two responsibilities: (1) to determine the parent path for a given path, and (2) to determine the title for a specific breadcrumb link.

Built-in plugins exist for: Menu, Taxonomy, Entity reference, Organic groups, Path aliases, Entityreference prepopulate, Text fields, Forum, Commerce checkout, etc.

Besides, there are configurable token-based patterns to find the parent for entity pages per bundle.

As a fallback behavior, it will always try to find a parent by chopping off the last part of the path. And for the link title, the fallback is whatever was specified with hook_menu().

Fine-grained priority control

Most plugin priorities are further subdivided, to allow even more fine-grained control: By menu name (menu), vocabulary name (taxonomy), field name and entity bundle (entity reference), group content type (organic groups), etc.

Page manager existing pages

Page manager existing pages allows you to override/configure Drupal menu paths so you can create variants with Page manager, which is bundled in the CTools project.

Technically, this project defines one abstract task and one content type plugin, so menu items can be overridden and the original page callback can be called through the content type plugin. This project comes with one default existing page, which is 'node', the default Drupal frontpage.

Tested overridden paths

  • Drupal frontpage at 'node'.
  • Media file paths as 'media/%'.
  • Apache Solr search pages at any path you defined.
  • FAQ at 'faq-page', 'faq-page/%', 'faq-page/list' and 'faq-page/%/list'.

In theory, any menu callback can now be overridden. Default contexts can be added for entity paths, but will need more testing.


Install the module as usual, more info can be found on http://drupal.org/documentation/install/modules-themes/modules-7
You should also install Panels, which is not a dependency for this module but is the recommended module to start overriding page layouts. Panels can be found at http://drupal.org/project/panels


On admin > structure > pages click "add existing page".

Search API sorts

Provides custom sorts and a global sort block for Search API.


This module is compatible with Search API, Search API ranges (slider), Search API Solr and Search API ajax. Is not tested with Apache Solr Integration module.

Default config

Default config is a way of using the Features exports for permissions and roles to provide default settings for installations profiles. This is necessary since using Features directly forces the user to work only with the specified users and roles. This is a good thing in many cases, when you for instance create sites, but when you create distributions this is not really a viable option, since you don't want to lock in your users to one configuration, but you do want to provide sane defaults that works for most of them.

The future

There are some issues in the features issue queue that might make this module obsolete. We will try to actively work in that direction in order to not have to have this functionality into another project.


This module does not provide it's own UI for exporting configuration, instead it uses the export from Features. In order to get default config to manage your permissions and roles, export your configuration as you would normally do, and then go into your export file, for instance yourfeature.features.user_permission.inc and change the hook function defintion from:

function yourfeature_user_default_permissions() {



function yourfeature_defaultconfig_user_default_permissions() {




Shadowbox is a JavaScript modal media viewer application for viewing images, video, Flash and other content in a modal window.

From the author of Shadowbox:

Shadowbox is an online media viewer application that supports all of the web’s most popular media publishing formats. Shadowbox is written entirely in JavaScript and CSS and is highly customizable. Using Shadowbox, website authors can showcase a wide assortment of media in all major browsers without navigating users away from the linking page.

404 Navigation

On 404 Not Found error pages, Drupal will skip rendering of all the navigation links of your website for performance reasons*. Some of these include:

  1. The "Primary links" block and any other menu links block.
  2. The Primary links and Secondary links of your theme.

* Unless you have configured a "Default 404 (not found) page" on admin/config/system/site-information.

But many websites find navigation invaluable. Especially on 404 pages, when they want to show lost users how to get to real pages.

So this module simply revives those features on 404 pages. Simply install and enable the module. No configuration needed.

Date iCal

Date iCal is your one-stop shop for iCal support in Drupal. It provides a plugin for Views to enable exporting your site's calendar as an iCal feed, and a plugin for Feeds to enable importing external iCal feeds into your site's calendar.

Entity Construction Kit (ECK)

The Entity Construction Kit (ECK) builds upon the entity system to create a flexible and extensible data modeling system both with a UI for site builders, and with useful abstractions (classes, plugins, etc) to help developers use entities with ease.

ECK allows the creation and management of entity types with custom properties; adding bundles to entity types; and fields to bundles, with the help of the Field UI module.

If that last sentence sounded like a foreign language, I suggest reading the first section of ECK's documentation: Understanding Entity Terminology

A fairly recent video demonstrating ECK's capabilities was created by Shane at Code Karate: Drupal 7 Entity Construction Kit. This video should get most site builders going.

An older summary on what ECK could do on 7.x-1.1-alpha3 can be found in Jeff Eaton's article: Module Monday: Entity Construction Kit.