34,258 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.

Reduced Forms

Reduced Forms uses the "#states" property of the Drupal Forms API to make all but on of the fields in a form invisible until a user enters something in the visible field. This makes it possible to have forms that take up very little space on a page until a user actually starts to fill in the form.

The code for this module was adapted from the Compact Forms module at:


Domain File

Provides integration between Domain Access and File Entity, allowing files to be assigned to domains. This is only useful for sites requiring uploaded media (eg via Media module) to be assigned to domains.


Testing for PHP SDK with coding standards of drupal



Yandex Auth

This module will be useful if you're using Yandex Mail for domains and your Drupal user accounts have corresponding mailboxes on Yandex, with same password.

When user logs in Drupal, he is also transparently authenticated in his Yandex mailbox (using iframe) and he gets "View mail" block in Drupal website.




Scheduler (Paddle fork)

Temporary fork until all necessary patches get into the main Scheduler project.

Contains the following patches:

Ubercart eTranzact WebconnectPlus 7


Etranzact is a Nigerian online payment processing/ switching company. The module provides an integration of the WebconnectPlus platform to Ubercart project enabling an alternate payment method for site users. This project is tested on ubercart 3.4 in a live store. I worked on this project as a way of providing a solution to my country's quest to participate in the eCommerce revolution. After several desperate search for an existing module for a web project without success, i decided to develop something.

Link Scraper

This is a simple module that will populate a node from the metadata of another web page, similar to the way that Facebook populates data for links shared on Facebook.

Create a content type with a link field, a body or description field, and an image field. Optionally include a text field to hold the site name of the source, a link field for the data from 'article:author' and a term reference field for the data from 'article:tag'.

Configure the scraper at admin/structure/link_scraper and indicate the content type to populate, the link field that will be used as the source of the page content, fields that should receive the contents of the source web page.

Create a new node. Paste a link into the title field and the 'url' part of the link field. Leave all the other fields blank. To avoid the need to even populate the title, use the auto_entitylabel module and set it to populate the title with the link field value if the title is empty.

When saved, the requested field content will be retrieved from Facebook Open Graph information on the source page and used to populate the node. If there is no Open Graph information, it will search for Twitter information, then fall back to the title and description meta tags of the source page.

Entity Duplicates

Handle duplicate entities well! Scan for duplicate entities, and merge them. Includes integration with Relations and Rules.

Define which fields should be compared (e.g. title and date) on each entity. If they match, entity is flagged as duplicate. Merging UI lets you choose a master entity and merge the rest in.

Blockify secondary tabs

Out of the box Blockify module provides block for page tabs, but it is not possible to split those tabs to primary and secondary, this module makes that possible.

Drush Download & Push

This simple drush script will automatically detect when you "drush dl" a project into a folder that is in a git repository, then asks if you want to commit and push it.


To use, simply answer "yes" when you download a module, or enter -y as an option


Bootstrap Submenu Block

In some case the primary menu want more than

  • element. This module helped developer can customize display of sub-menu item, by using Views module to customize output of display, so you can easily style the element and also fully integrate with drupal's menu system.

    *Use with Bootstrap: http://drupal.org/project/bootstrap


The Ubercart Lead Tracking module screenshot

The Ubercart Lead Tracking module is a very simple module for keeping track of how you customers found you.

It's pretty similar to this one: http://www.ubercart.org/node/10185

...with a couple of improvements.

Administrators can easily add new sources to the select list of lead locations. It also has a very simple reporting mechanism showing how many leads came from which source, and who those leads were.

The simple modules are often the best :)

Main menu pager

Menu Pager module provides pagination for main menu items. User can traverse each page associated with main menu through this pagination.

1. Copy the entire menu_pgaer directory the Drupal sites/all/modules directory.

2. Login as an administrator. Enable the module in the "Administer" -> "Modules"

3. Assign the block into Content region from "Administer" -> "Structure" ->
"Blocks" -> "Menu Pager Block"

Contact Information

The contact information modules provides a simple way to manage information about a company/person, social media and location, including a Google Maps map.

It provides a way to add the information needed to specific pages or through blocks.

Commerce Cart for Later

This module adds a new order state of "Saved for later"

It provides a method of "restoring" the cart with PHP and with Rules.

This will allow you to create a new order for a user, and allow the user's current order to be saved for later use.

World Flags

5 minute install


Uses IP to Location module to see where your user is located.
Then dynamically displays an appropriate flag for the user's location.
The flag can override the logo, override the favicon, or be displayed in a block.

Flag examples

9 Easy to configure options for the flags.

Anti-Bot Forms


Anti-Bot Forms adds a defensive alteration to site forms, requiring the
user to process Javascript on the page in order for a form to submit without

Few spam bots implement a Javascript engine, and most of the bot traffic an
average site sees are drive-bys: the bot hits the site in the hope that it's
running a specific widely used platform, and tries to be as economical as
possible in delivering spam.

