One frequent request we get from clients is to integrate their Drupal web site user profiles with a Customer Relationship Management (CRM) system so that their users' information can be used for email messaging and other purposes.
In my last post, I glossed over MongoDB from a very high level. While it's useful to know how MongoDB works, I didn't cover exactly how to use it.
There are a growing number of NoSQL systems, and one of MongoDB's greatest strengths is its ease-of-use. It takes a couple of minutes to install the server, and commands are given using the familiar JSON syntax.
MongoDB is one of the forerunners in the NoSQL movement, an effort to promote non-relational, schema-free data stores. It lacks any table JOINs, which avoids performance bottlenecks seen with traditional SQL servers.
One of our goals at Forum One is to help our clients achieve a higher level of collaboration. The effective exchange of knowledge is one of the hurdles separating a good organization (or open-source project) from a great one.
One thing becomes clear if you use Drupal for a while... the built-in search is poor. This isn't unexpected, as search is a a hard problem to solve. And the best way to get around hard problems is to find someone who has done it well and use their work.
As a Web Developer here at Forum One, I've had the opportunity to work with a lot of modules in the Drupal Community. Some modules I've used are great and make working with Drupal a dream, others... not so much. I'd like to use this blog entry to focus on the must have modules I use on nearly all my Drupal projects. First off, you should know that I almost always start with Acquia's packaged distribution of Drupal called Acquia Drupal.
Panels is one of those Drupal modules that engenders a range of feelings around here. Some people love it -- interface configurable layout! -- and some hate it -- difficult to manage .5em gutters. But it, and Chaos Tools which it is based on, provide a great deal of useful functionality. The problem is there is very little documentation on how to extend it beyond what's distributed in code. The basics of extending Panels/CTools is pretty easy, you just implement the hook_ctools_plugin_directory to tell it where to look for your files, e.g.