322 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.

Boost

Boost skips PHP/Drupal/SQL for lighting fast page loads!

Boost provides static page caching for Drupal enabling a very significant performance and scalability boost for sites that receive mostly anonymous traffic. For shared hosting this is your best option in terms of improving performance. On dedicated servers, you may want to consider Varnish instead.

Downloads

Hierarchical Select

Hierarchical Select

Description

This module defines the "hierarchical_select" form element, which is a greatly enhanced way for letting the user select items in a hierarchy.

Hierarchical Select has the ability to save the entire lineage of a selection or only the "deepest" selection. You can configure it to force the user to make a selection as deep as possible in the tree, or allow the user to select an item anywhere in the tree. Levels can be labeled, you can configure limit the number of items that can be selected, configure a title for the dropbox, choose a site-wide animation delay, and so on. You can even create new items and levels through Hierarchical Select!

For a good overview of what Hierarchical Select can do, look at this demo!

I'm focusing on maintaining only the Drupal 7 version of Hierarchical Select. That means I'll only commit RTBC patches for the D6 version relatively quickly. If a co-maintainer steps up to help maintain the Drupal 6, I'd be happy to accept him/her! :)

Drupal 7 version

The Drupal 7 version integrates with:

  • Taxonomy (Drupal core)
  • Menu (Drupal core)

Downloads

Memcache API and Integration

Memcached logo

Integration between Drupal and Memcached with the following features:

  • An API for using Memcached and the PECL Memcache or Memcached libraries with Drupal.
  • Memcache backends for the following systems (all drop-in):
    • Caching (memcache.inc)
    • Sessions (memcache-session.inc)
    • Locking (memcache-lock.inc)
  • A module that provides a comprehensive administrative overview of Drupal's interaction with Memcached and stats.
  • A set of tests that can be run to test your memcache setup.

7.x-1.1 Beta Release

7.x-1.1-beta5 ready for testing (March 10, 2014).

Downloads

Elysia Cron

Elysia cron

!NEW Release 2.0 is finally out, with D7 support, code & performance improvements and a lot of new features!

Elysia Cron extends Drupal standard cron, allowing a fine grain control over each task and several ways to add custom cron jobs to your site.

  • [NEW IN 2.0] Set the timings and frequencies of each cron task (you can run some jobs every day at a specified hour, other only monthly and so on...). For each task you can simply choose between some frequently used options ("once a day", "once a month" ...), or use a powerful "linux crontab"-like syntax to set the accurate timings. You can even define your frequently used options to speed up site configuration.
  • Parallel execution of cron task: you can group jobs in channels and execute then simultaneously: so a task that takes a lot of time to execute won't block other tasks that need to be executed every 5 minutes...
  • You can disable all tasks, an entire channel or a single task.
  • Change the priority/order of task execution.
  • Manual force the execution of a cron tasks.
  • Detailed overview of cron status with time statistics for single tasks and channels.
  • [NEW IN 2.0] powerful API for module developers: you can define extra cron tasks for your modules, each one with own default timings (site administrators can override them by configuration, other modules via hook_alter). Elysia Cron 2.0 gives a brand new API support (compatible with 1.0 version) with a lot of features.
  • Administrators can define custom jobs (call to functions with parameters), via the "script" option.
  • Several optimization for frequent cron calls and error handling.
  • Protection from external cron calling by cron_key or allowed host list.

Elysia has no dependencies with contributed modules, and doesn't need to patch the core: it can be used in minimal Drupal installation with only core modules.
It also can be used in a Drupal install profile.

3rd party integration:

  • [NEW IN 2.0] Ping feature, for external tracking services like host-tracker to tell whether cron is functioning properly on your site.
  • [NEW IN 2.0] Drush support: you can call "drush elysia-cron" to manually run extended cron.
  • [NEW IN 2.0] CTools support for exports/backup of task settings.
  • [NEW IN 2.0] Features support.

Downloads

Entity cache

Entity cache puts core entities into Drupal's cache API.

Due to the entity loading changes in Drupal 7, no core patches are required.

How to use it

This module has no user interface, if you enable it, entities will start being cached, if you disable it, they'll stop.

Supported core entities

  • Nodes
  • Comments
  • Taxonomy terms
  • Taxonomy vocabularies
  • Files
  • Users

Support for contrib entities:

There is no automated support for contrib entities, to use entitycache for a contrib or custom entity:

  • Create a cache_entity_$myentity table/bin.
  • Specify EntityCacheDefaultEntityController as your controller class in hook_entity_info(), or extend it.
  • Never update your entity tables outside of save/delete API calls.

Tests

Entity cache is now set up for automated testing on Drupal.org, see current HEAD status.

