20 Drupal Modules to Boost Your Website’s Functionality

Dec 28 2010 by Monica S. Flores | 23 Comments

20 Drupal Modules to Boost Your Website's Functionality

Drupal is a robust content management system that can do nearly anything you throw at it. Hundreds of Drupal modules–add-ons that extend the functionality of Drupal core–exist to help you create a powerful website.

This is a roundup of some excellent Drupal modules covering the following areas:

  1. Managing and displaying content
  2. User engagement and game mechanics
  3. User registration

Managing and Displaying Content

1. Menu Block

In many pre-built Drupal themes, the primary navigation bar (typically displayed across the top of the page) shows only top-level links. Drop-down, multi-level navigation is not automatically enabled in many themes. You can use Nice Menus to turn on fly-out and drop-down navigation, but you’ll still have to edit your theme files.

However, with the Menu Block Drupal module, you can easily add a new block that pulls all relevant navigation links together, and then you can place that new block anywhere on the page–in the content section, for example, or perhaps in the left or right sidebar.

Here’s a menu block set-up page that pulls links from the equivalent navigation menu and displays it as specified:

Here is the menu block in action, displaying the children of a particular page in the sidebar:

User Registration

2. Node Reference URL Widget

Node Reference URL Widget (requires the nodereference and content module in CCK) is a useful Drupal module that lets you refer to one piece of content from another.

Let’s say, for example, that your website has a lot of nodes in a content type called "People"; Jane Doe, John Smith and Maria Miller are nodes in this content type. You realize that you need to assign each person to a category to better organize the page, such as:

  • Staff: Jane Doe
  • Board: John Smith, Maria Miller
  • Volunteers: John Smith, Maria Miller

Using nodereference, you can assign each person to a parent category by creating a new CCK field. For example, you could assign a new person directly from the "People" category listing. In this scenario, on the details page for "Staff," you would click on "Add a new person" and they would automatically be categorized as a staff member.

Here’s an example of a node reference link to "Add an update about this event" at the bottom of an "Event details" page:

Node Reference URL Widget

And here’s what the new data entry field looks like for that particular update:

Node Reference URL Widget

3. Views Attach

In the example above, creating the "Staff" category also created the "Staff" page. You can use the Views Attach Drupal module (it requires the Views module) to create a content view related to that category. Here is a video showing you the power of CCK, Views, Node Reference URL Widget (above), and Views Attach used together.

Some ideas:

  1. You could create a view of all people who are categorized as "Staff" and a grid of staff headshot photos to display on that page.
  2. You could create a view of all documents that have been assigned to the Staff category, and then display the view of all documents (such as human resources documents, PDFs, etc.) directly on the Staff page.
  3. You could create a "Restaurant Details" page, then use the Node Reference URL widget to add a link to "Add a review to this restaurant," then use Views Attach to create a list of all member-submitted reviews directly under the restaurant’s details.

The following example shows the Views Attach module in action:

Views Attach

In the example above, we have a content type called "Series." Every series page has a built-in view that pulls in all of the content types marked as belonging to that series. This view can be themed or edited as desired; it can be displayed as a grid, list, table or slideshow.

4. Automatic Nodetitles

Sometimes you want to generate content automatically. Automatic Nodetitles generates titles for your content based on various criteria, including the date of creation, the user name responsible for the content, or the "parent" of a particular node.

For example, I personally have a "Product" content type. I want every new product image that falls under the "Product" content type to be automatically named with the parent product title. You can specify a token to generate the desired title of your node.

Automatic Nodetitles

In such a case, whenever content is created, a node title will also be automatically created.

Automatic Nodetitles

Here are the four new nodes and their automatically generated titles:

Automatic Nodetitles

5. Nodewords

For search engine optimization (SEO) purposes, you might need to add certain keywords to certain nodes (e.g. "pages", "announcements", "posts", etc.) on your website. The Nodewords module lets you specify keywords or key phrases on a node-by-node basis (instead of a website-wide, cascading basis). You can then track results with Google Analytics or Drupal core’s statistics-tracking feature.

