Over years of Drupal development we have found a great set of modules that are a requirement for nearly every project. Here they are in no particular order.
If you have not been using the Administration Menu module then you have been missing out. Truly, every Drupal site needs to use this module and disable the feature-lacking, built-in Toolbar module.
For one, it comes with great shortcuts to make tasks that would usually be buried beneath a tree of pages only one click away. Some built-in shortcuts are index, flush all caches, and run cron. There are some awesome developer shortcuts to view phpinfo(), entity info, variable editor, and view theme registry.
Secondly, the menu contains drop-downs for all submenu items so you can get to where you're going by hovering over menu items and clicking only once.
If you want to navigate the Drupal admin pages quickly, Administration Menu is great, but Coffee is unbeatably fast. Coffee creates a shortcut (alt+d) that opens up a text prompt overlay to quickly search for menu items. Want to quickly get to your Metatag admin page: alt+d, type "tag", press enter. Done.
For a lot of Drupal projects, jQuery Update is a necessity. jQuery 1.5 ships with Drupal 7, and it's about 4 years old at present, which, in web technology terms, is ancient.
New versions of jQuery have better features, are more secure, faster, and more efficient. jQuery Update allows you to pick a version to update your site to, and also allows you to run a different version of jQuery for admin pages vs normal pages.
As much as we try to limit the number of modules loading on a Drupal site, sometimes you end up needing a lot. Viewing 50+ modules can be daunting in the default Drupal modules admin page.
Module Filter provides a nice text filter to quickly search modules names and descriptions, and also includes tabs in the side bar for navigating module categories.
If you want your website to be found on the web, you must consider search engine optimization (SEO). Metatag is a very powerful enhancement to your website in helping to improve SEO, if you use it properly. Metatag makes it super easy to modify your pages metatag information. You can modify the standard title and description tags, but also the newly created open graph tags.
Filling in the proper information is crucial for allowing search engines to understand your site's content and display it properly.
If you have ever been frustrated with Drupal's content or people admin pages not having enough options for sorting, filtering, and applying operations, Administration Views is the solution to your woes. This module will automatically convert several Drupal admin pages into views with a table listing, filters, a search field, and the ability to do bulk operations.
The best part is, the views that Administration Views creates are completely alterable. You can go edit each view to add more filters, table columns, and operations. This can be quite powerful, as you could display other content field values, such as other referenced entities, and even search them!
Inline Entity Form
This module is great if you are currently using the Entity Reference module. Rather than just picking an existing entity to reference, Inline Entity Form gives you the ability to add new entities right where you are. It uses AJAX to display the entity creation form inline, and upon saving the new entity, creates a reference to it in the current entity you're creating.
We have noticed there can be some issues with all this magic happening, such as a loop where you have an entity referencing another entity referencing another entity referencing anoth........
It usually works fine though.
Think of the Bean module as what Drupal blocks should have been. Drupal's built-in Blocks module is very handy, but it could definately use some improvements; that's where Bean comes in.
Bean uses Drupal's entity system to create fieldable, blocks, and block types. With that amount of power, you can create very specific sets of block types that you can use in multiple regions of your site at once. With additional module functionality, such as using an entity reference field on your bean, you can display content in your blocks (including other beans!) all without using Views.
One of Drupal's great performance features is the ability to cache pages for anonymous users. This is great for sites that only deal with anonymous users. If you have users that are logging into the site, Drupal doesn't provide many caching options, and that's a problem.
To beef up site performance, caching as many pages as possible is one of the best things you can do. Authcache allows you to cache authenticated pages, and then display personalized information using AJAX or Varnish ESI. By caching 90% of the page content, and AJAXing in whatever small snippet is required, your web server doesn't have to work nearly as hard. If you pair Authcache with a cache server, such as Redis, your database won't even be required to display the cached content; again, speeding up your web server.
At Bonify, we really try to deliver the best products imagineable. Part of accomplishing that is testing our sites using tools like Behat.
Behat allows you to test your website in a behavioral way. This means that you aren't testing code, you are actually testing the process of going from points A to B and accomplishing your tasks. Behat makes this super easy to do!
If you need peace of mind that a new update, security patch, or hotfix won't break a piece of functionality that you've probably forgotten about, then you need to think about testing with Behat.
If you've had sleepless nights, like us, because you were concerned that you were writing custom code that didn't follow the Drupal Coding Standards, then Coder is for you. Coder allows you to check that your custom module or theme code follows the blisteringly exciting Drupal Coding Standards. It is able to tell you what line in your code has which issue. You are also able to check other module/theme code, although we're not sure why you would.
Remember! Clean code is happy code!
This module allows you to view theme information for any given page your on. This is amazingly useful. Have you ever wondered how to alter a section of your page? This module helps identify the theme functions being used to render content so you can create the proper template overrides, preprocessors, and processors.