This module is being developed for Drupal 7, and will never be backported to Drupal 6. For Drupal 6 you may want to look at this pressflow merge request or http://drupal.org/project/advcache.

Downloads

Varnish HTTP Accelerator Integration

This module provides integration between your Drupal site and the Varnish HTTP Accelerator, 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.

Downloads

Javascript Aggregator

Javascript Aggregator

The aim of the JavaScript Aggregator module is to improve performance of your site with less server requests and bandwidth per page. In Drupal 5, all the JavaScript files will be aggregated into one file and optionally minified. JavaScript aggregation was brought into core with Drupal 6, so the Drupal 6 version of this module goes one step further to minify that file.

It basically does the following:

  • Takes the $scripts variable and removes .js files using a regular expression
  • Generates a unique filename for any set of .js files
  • Creates and caches one file containing all .js files in files/js
  • Optionally minifies the JavaScript using JSMin
  • Returns a modified $scripts variable with link to cached file

Downloads

CSS Gzip

Settings under Performance

CSS Gzip will no longer be updated/supported and is considered obsolete. All future development is being done in the Advanced CSS/JS Aggregation module.

Downloads

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.

Benchmarks

Downloads

Cache Expiration

Common settings form, module settings

This module provides configurable actions upon events that will expire URLs from caches like reverse proxy caches, internal page caches, etc.This module make more sense when Minimum Cache Lifetime setting is set to a value other than none.

There is now integration with the following modules:

  • Boost - deletes expired pages (files) from the file system.
  • Varnish - integrates over an administrative socket.
  • Purge - expires urls by sending purge requests to Varnish, Squid and Nginx over HTTP.
  • Acquia Purge - allows Drupal sites hosted on Acquia Cloud to automatically purge pages from their Varnish powered load balancers..
  • Memcache Storage - allows to delete pages that cached in a memcached instances.

Module's features may extend if next modules are enabled:

  • Drush - provides drush commands to expire urls (xp-url), paths (xp-path), nodes (xp-node), users (xp-user), comments (xp-comment) from the command line shell and scripts.
  • Rules - provides actions for the Rules module to allow more advanced cache expiration scenarios.
  • Token - provides modal dialog with list of available tokens.
  • References and Entity reference - module may expire referenced entities' urls.

Downloads

Advanced CSS/JS Aggregation

7.x

Features & benefits (7.x)

  • On demand generation of CSS/JS Aggregates. If the file doesn't exist it will be generated on demand.
  • Stampede protection for CSS and JS aggregation. Uses locking so multiple requests for the same thing will result in only one thread doing the work.
  • Fully cached CSS/JS assets allow for zero file I/O if the Aggregated file already exists. Results in better page generation performance.
  • Can add JS to any region of the theme & have it work and be aggregated.
  • Combine CSS files by using media queries.
  • Prevent more than 4095 CSS selectors in an aggregated CSS file (IE 6-9 limitation).
  • Url query string to turn off aggregation for that request. ?advagg=0 will turn off file aggregation if the user has the "bypass advanced aggregation" permission. ?advagg=-1 will completely bypass all of Advanced CSS/JS Aggregations modules and submodules.
  • Button on the admin page for dropping a cookie that will turn off file aggregation. Useful for theme development.
  • Gzip support. All aggregated files can be pre-compressed into a .gz file and served from Apache. This is faster then gzipping the file on each request.

Downloads

Modernizr

Modernizr - Frontend development done right

Modernizr tests which native CSS3 and HTML5 features are available in each browser and makes the results available to you in two ways: as properties on a global Modernizr object, and as classes on the <html> element. This information allows you to progressively enhance your pages with a granular level of control over the experience.

This Drupal module provides deep integration with the Modernizr JS library, allowing other modules or themes to register tests, load additional assets as needed, and even create new copies of the Modernizr library when a website's requirements change. Read more below.

Downloads

APC - Alternative PHP Cache

The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. Its goal is to provide a free, open, and robust framework for caching and optimizing PHP intermediate code. Besides a opcode cache it provides a user cache for storing application data. This module uses the APC user cache as a cache backend for Drupal.

Downloads

Node Hierarchy

Node Hierarchy allows nodes to be children of other nodes creating a tree-like hierarchy of content. The module offers:

  • 1-Click creation of hierarchical menus
  • Hierarchical breadcrumbs
  • Automatic hierarchical urls using Pathauto (and token module)
    (eg: q=aboutus/history/beginning).
  • Automatic creation of hierarchical menus if desired.
  • Optional Views integration.
  • Optional Node Access integration.

Downloads

Background Process

Drupal 7 Settings

Dependencies

Modules that utilize Background Process

Developer

Executing a background process

