One of the real strengths of the Drupal community is the wide variety of superb contributed modules that make development tasks easier -- or just make life easier for your client. Here, we'll talk about several that we've used, a number on recent projects, and that have been a big hit.
First up are two helper modules for IMCE, the terrific module that provides image and file uploading and browsing. You've probably heard of IMCE and may even be using it, but these add-on modules make it even more powerful.
Organizing files in subdirectories is made possible by IMCE Mkdir. Enabling this module gives you two new options for directories under each IMCE profile (in D7, Configuration >> Media >> IMCE) -- "Add Subdirectories" and "Remove Subdirectories". When you check those, users with those profiles and permissions will see a new "Directory" tab in the IMCE browser, and they'll be able to create directories on the fly in which to store the files being uploaded.
Below: IMCE file browser before enabling IMCE Mkdir:
Below: IMCE file browser after enabling IMCE Mkdir, with new Directory button:
IMCE for FileField has proven to be very useful for clients who want to upload files through their WYSIWYG and then have access to those files in a FileField too. You'll need to visit the "Manage Fields" page for your content types and edit the Image or FileField in order to enable IMCE file browsing for those fields.
Above: When you install IMCE for FileField, you can enable the file browser for any of your image or file fields.
On occasion, a client wants to dump a bunch of files into the Drupal files directory and then have access to them through IMCE. IMCE for FileField makes this possible too.
Above: Image field with the file browser link that IMCE for FileField adds.
If you need more options than IMCE for FileField gives you for working with files in Drupal, take a look at FileField Sources. It allows you to use autocomplete to select existing files that have already been uploaded, or enter a remote file URL from which the file should be transferred. It also provides a file browser like IMCE for FileField, although the latter's browser has more features, so you may want to go with that if the browser is the only feature you need.
The Field Collection module (D7 only) allows you to group a number of related fields together. You can also re-use the collection -- which is just an entity -- in multiple content types. Best of all, you can specify any number of instances of the collection in your content type. In fact, take a look at our own site, at "Our Story" for instance -- each topic on the page is a Field Collection with title, image, and text.
Above: Field Collections allow you to group several related fields together -- and to reorder them in one motion on the node edit page.
We used Field Collection recently as part of a solution for a client who wished to display rotating banners on every page -- potentially a different set for each page. Rather than have a multitude of views and nodequeues, we created a separate content type that contained an unlimited number of a Field Collection grouping. The collection has a link (with title) and image. An additional field in the content type allows the client to specify on which page the banner set should be displayed -- kind of like visibility for Blocks. There's a lot more to the solution than this, but Field Collection was the missing piece that let us do what we envisioned and we're sure we'll be using it a lot more in the future.
Last but not least, an oldie but a goodie -- and one I'm constantly surprised to find some people still aren't aware of -- is External Links. It's a perfect example of a module that does one thing and does it well: it differentiates between internal and external links on a site. You can configure it to optionally display a small icon next to external links (or even mailto: links), automatically modify the HTML for external links so that they open in a new window, or warn the user when they are leaving the site to visit an external link. Next time your client says, "Can you make all the external links open in a new window?", just reach for External Links.
Above: Configuring External Links.
Thanks for reading -- if this helps you learn about just one new module you didn't know about before, it was worth it. And please let us know which modules you like and think the rest of the world should know about too!