6. ImageCache

The Image Drupal module defines sizes that you can adjust for any image uploaded by a user. The ImageCache module extends this functionality and lets you set up "presets" for image processing that include cropping, desaturating color, resizing images to exact sizes, rotating, resizing by aspect ratio, scaling and sharpening.

Automatic Nodetitles

Note: This module has been moved into Drupal 7 core, but is still useful to Drupal 6 (and below) users.

7. Views Slideshow

Most websites need some way to fit multiple pieces of information into a fixed space. This can be done by creating a "View" of particular data on your website. The Views Slideshow Drupal module can help make this view more interesting.

For example, you could create a view of the most recent articles, and then use the module to cycle through that view. You could set up a "Recent highlights" section showing the articles’ titles, images and teasers. You could set up a "Top-rated products" list that shows images, "Add to cart" links, titles and descriptions.

In the example below, we’ve created a slideshow of articles with a fade-in effect on the large photo and thumbnails across the bottom. The user clicks on a thumbnail to get to each article.

Automatic Nodetitles

In this next example, we’ve created a slideshow that fades in a variety of image details of certain products.

Automatic Nodetitles

8. Nodequeue

If you want to highlight certain items in a section, like an "Editor’s pick" section, and you want the website administrator to control what appears in that section, then the Nodequeue module will prove useful to you. The node queue can be set up to display according to your specifications.

Automatic Nodetitles

In this case, I’m allowing 15 articles in the queue at any given time:

Automatic Nodetitles

To add an item to the queue, a user with adequate permissions simply clicks "Add to highlighted" at the bottom of the node.

9. String Overrides

If you need to change the default language of parts of your website, you could hack the Drupal core code–strongly not recommended, just don’t do it–or you could use the handy String Overrides Drupal module to find a string and then override the matched text. This module lets you control a specific phrase anywhere on your website.

For example, on one of my websites, I needed to change the default check-out message because it didn’t suit the organization. I used String Overrides to make this task simpler.

String Overrides

User Engagement and Game Mechanics

10. Better Formats

Drupal comes with basic support for input filters, which allow administrators to specify what kind of HTML can be added by users. For example, an administrator might want to strip all formatting for novice users but allow links, bold text, italicized text and tables for advanced users. When a user creates content for a Drupal website, they have to specify which "input filter" they want to run their content through prior to publication–this can be an inconvenience, and can open the CMS to content-rendering issues because of an incorrectly chosen input filter.

However, with the Better Formats Drupal module, you can extend support for the default input filter that is assigned to a logged-in user.

String Overrides

For example, perhaps only the content provided by an administrator would be set to the "Full HTML" filter. This would save users from having to specify which filter to use, especially if they are eligible for many different ones.

String Overrides

11. Flag

A website with user-submitted content must be monitored for spam and for submissions that are against submission guidelines. Use the Flag Drupal module to allow users to flag (or bookmark) content that they want to return to.

You can use this module for features such as "Add to bookmarks," "Mark as inappropriate," "Flag as helpful" or "Add to wishlist."

Flag

You could probably think of other reasons to flag content.

12. Organic Groups

Organic Groups (OG) is an amazing resource for building mini-communities centered on specific causes or issues. OG lets your users self-organize by maintaining public and private groups and posting messages directly to their groups.

It’s an excellent way to encourage users to own their presence on your website. Each group can have subscribers and a landing page where the subscribers communicate between themselves.

Organic Groups

13. Private Messages

The Private Messages Drupal module gives users their own inboxes on your website and the ability to communicate with one another.

It’s used in conjunction with many other modules, such as the Advanced Profile Kit module, with which users get their own dashboards, and users with appropriate permissions can send private messages.

Private Messages can also be used in conjunction with the Advanced Forum module, in which users with appropriate permissions can send private messages to those who post in forums.

14. User Points