<?php
$handle
= background_process_start('mymodule_dosomething', $myvar1, $myvar2);
$handle = background_process_start(array('myclass', 'mystaticfunction'), $myvar1, $myvar2);
$handle = background_process_start(array($myobject, 'mymethod'), $myvar1, $myvar2);
$handle = background_process_start_locked('dontrunconcurrently', 'mymodule_dosomething', $myvar1, $myvar2);
?>


Executing arbitrary http requests

The following code shows how to fetch data via http in "parallel" (asynchronous non-blocking mode)
It uses an API similar to that of HTTPRL but "slightly" different, in order for the caller to gain more control of the requests. Plans to join forces with HTTPRL are in place.

Drupal way: blocking/synchronous

<?php
$r
= array();
for (
$i = 0; $i < 10; $i++) {
 
$r[] = drupal_http_request('http://www.example.com/stuff/' . $i);
}
print_r($r);
?>

Downloads

Fast 404

What and Why

Drupal has expensive 404 errors. On an 'average' site with an 'average' module load, you can be looking at 60-100MB of memory being consumed on your server to deliver a 404. Consider a page with a bad .gif link and a missing .css file. That page will generate 2 404s along with the actual load of the page. You are most likely looking at 180MB of memory to server that page rather than the 60MB it should take.

That's where Fast 404 comes in. This module combines a very common method of handling missing image/file 404 errors (discussed here and planned for Drupal 8) with a method created by dpardo (a co-maintainer of this project) to deliver super fast 404 error pages for both missing images and bad paths. Depending on which method of implementation you choose (aggressive or super aggressive) you can deliver 404 errors using less than 1MB of memory on your server.

Drupal 7 Core Updates

Drupal 7 core has updated to add a rudimentary version of what this module implements. It allows you to set an excluded set of paths, a list of extensions to Fast 404 on, as well as the plain HTML that is delivered.

Issue describing: http://drupal.org/node/76824
Patch added: http://drupal.org/files/issues/404_fast_paths_7x-76824-328.patch

Downloads

Term lower name

Speeds up the querying, by name, of terms in a taxonomy, by stopping code from having to use the SQL "LOWER" command. This can make a huge difference to query times on a site with a large number of terms.

This module should only be installed if required by other modules. It does not add any additional functionality, and does not have any configuration options.

The following modules depend on this module:

Downloads

Node.js integration

This module integrates Node.js with Drupal.

It provides an API that other modules can use to add realtime capabilities to Drupal, specifically enabling pushing updates to open connected clients.

Downloads

Block Cache Alter

Block Cache Alter

Alter cache settings per block. Cache settings per block are now set in code, but if you don't like the default - usually none - you can now easily change this. Install this to speed up block rendering for authenticated users.

The Drupal 6 version works again after #1173012: Blocks lose settings during update.php and cache clears got committed to Drupal core. A patch is available here #1194880: _block_rehash() overwrites the caching mode set by Block_Cache_Alter module and is also in the 6.x-1.5 release.

Downloads

Previous/Next API

An API for browsing next/previous nodes without overloading your database server.

Description

This module allows you to know the previous or next nodes for any given node. This is very useful for providing navigational links to the user without the expensive queries required to dynamically deduce such information on the fly.

The use case is two fold:

Usability/Navigation

For example, on a site with a gallery of images, you want to show a next/previous link with a thumbnail under each image. Your site's visitor click on the link to show new content or browse it.

Scalability

Although the previous and next nodes can be deduced with some SQL work, the queries to do so are very heavy on the database, and can bring a site to its knees. This module solves this problem by storing the previous/next node in a table so lookups are fast. Once the module is installed, it will build this index backwards via cron until all nodes have been indexed. See the "More Info" section below for a detailed post on the positive scalability impacts of implementing this module.

Configuration

The module can be restricted to certain content types to be included in the previous/next indexing. For example, you want the site's visitors to browse through video and image nodes only, but not blogs and regular pages.

Downloads

Cache Actions

Cache actions provides rules actions for clearing drupal caches.

It currently provides actions for:

  • Clearing Drupal cache bins
  • Clearing CSS/JS cache
  • Clearing The cache of specific views
  • Clearing The cache of specific panel pages
  • Clearing The cache of specific mini panels

Dependencies

Cache actions only depends on the rules module. If you don't have views or panels, you only get the option of clearing the drupal cache bins and the CSS/JS cache. When views or panels are present, you get actions for clearing the cache of specific views and panels as well.

Compatibility

This module is compatible with:

  • Panels 3
  • Views 2 and 3. The views 2 support is the best tested currently, but everything seems fine
    with views 3 as well.

Version 2

The new version of cache actions offers a lot of new features:

  • Clearing The cache of more than one view at a time
  • Clearing The cache of specific panel page variants
  • Clearing The cache of specific panel page panes
  • Clearing The cache of specific mini panel variants
  • Clearing The cache of specific mini panel panes
  • Unit tests

