My favorite modules (Drupal 7)
I've read many blog posts about top ten, top twenty, top one thousand modules on the internet. I agree with most of them, give or take a module or two, but most of them are very much alike (again, give or take one or two modules).
My agenda with this post is not to tackle a "Top ten" list (or to degrade that effort in any way :-), but more to list my favorite modules and why they are. And I only list those who don't normally appear on other lists. For a great list of "Top ten" modules, you can, for an example, read Mediacurrents blog on Top Drupal 7 modules, winter edition (http://www.mediacurrent.com/blog/top-drupal-7-modules-winter-2014-edition) or to see a comprehensive list of installed modules go to Drupal's Project usage overview page (https://www.drupal.org/project/usage).
1. Scald (and it's friends) (Content)
Yeah, it's no 1. And will be, at least for Drupal 7. I love this module for many reasons. The biggest one is the Media management system, and the fact that everything is an atom inside Scald, instead of file, like Media handles it.
You can add fields to the atoms, you have Title, Author and Tags as default and you can add your own thumbnails to files like PDF's and MP3's.
It's media usage handling is also great. You have a sidebar in your content editing system where you have everything at your mousepoint, without opening a second window and click three times. It's contextual, so it only appears if you have a field in your content type that can accept a Scald atom.
The biggest advantage is the WYSIWYG integration (along with the MEE module, which installs with Scald). When configured correctly, you can drag an image right into the editor, render it with correct image style, add HTML5 wrapper (figure and figcaption) and give them correct styling classes.
The biggest problem about Scald is configuration and where to find it all in one place. That's why I have written a blog series about how to install and configure it. If you are interested, you can find the starting article here.
2. Field Collection (Content)
I once heard that this module was a complete No-no in some companies, so for ages I didn't touch it. Then a co-worker showed me an integration where he used it for a carousel with text and after that, I was sold.
I use Field Collection a lot. Very often I have to have an image and caption inside a content type, and of course, infinite number of it! Thats where it comes in strong.
Another cool feature is multi-usage. Since inside of your main content type, you reference the Field Collection, you can use the "collection" in multiple content types if you want. I intend to write a blog post on Field Collection shortly.
3. jQuery Update (Frontend)
jQuery inside Drupal 7 is a headace. As we all know, if we install a newer version of jQuery, the admin section breaks. And I've broken it few times.
Since version 7.x.2.4, it finally offers you to select a different version of jQuery for the admin section. It's not the optimal solution, since if you want to use jQuery 1.5+ for your frontend, you have to supply two versions, but luckilly you are just doing that for the admin users and not the anonymous user.
A definate module for frontent developers
4. Entity Reference (Content)
I love Entity Reference. Not only I can reference whatever node I want, but I also get the referenced node inside the main node as data. The only "defect" that I haven't figured out yet is "two-way-reference". If I reference a node from A -> B I would like to have the option to refence it back (B -> A). There are other modules who do that, but I haven't got them to work as intended. But then again, I might just write a patch to "fix" that in Entity Reference.
5. References dialog (Content)
With the Entity Reference module, I use References dialog extensivly. It gives me a "Add" (and more) button for the referenced field, and if pressed, it opens another Create dialog, where you can create the referenced node. When you save that, it returns to the main node with the reference.
Let's say you are creating a person. The person has a name, birthday etc., but it also have parents. If the parents are not already a node in your system, you can press Add and create the parent and then go on with the person. And it can create another dialog on top of that (I've managed to create two additional dialogs). A nifty little module.
6. Field Group (Content)
This one should actually be in Core (and I'm not a big fan of pushing everything into core). It groups your fields into managable sections, specially if you have content types that have a lot of fields that are optional. One of it's features is to flag if it should be open, collapsable or even collapsed as default. So your user will have a neat input section where they can open the section the need, when and if the need it.