Social news and user-generated content sites such as Reddit, Hacker News, and Stack Overflow use a gaming mechanic often referred to as "karma" to encourage users to participate by being able to earn points for certain tasks (such as submitting good content or leaving a thoughtful comment that gets upvoted by other members).

You can set up a similar feature in your Drupal-powered website that assigns points to user-generated content. You could award points to users who complete their profiles, upload images, post comments or add events to the calendar.

Another novel way to integrate points into your website is to let users trade points for store merchandise and other perks. I’ve also seen users treat points as a kind of in-site currency; points are exchanged on the website, and real money is exchanged for points (for example, a user could purchase a product worth 250 points to quickly increase their total).

15. User Badges

Consider using User Points in tandem with User Badges–a Drupal module that allows users to unlock badges based on how many points they redeem. Alternatively, user badges could be awarded based on their participation or for doing certain tasks, which can then be measured with titles like "Sheriff," "Mayor," "Diamond user" and "Moderator," similar to social sites such as Foursquare.

16. Invite

Invite is a standard invite-by-email module that allows users with appropriate permissions to send invitations to their friends via email messages generated by your website, similar to invite-only community sites such as Dribbble and Forrst.

Invitations can be tracked and constrained (i.e. limiting the number of invitations available to each user). You can grow your website organically by challenging users to send invitations to their real-life contacts.

Invitation settings can be done by the administrator, as shown below:

17. GMap

Google Maps can integrate well with website content. Perhaps you’d like to add a "location" to a certain node (say an event, product or blog post). Use the GMap module to assign and display a map for certain content or users on your website. To use this module, you must sign up for a Google Maps API Key for your website.

18. Ubercart

Ubercart–a free open source e-commerce solution –is the most widely used e-commerce module for Drupal. Out-of-the-box users with adequate permissions, for example, can add products and allow authenticated users to purchase those products with check-out functionality. Enable a payment gateway such as Authorize, Google Checkout or PayPal to accept payments, and you’re ready to start selling your goods on the Web.

Ubercart features include shipping-quote integration with UPS/USPS, discount coupons by percentage or fixed amount, stock inventory control and many pre-built reports to track orders and customers.

There are plenty of configuration options and documentation in the official Ubercart site, if you would like to learn more.

User Registration

19. Login Toboggan

In Drupal, a website can have both public users (anonymous) and authenticated users (registered and signed into the system). During the authentication process, you can assign statuses to users; for example, you could offer memberships for a fee, or make day passes available with which users can get bumped up to a status that has more access permissions.

The Login Toboggan Drupal module helps you exclude pre-authenticated users–those who have registered but not yet confirmed their email addresses–from common functions and tasks that authenticated users are permitted to do.

User Registration

For example, I use Login Toboggan to assign a "pre-authenticated" status to a new user. At this stage, the user can review website data but cannot post reviews, give star ratings or add comments until they verify their email address. Once the user confirms their email address, Login Toboggan assigns an "authenticated" status, and the user is granted all of the abilities of authenticated users.

20. Facebook Connect

Facebook Connect is a nifty Drupal module that allows you to streamline the user registration process by letting users register and sign in with their Facebook accounts using Facebook’s authentication API.

If your website’s users are already on Facebook, consider opening up access to your website by allowing them to log in with their Facebook username and password, making it more convenient for them, as well as for you, so that you don’t have to store any user account data (such as passwords and email). This module requires you to sign up your site on Facebook.

To extend your Drupal-Facebook integration, try the DrupalforFacebook module. It integrates Facebook Connect, "Like" buttons, stream publishing and extended permissions for sharing information between a user’s Facebook and Drupal website profiles.

Conclusion

As you probably know, this is but a small sampling of the available modules in Drupal. As always, before working with new modules, back up your database, and save a copy of your website prior to making changes. To evaluate a module, go to its project page (which are all linked above) and review the bug list, the documentation, live versions of the module and the number of downloads (to see how popular it is).

Related Content