Downloads

Ultimate Cron

Cron list

The Ultimate Cron handling for Drupal.
Runs cron jobs individually in parallel using configurable rules, pool management and load balancing.

2.0 READY FOR BETA TESTING!

Ultimate Cron 2.0 beta is out now. The only Drupal module with a cracker intro! (warning: iPhone killer ...)

Ultimate Cron 1.x documentation can be found at https://drupal.org/node/1666944

The old project page for Ultimate Cron 1.x can be found at https://drupal.org/node/2195381

Changes

  • No more dependecy to Background Process. Ultimate Cron now works without Background Process. However, Background Process is still supported for true parallelism
  • Refactored to use cTools plugins, making it easier to extend Ultimate Cron.
  • Now includes the daemonizer and queue throttling features, previously found in the modules Ultimate Cron Daemonizer and Ultimate Cron Queue Scaler
  • Hopefully a more robust lock and logging mechanism.
  • Integration with nodejs for live update on cron page
  • Nagios support has not been re-implemented (yet?)

Upgrade path

  • Disable cron while upgrading.
  • Existing db-stored settings will be upgraded.
  • Existing features containing Ultimate Cron settings will be stored in db, for easier re-export.
  • Existing log table will be modified. Beware, that if the table contains many entries, the upgrade may take some time.

Plugins

Ultimate Cron is built upon 4 plugin types.

  • Settings: - plugins that provide custom settings for jobs (bundled: general, queue).
  • Schedulers: - plugins that provide a mechanism for whether or not a job should run at a certain time (bundled: simple, crontab).
  • Launchers: - plugins that provide a way of launching jobs (bundled: serial, background_process).
  • Loggers: - plugins that provide a logging backing for job status (bundled: database, cache).

Ultimate Cron 2.x documentation can be found at https://drupal.org/node/2195383

Features

  • Works out-of-the box in most cases (or aims to)
  • Parallel exection of cron jobs
  • Configuration per job (enable/disable, rules, etc.)
  • Multiple rules per cron job
  • Pool management and load balancing using Background process
  • Support for Drupal Queues
  • Overview of cron jobs
  • Log history of cron jobs
  • Status/error messages per cron job, providing easy debugging of troublesome cron jobs
  • Uses hook_cronapi() (Elysia Cron compatible, NOT 2.x, please use hook_cron_alter() for similar functionality)
  • hook_cron_alter() for easy adding/manipulating cron jobs
  • Poormans cron with keepalive a granularity of 1 minute
  • Drush support (list, start, enable/disable jobs from the command line)

Downloads

Cache Router

Cache Router Admin

About

CacheRouter is a caching system for Drupal allowing you to assign individual cache tables to specific cache technology. CacheRouter has an option to utilize the page_fast_cache part of Drupal in order to reduce the amount of resources needed for serving pages to anonymous users.

Drush integration #642544-12: Weird thing. Keeps happening.

NO DRUPAL 7 VERSION OF THIS MODULE WILL BE RELEASED. See #593238: Do not release Drupal 7 version of this and move the engines into separate projects for details.

Cache Router supports the following technologies natively:

Downloads

CSS Embedded Images

How does it work?

According to Wikipedia, "the data URI scheme is a URI scheme that provides a way to include data in line in web pages as if they were external resources." That means that rather than having a URL telling the browser where to find the image you actually have the image data right there on the page so the browser does not have to make an extra request to get it. This particular module is only concerned with images referenced in CSS, so for an example let's look at a declaration in Garland's CSS:

ul li.expanded {
  background: transparent url(images/menu-expanded.gif) no-repeat 1px .35em;
}

When we embed the image into the CSS, it becomes:

ul li.expanded {
  background: transparent url(data:image/gif;base64,
  R0lGODlhCgAKAMQUAM/Q0vT09Ojr7s7Q0dLU1f7+/u/z9+Dj5tfX1+Dg4MrKyu
  fq7tfZ27m5uba2tsLCwvv7+7W1tbS0tP////P3+wAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAACH5BAEAABQALAAAAAAKAAoAAAU0ICWOZGkCkaRKEU
  AtTzHNU/Es1JDQUzKIggZkBmkIRgTEDEEgGRyBgMNQYigUDBPlcCCFAAA7) no-repeat 1px .35em;
}

The actual process is a bit more involved than that, but this is the general concept. By default, embedded images are placed in a separate CSS file to allow for parallel rendering of other site styles while the relatively large image data is being downloaded.

Downloads

Ajax Blocks

Permits to load some blocks by additional AJAX request after loading the whole cached page when the page is viewed by anonymous user. It is suitable for sites which are mostly static, and the page caching for anonymous users is a great benefit, but there are some pieces of information that have to be dynamic.

Downloads

Pages