Thus most spam bot traffic can be blocked just by requiring Javascript activity
in order to submit forms.

Workbench Access Automenu

Provides automatic section assignment when using the Workbench Access menu scheme.

ImageField Attributes

Imagefield attributes works in a similar way that ImageField extended worked in Drupal 6 by allowing site administrators to add custom attributes to image instances and then allowing content administrators to fill in those attributes.

Why Imagefield attributes?

Imagefield attributes is a more lightweight and targeted solution then file entities or field collections. The module will work on existing sites and is completely non destructive meaning none of your imagefields will be broken or have to be reconfigured (repurposing a site to use field collections or file entities can be time consuming and risky on existing builds).


The module works makes use of Drupal caching and static caching mechanisms to deliver the best possible performance. On sites with thousands of images with multiple attribute values you may begin to hit performance issues however null value attributes are not stored in the database so only images with attributes are recorded.

How to use

  1. Enable the module.
  2. Edit the image field you'd like to add attributes to. (For example, if the field you'd like to edit is within a node, go to content types; manage fields; and click the edit link next to the field.
  3. Under 'Image attributes' click 'add'


Schmooz started out with one simple goal: to organize the hundreds of comments that were posted on a single webpage. With this in mind, it has shaped itself into an innovative new way of online communication. Designed by Dhruvil Patel and developed by the WebPlanex Team, Schmooz is here to change the way people communicate on websites.

Want to have your own separate conversation on a webpage? We let you do that.

Want to favourite a stream of comments so you can view it later? We let you do that as well.

Want to mention a friend on Twitter directly from a comment? Yes, you read that right.


Organized Commenting

Schmooz allows every user the ability to start their own conversation. Instead of one continuous stream of comments, users can distinguish between different conversations and reply in the ones they want to participate in.

View multiple Conversations

Not only do users have the ability to take part in more than one conversation, they can view two conversations on a webpage at the same time, making reading and replying to comments super efficient.

Instantly See What's Trending

Multiple nodes with the same URL with Custom Module

1. Step) create MODULE INFO file like: name_gajendra.info

name = custom name_gajendra
description = name numerology
package = Drupal 7 Development
core = 7.x

2. Step) Create MODULE FILE like: name_gajendra.module


function name_gajendra_menu() {
$items = array();

$items['gajendra/name_gajendra'] = array(
'title' => 'Name Meaning',
'description' => 'Name Meaning',
'page callback' => 'name_gajendra_output',
// 'page callback' => 'drupal_get_form',
// 'page arguments' => array('name_numerology_form'),
'access callback' => TRUE

return $items;

function name_gajendra_output() {
$input_name = arg(2);
header('Content-type: text/plain; charset=UTF-8');
header('Content-Disposition: inline');

$name_number = name_number($input_name);
if ( isset($name_number) && isset($input_name) )
$display_message = "$input_name, your numerology number is $name_number";

$node = node_load(4); //hard coded now, write code to get node number dynamically based on name_number
$lang = $node->language;
$field = 'body';
$value = '';
if ( isset($node->{$field}[$lang]) && isset($node->{$field}[$lang][0]) )
$value = $node->{$field}[$lang][0]['value'];
return $value;

Invite multiple friends at the same time with Custom module

Step 1.) Create Module file like: yourmodule.info

name = "yourmodule module"
description = "Send Emails for multiple friends module"
core = 7.x
files[] = yourmodule.module

Step 2) Create module file like: yourmodule.module

function yourmodule_menu() {
$items = array();
$items['sendemail'] = array(
'description' =>'Provide invite form',
'page callback' =>'drupal_get_form',
'page arguments' =>array('yourmodule_form'),
'access callback' => TRUE

return $items;

function yourmodule_form($form,&$form_submit) {
$form['title'] = array(
//'#title' => 'email',
'#type' => 'textfield',
//'#name' =>'text1',
'#attributes' =>array('placeholder' => t('Enter Your E-mail address')),
$form['title1'] = array(
//'#title' => 'email1',
'#type' => 'textfield',
// '#name' =>'text2',
'#attributes' =>array('placeholder' => t('Enter Your E-mail address')),
$form['title2'] = array(
'#type' => 'textfield',
// '#name' =>'text3',
'#attributes' =>array('placeholder' => t('Enter Your E-mail address')),
$form['title3'] = array(
'#type' => 'textfield',
//'#name' =>'text4',
'#attributes' =>array('placeholder' => t('Enter Your E-mail address')),
$form['submit'] = array(
'#type' => 'submit',
'#value' =>'send invites',

return $form;

Menu Merge

Menu Merge merges two or more menus into one and creates a block called Mobile Menu.

This is just a simple helper I needed for theming purposes and by no means production ready, as configuration is hardcoded inside the module's code.