About the Author

Monica S. Flores is a web developer through 10K Webdesign, which focuses on websites for progressive organizations and membership groups. She founded a member community for success-oriented women ASuccessfulWoman and one of the first green business directories by and for women GreenBusinessWomen. Contact her through Twitter.

23 Comments

Usman

December 28th, 2010

I would like to say them Plugins, and all these are really nice, and I guess they will reduce much time which we need to customize drupal.

thanks Monica

Vivek Parmar

December 28th, 2010

thinking of getting started with drupal as i’m wordpress user and didn’t know anything about drupal.
thanks a lot offering such a good tut, it really helps me to get started with drupal

Darwin Betancourt

December 28th, 2010

Great post!!!

Maybe you can talk about WYSIWYG editors like as FCKeditor and others, which is better o more functional.
Another important area is about web standares with Drupal.

Congratulations again !!!

TheAL

December 28th, 2010

Man, so many good modules have come out in recent years. Most of the ones I use religiously have been out since 2007 or earlier. But some of these, like the menu one, are finding a place in my heart very quickly. Drupal just keeps getting better and better! And people keep using WordPress? Pfft!

ginanjar

December 28th, 2010

These are really nice. Thank you Monica for your sharing….

Philip

December 28th, 2010

Very interesting and very useful.

Thanks Monica!

Sayela

December 29th, 2010

Very useful information on the top Drupal modules for every functional website. Keep it up.

everlearner

December 29th, 2010

Thanks Monica.
Want to read more Drupal articles like this, especially for Views related modules and CCK related modules.

Happy New Year to Monica and the Six Revisions Team.
Regards

ManuelBS

December 30th, 2010

Really nice this blog post! Yesterday i discovered the module Conditional Fields (http://drupal.org/project/conditional_fields) this one saved my day so it should be mentioned here.
The module of mine (unique node phonem at http://drupal.org/project/bs_uniquenode may be a nice module to be mentioned to, especially if you capture some data structure with cck and you would like to avoid double nodes (e.g for node types person).

Thanks for explaing the module string overrides! I know this module ago but I didn’t know why it is good. Now I know, thanks!

Scott

December 31st, 2010

These are some great drupal modules. Thank you for posting!

TheAL

January 5th, 2011

Drupal 7 is now out! And it looks awesome!

GB

January 11th, 2011

Great article. It’s directed me to Login Toboggan which looks very very useful.

Glenn

January 12th, 2011

Thanks for the list. I’ll be certain to check some of these out that I’m not using yet.

Suresh Sancheti

January 13th, 2011

Thanks for such nice article. You are ideal website designer your article proved it.

jesse

January 14th, 2011

fantastic post Monica!

Elliot Ross

January 25th, 2011

good list – picked up a few here that I didn’t know about!

anyone else have only limited success with facebook connect + drupal?

Sam

January 28th, 2011

Wish I could afford to have someone as knowledgeable as Monica on my team. What a great writeup.

andre

February 24th, 2011

Thanks to the author, this is what I need

Anamika

May 30th, 2011

thinking to work on drupal, as a wordpress developer i dont have idea with drupal. nice tutorial for the newbies

eenaducinema

July 13th, 2011

Thanks for the list anyone else have only limited success with facebook connect

krishnaraj

September 29th, 2011

thanx for the information , its realy very useful

elvin xhimitiku

September 29th, 2011

hello

Can anyone help me with a user module to acomplish this task: i want anonymous user when they are registering, they should have the ability to chose which role they are signing up for. I should have the ability to expose the roles i want to, and people should choose what they want, like a normal member, silver member, premium member.

If anyone could help, please also email me at [EMAIL REMOVED FOR PRIVACY]

Thanks a lot drupalers

jayendra

November 9th, 2011

Hello Elvin,

There is a module auto assign role in drupal 6. You can use this module to allow anonymous user in user registration page to choose role.

Thanks

Leave a Comment

Subscribe to the comments on this article.