Ten Drupal 6 modules for every site
The following post lists and important group of modules that I use on every, or almost every drupal site I complete, either for myself, or for clients as well. The following drupal modules have features that I simply can't live without.
Some of the modules may be for administrative or development purposes only, and others may affect the front end disply of content. I've really used no criteria to select these modules other than I've used each of them multiple times, they work well, and the features are some that I feel should be included in EVERY drupal installation, and hopefully some of these items will be included in the Drupal core eventually.
Devel
The devel module is an extremely important module for developers to have and use on a regular basis. The core features help both module and theme developers alike. You can quickly display node variables when you are working on custom node types, and how to render the content. You can easily investigate theme functions responsible for rendering the page or section you are viewing.
Notes / Description from the Devel project page:
A suite of modules containing fun for both module and theme developers
- helper functions for Drupal developers and inquisitive admins. This module can print a summary of all database queries for each page request at the bottom of each page. The summary includes how many times each query was executed on a page (shouldn't run same query multiple times), and how long each query took (short is good - use cache for complex queries).
- Also a dprint_r($array) function is provided, which pretty prints arrays. Useful during development. Similarly, a ddebug_backtrace() is offered.
- much more
Theme developer (Drupal6 only)
Firebug for Drupal themeing. See the screenshot and screencast. Note that this module injects markers into the DOM to do its magic. This may cause some themes to behave erratically and less capable
browsers may make it worse (especially IE)/. Enable it when needed it, and disable it afterward. There is a handy link in the devel block to do just this.Generate content
Accelerate development of your site or module by quickly generating nodes, comments, terms, users, and more.
Node Access Summary
View the node access entries for the node(s) that are shown on a page. Essential for developers of node access modules and useful for site admins in debugging problems with those modules.
For any serious Drupal developer, the devel module is key in quickly setting up and configuring themes and modules to meet a projects specification. It is usually uninstalled or disabled once a project is 100% "live" or in client hands simply as not to include a complex set of tools that the client, unless VERY technical regarding debugging errors, shouldn't really be messing with.
CCK (Content Construction Kit)
CCK allows a developer or site administrator to quickly add custom fields to node type. So for example, if you are using the story node type, but want to include a custom field for a link to the source for the news item, you could do this with CCK.
The CCK core is fairly simple, and it is best complimented by a number of CCK related modules. These modules do nothing on their own without the CCK core to provide the functionality, but simply add additional field types to the available types you can create using CCK.
- computed field: lets you add a PHP-driven "computed field" to CCK node types
- date: creates an ISO or unix timestamp date field
- email: validated email field
- image field: an image field
- link: a URL field
By default, for the basic user adding fields with CCK, the module automatically inserts the field name and value into the node. This is modified using the CCK interface, and using a custom template, you can greatly enhance the appearance of the CCK fields that have been added to the specific node type you are viewing.
For example, in the projects section of this site, I have a custom node type called "project" and have created a custom node template called node-project.tpl.php. By using this, I have been able to add a few of the custom fields to a specific location in the template. This is demonstrated here in the page regarding my resume. You can see several fields included in the area where the "submitted" information is held.
CCK is a module that simply can't be left out of a Drupal installation for any serious developer. It adds a complete level of flexibility to the setup of content types, and how they are rendered to the visitors. A must have for ANY serious site that is looking for unlimited flexibity on how content is gathered and given to the user. This module is very well complimented by the Views module, mentioned next in our top ten list.
Views
If the CCK module is the meat, Views are the potatoes, or if CCK is the peanut butter, Views are the jelly. While CCK operates just fine on it's own, they compliment each other so well that it's hard to not have both.
Views allows you to visually build a custom query without understanding SQL syntax that will build a custom page or block or even feed that will be represented to the user. So let's say you have a custom field created with CCK called "user birthday". You can use Views to create a custom block that will display current users who's birthday it is. Or you could create a custom page with a table or list of users who have a birthday coming up this month. This is just a simple, simple sample of how Views can be used. Once you've used it just a few times, you can start building more complex Views that render information EXACTLY how you want it. Views can also be used to completely replace the home page view.
Notes / Description from the Views project page:
The views module provides a flexible method for Drupal site designers to control how lists of content (nodes) are presented. Traditionally, Drupal has hard-coded most of this, particularly in how taxonomy and tracker lists are formatted.
This tool is essentially a smart query builder that, given enough information, can build the proper query, execute it, and display the results. It has four modes, plus a special mode, and provides an impressive amount of functionality from these modes.
You need Views if:
- You like the default front page view, but you find you want to sort it differently.
- You like the default taxonomy/term view, but you find you want to sort it differently; for example, alphabetically.
- You use /tracker, but you want to restrict it to posts of a certain type.
- You like the idea of the 'article' module, but it doesn't display articles the way you like.
- You want a way to display a block with the 5 most recent posts of some particular type.
- You want to provide 'unread forum posts'.
- You want a monthly archive similar to the typical Movable Type/Wordpress archives that displays a link to the in the form of "Month, YYYY (X)" where X is the number of posts that month, and displays them in a block. The links lead to a simple list of posts for that month.
Views can do a lot more than that, but those are some of the obvious uses of Views.
pathauto & token
The pathauto module extends on the path module, creating custom URL names in real time.
The Pathauto module automatically generates path aliases for various kinds of content (nodes, categories, users) without requiring the user to manually specify the path alias. This allows you to get aliases like /category/my-node-title.html instead of /node/123. The aliases are based upon a "pattern" system which the administrator can control.
What this does, is allow you to for many different types of content, configure exactly how you'd like the URL to be constructed. You can specify things like title, date, author, and TONS of other elements provided by the token module. Why the token module is also mentioned, is that it is required by the pathauto module in order to work properly. By using these "tokens", you can configure the URL structure of your site 100% without having to fill in the path field for EVERY single page you create.
FCKeditor
FCKeditor is a WYSIWYG (What You See Is What You Get) editor which provides a way for users to create valid HTML/XHTML code by using a familiar interface similar to a program like Microsoft Word. A must have for your clients to be able to easily edit pages in a "familiar" format. For a programmer, it might not be needed, but still good to have.
Notes / Description from the FCKeditor project page:
WYSIWYG editor
This module allows Drupal to replace textarea fields with the FCKeditor - a visual HTML editor, sometimes called WYSIWYG editor. This HTML text editor brings many of the powerful WYSIWYG editing functions of known desktop editors like Word to the web. It's relatively lightweight and doesn't require any kind of installation on the client computer.
Browser compatibility
FCKeditor is compatible with most of the internet browsers, including
- Internet Explorer 5.5+
- Firefox 1.0+
- Mozilla 1.3+
- Netscape 7+
- Opera 9.5+ (FCKeditor 2.5+)
- Safari 3.0+ (FCKeditor 2.5+)
Drupal compatibility
There are releases for drupal 4.7, drupal 5 and drupal 6. Older releases are available from CVS.
The 6.x-1.x release of fckeditor.module is fully compatible with FCKeditor 2.5.1+.
The 5.x-2.x release of fckeditor.module is fully compatible with FCKeditor 2.5.1+, however it should also work with the 2.4.x versions of the FCKeditor.
The 5.x-1.2 release of fckeditor.module works with the 2.4.x versions of the FCKeditor component.
The 4.x release of fckeditor.module works with the 2.4.x versions of the FCKeditor component.Required components
To use FCKeditor in Drupal, you will need to download the FCKeditor
More information and licence
For further information please refer to: the FCKeditor homepage
Image/File browser
The integrated file management needs a bit of manual configuration, more information about this is in the included readme.txt file.
At the moment there are several options for using images in FCKeditor.
- The built in filemanager, which needs some manual configuration.
- The IMCE module which needs almost no configuration.
- The Image Assist module
- The upload module - which allows file and image attachments to nodes. By copying the URL of the attachment you can use it in the FCKeditor dialog.
Please remember that enabling visitors to upload files to your site can be a serious security risk, don't give that access to users you don't trust... and exercise caution anyway.
IMCE
IMCE is an image management system that is a MUST have for simple file management without needing FTP access for uploading files.
Notes / Description from the IMCE project page:
IMCE is an image/file uploader and browser that supports personal directories and quota.
Since its first release, IMCE has been used as a file browser in many popular rich text editors such as FCKEditor, TinyMCE, WYMEditor, Whizzywig etc.
It has been also used for inline image/file insertion into textareas. This is a built-in feature that can be used stand-alone or with a text editor such as BUEditor.
Here is the list of features:
- uploading jpg, png, and gif images and previewing.
- support for non-image file types.
- support for private downloads.
- limits for file size per upload, total directory size(quota), and image dimensions.
- personal or shared folder for users.
- file sorting according to file name, file size or date.
Comment Subscribe
The Comment Subscribe module is something that really amazes me isn't included in core Drupal functionality. This allows a user who posts a comment to either track replies to their specific comment, or replies/new comments to the node itself based on administrative settings set by the site admin. The only feature missing from this is allowing the node creator to automatically get notified of all comments to the node.
Notes / Description from the Comment Subscribe project page:
This module allows anonymous as well as registered users to subscribe to individual comments of given node. When a user, either anonymous or registered, posts a comment, he/she can subscribe to that comment and will be notified of replies to that comment. Notifications will have a teaser of the node and a link to the comment. Notifications will also have links that will allow the user to unsubscribe from notifications for that particular comment or unsubscribe from notification for all his/her comments on that node.
Global Redirect
The Global Redirect module is a great addition to the core of every site. If the site is using the "clean URL" feature, what this does is make sure that the URLs being accessed are unique, and the appropriate URL intended for the content. This should truly be included in ANY drupal installation.
Notes / Description from the Global Redirect project page:
What?
GlobalRedirect is a simple module which…
- Checks the current URL for an alias and does a 301 redirect to it if it is not being used.
- Checks the current URL for a trailing slash, removes it if present and repeats check 1 with the new request.
- Checks if the current URL is the same as the site_frontpage and redirects to the frontpage if there is a match.
- Checks if the Clean URLs feature is enabled and then checks the current URL is being accessed using the clean method rather than the 'unclean' method.
Why?
Once enabled, an alias provides a nice clean URL for a path on a site. However Drupal does not remove the old path (eg node/1234). The problem is that you now have two URLs representing the same content. This is dangerous territory for duplicate pages which can get you sandboxed by the search engines!
Lightbox 2
Ligthbox2 is a module that incorporates the Lightbox 2 javascript code.
Notes / Description from the Lightbox2 project page:
The Lightbox2 module is a simple, unobtrusive script used to overlay images on the current page. It's a snap to setup and works on most modern browsers.
The module places images above your current page, not within. This frees you from the constraints of the layout, particularly column widths. It keeps users on the same page. Clicking to view an image and then having to click the back button to return to your site is bad for continuity (and no fun!).
Important Changes/Dependencies
5.x-2.0 & later, 6.x
Lightbox2 5.x-2.0 and later versions now all use the jQuery library instead of the Scriptaculous and Prototype libraries, so there is no need to download and install a separate third party package.
The fact that this now uses jQuery is huge. Drupal includes jQuery by default, and personaly I greatly enjoy using and integrating jQuery code over the painful scriptaculous library. It's a much more friendly Javascript Library that allows the developer to spend time in other places that working on the javascript code.
This module is a must have for any site that is posting lots of images, or wants to link thumbnails to a larger version of the image while keeping the user on the same page.
Nodewords (Custom Meta Tags)
The nodewords module is another module where the functionality should be included in the core Drupal setup. This module allows you to add/edit meta tags (description/keywords) for each node you create. You can also set default meta tags for all pages, custom views, etc.
A must have for any site admin that believes meta tags still affect SEO.
Honorable Mentions
webform
Every Drupal developer hates creating a custom form as it requires building a custom module/page using the Drupal Form API. The webform module allows for a custom form to be created quickly, even by someone not familiar with programming.
This module adds a webform nodetype to your Drupal site. Typical uses for webform are to create questionnaires, contact or request/register forms, surveys, polls or a front end to issues tracking systems.
Submissions from a webform are saved in a database table and can optionally be mailed to a nominated e-mail address upon submission. Past submissions are viewable for users with the correct permissions.
Webform includes some simple statistical tools to help in form design and evaluation and also allows the whole table to be downloaded as a csv file for detailed statistical analysis.
tagadelic
Tagadelic is a small module, without any databases, or configuration, that generates a page with weighted tags. The cool thing is that by merely altering font sizes, these lists suddenly gain a dimension.
Tagadelic offers various ways to add terms and vocabularies in one tag cloud. By using the urls, you can create your own clouds pages.
It also offers a sideblock for each taxonomy tree.Because examples are cooler to look at then PHP or ugly ASCIIart READMEs, we want your implementation of tagadelic. Please post it in a comment to this project.
Related modules
wp_comments
The wp_comments moudle is a simple module that rearranges the comment form so it looks a little cleaner, similar in appearance to the default Wordpress comment form style. I like to use this just because it is quick as hell to implement, and I don't have to fuss with major CSS to accomplish.
Any module that can save me time on the design/CSS side is aces in my book!
feedapi
The feedapi module is one I've just recently started using here at himerus.com in the drupal jobs section. Rather than using the built in Feed Aggregator module, which doesn't allow a lot of customization, this module allows you to pull a feed, and then take the information and insert it into a node.
This provides a great way to build content on a site with related feeds. You can link to the information on your own site, including advertisements etc., basically building our relevant content on your own pages, and linking off site only after a user has been interested in the summary of the item and clicked on a "read more" type link. This gives you a chance to monetize those feeds on your own site prior to linking off-site.
This module could prove to be very useful in future projects, and there will likely be a further review on it at a later time. It could have easily made the top 10 had I not found it just in the past week, so I haven't had time to evaluate it well enough yet to include it there. But well worth the honorable mention.
Conclusion
So, we've been through what I would consider 10 modules that a drupal developer shouldn't live without, along with a few brief honorable mentions as well.
Hopefully this can help someone narrow down some good choices for modules on your own site. I've spent quite a bit of time with these modules, and have grow to rely on the features that they integrate into Drupal. Enjoy!
General Categories
My Latest Tweets
- Please wait while my tweets are loading, or if there's an issue, just go to my twitter page.
subscription.
HI,
I use the subscription module. It seems to send email for a node or type.
So if someone comments on the node I get an email.
But for image, node, story any type. Actually even a tag.
Antonio
Comment Subscribe Module
Since I've written this, I've already moved from the Subscription module, which is a bit confusing, and just too many options in my opinion to the simpler Comment Subscribe module. (http://drupal.org/project/comment_subscribe)
It's the one you see here now that just offers a single checkbox for registered, and anonymous users to subscribe to replies.
The only thing it doesn't offer that I'd really like is for the node author (me) to automatically receive email notification on the first reply.
I've been using the Token and
I've been using the Token and Token Actions modules to send me e-mails whenever a comment is submitted and also using Comment Subscribe to allow users to subscribe. By the way, thanks for the wonderful Share This module!
Must-have is a matter of need
Modules like Comment-Subscribe aren't, in my opinion, included in Drupal core for several reasons, one of which is the fact that not all sites want comment on the content-it's functionality that you can add if you need it. I use this module on blog-esque and community sites, but when a client wants a CMS, as opposed to a blog, comments aren't often used.
Module for related nodes?
These are great modules, thanks.
Do you know if there is a module out there to relate nodes to each other. For example, I'd like to relate nodes of type video, image, or audio, for example, to a story. What is the best way to do this?
Great listing
Awesome listing.
Post new comment