HowToDoThings.com - Everyday experts solving people's problems
How To Do Things.com, a community sharing their expertise to solve people’s problems. After 6 months of specifications, migrations, Drupal module development, theme designing and beta testing, we are please to announce the full relaunch of HowToDoThings.com. (original description found at http://drupal.org/node/174887).
We house over 3500 unique member articles found in 300+ categories. We when launched the beta site, we were also one of the first sites to fully implement the Google AdSense API framework with 50% revenue sharing with our authors.
What we left behind
When we considered migrating to Drupal, we were running off of a homespun ASP.net/MSSQL/IIS based CMS. More over, an outside contractor owned all of the hosting, database and development thus making the maintenance of the site completely dependent on resources outside our company. New features would have to be built from scratch, tested and then deployed, typically taking days or weeks to implement, depending on the availability of the one contractor.
Since this situation was going to inhibit our growth opportunities with the site, we took six months to evaluate Drupal, draw up new specifications for the site (refining and extending the feature set beyond the current in-house product), test contributed modules, develop new custom modules, design and implement a new theme and migrate all the old content. Through much learning and sweat, this effort has laid a strong foundation for future growth of the site, and the dividends of using an open-source solution are starting to pay off. We have also greatly increased our in-house Drupal expertise and made a few meaningful contributions back to Drupal.
Out of the box surprises
While reviewing the features of Drupal that comes standard in the core distribution, our editors were pleasantly surprised with and thankful for a few features:
- Article page view counters (and the ability to sort by page views).
- Secure Password recovery tool.
- Revision tracking of all articles.
- Article commenting.
- Configurable Block content.
All these features came for free just by choosing Drupal as our CMS, and had not even been placed on in the initial requirements document.
From a developer perspective, Drupal offers us:
- Website and form submission security (not dependent on the security knowledge of one contractor)
- Terrific framework to extend
- An entire support community versus one individual (one site down issue was resolved in under 4 minutes with an email to the support mailing list)
- Open source and highly transparent development
How Drupal decreases our development cycles (from core to contributed modules)
We installed around 50 contributed modules for various purposes around the site. Due to these well written modules, our editors are regularly surprised at the speed we are able to extend the sites functionality. Creating new workflow states or a report to list articles in a new way can be done in real time. No development time needed, just some interacting with the admins screens is all this is needed.
Need to add rich text editing to a profile field? Just add a new rule to TinyMCE.
Want to see the difference between the original article, and the changes the author has made in the new revision? Just install and configure the diff module. organizing a demo of the diffmodule took more time than to download and install it.
Need a central place that they could manage the incoming articles, applications and other submitted content? We already had reporting views for each of these separately, so we just joined them into a new panel. Done.
An extended example
A 6 hour effort in Drupal against a 2 day coding effort plus contractor communication/management overhead.
We wanted to start a recruitment campaign to bloggers, with the obvious requirement of wanting to measure the success (or lack of success) of the campaign. We didn't want to merely measure the number of new registered users, but also their expertise applications and published articles. So we installed the Referral module and instantly could track incoming member referrals. A great start. On top of referral module, we created a module that also tracked which referral campaign (entry landing pages) the new member entered through which dovetailed neatly with the Referral module. We also created a new report that adds some addition information about the user (i.e., number of articles they have published on the site). Now we can track each new referral in a new dimension, besides just which user that referred them.
The whole project including research and installation of the Referral module, adding a custom table to capture our campaign information, adding the tracking information into the referral modules reporting, and creating a new report page only took 6 hours (not counting the overhead of pushing a change to the production server).
How we did it, some highlights
To integrate the Google AdSense API, we wrote a custom module to handle the processing to and from the Google servers. Using a NuSoap implementation, we are able to sign up new member to the AdSense program, and save their IDs into our system. Then we integrated the Drupal AdSense module to render the ads consistently across the site. We were hoping to contribute this module to the Drupal community, but at present it is tailors too specifically to our particular site implementation.
Our Expertise system is based off of the tac_lite module, with many custom interactions. For a member to become an expert writer in a category (and thus submit articles), we ask them to fill out an application that is reviewed by our editors (using the workflow modules to keep track of the various states an application can exist in). If approved, then the categories listed in their application grant them access to write articles in those categories. We also have an intelligent Suggested Topics area that tries to give inspiration to an author with writer's block. If they are not already approved to write in a particular category, a prepopulated application is brought up for them to complete.
Category pages are a Panels mashup of featured article CCK nodes, popular/latest views, drill down views and Taxonomy_Context output. Custom views header PHP code tie together the different areas of the pages.
We also created a site specific custom module that took care our particular initialization, logging, form alterations, custom pages, menus, blocks, and cron jobs. The 1500+ line modules is the glue that keeps the site from falling apart.
Some of the standard must have modules were included:
- CCK (with imagefield and link field extras).
- Service_links and forward - hoping to virally spread the word.
- Panels - All category pages, as well as member and editor dashboards were created with this versatile tool.
- XML Sitemap and pathauto - SEO friendly is name of the game.
- views - A reporting engine of great value.
Incomplete list of other modules used:
- Actions - Fire configurable emails to authors of submitted articles and other content. We can't wait for Drupal 6's implementation of actions. (add link).
- Adsense - Help to monetize the site
- Adsense_api (custom) - A streamlined custom implementation of the Google Adsense API. Enables members to create or associate AdSense accounts to HowToDoThings.com.
- Diff - Enables our editors to quickly see the changes made to an article by an author.
- Globalredirect - Helps make sure previous site links are forwarded to the new Drupal paths.
- Google_cse - Embed a Custom Search Engine from Google, while monetizing the results page slightly. Very fast and up to date.
- Jrating - a simply great voting widget.
- Masquerade - Excellent small tool to see the site as one of our members would see the site. Good for QA testing new logical paths through submission process of a contributor.
- Prepopulate - a great tool to create intelligent links. Helps speed up registrations and article composition when a few key fields are automatically filled in. Also, handy for 'hidden' tracking fields.
- Referral - Recruitment campaign tracker. With a little custom layer on top of referral we are able to track how many articles and other submissions are made by each referred member.
- Taxonomy_breadcrumbs and taxonomy_context - Good tools to keep our strong category structure consistent through out the site.
- Workflow - Perfect tool to create a submission/resubmission flow for articles and other submissions. Coupled with the Actions module for great efficiencies.
All said an done, we are pleased with the outcome of our migration to Drupal. With this foundation we are sure that new features and designs can be quickly implemented into the site and we are confident in the direction Drupal 6 is heading.
