
www.in-fisherman.com
Abstract
Mediacurrent collaborated with InterMedia Outdoors, Inc. to redesign their family of interactive websites using the Drupal content management system as a foundation. This required the migration and restructuring of content from several websites hosted by a legacy content management system (CMS.) The result was a fresh, modern web design and a social network that allowed Intermedia’s users to access a vast repository of content quickly and easily.
Company Profile
InterMedia Outdoors, Inc. (IMO), is the leading multimedia company serving the needs of outdoorsenthusiasts. The IMO brand boasts the largest network of websites (16 total) dedicated to hunting,shooting and fishing; a portfolio of 15 magazines including powerful brands such as In-Fisherman, FloridaSportsman, Guns & Ammo, Petersen’s Hunting, and Fly Fisherman; 25 market-leading televisionproductions; 2 syndicated radio shows; 200+ hours of television programming and one television network– The Sportsman Channel. InterMedia Outdoors serves the interests of 80 million devoted sportsmen inthe pursuit of their passions.
Challenge
In-Fisherman.com is the premier online destination for anglers worldwide. The site serves to complementthe print magazine In-fisherman, a 30 year staple in the outdoor publishing industry. In-Fisherman.comwas initially built using a proprietary CMS that was inflexible and troublesome to customize - featuressuch as social networking and tagging were difficult and time consuming to implement. However, thesechallenges played into the strength of Drupal.The aggregate site traffic of IMO’s portfolio of sites reached nearly 100 million page views during the first6 months of 2008, and numbers continued to climb. More specifically, the In-Fisherman.com siteaverages 67,789 user visits, 266,379 page visits, and an average of 4:1 page visits/user visits in a typicalmonth. Thus, scalability was at top of mind throughout the project.
Why Drupal?
The decision for IMO to use Drupal came after an unsuccessful attempt to build out In-Fisherman.comwith another CMS. The deciding factors for selecting Drupal were:
Scalability - Drupal was perceived as the most scalable and extensible open source option.
Cost - No licensing fees.
Multi-site / multi-database architecture - Drupal’s flexible multi-site configuration would allow IMOto store content and user data in multiple databases for a single site. Multiple databases would keepdistinct areas of the site operational in the event of database failure from server load. The user data isstored in its own database and the gear/angler/www sites are set-up to seamlessly pull user datafrom that separate database.
Hosting - The expected traffic for the site demanded a low-cost enterprise level hosting environment.Drupal and the LAMP stack were a natural fit.
Flexibility - IMO’s previous CMS was inflexible, making it difficult to implement new and innovativefeatures. Drupal’s modular framework, API and theme override capabilities made it the top choice.
Theme customization - Drupal’s separation of presentation and business logic through the themelayer allowed the In-Fisherman.com UI to undergo significant revisions during and after development.
Active development community - A fragile economy encouraged open source software vs. aproprietary vendor solution. IMO was looking for a community with solid leadership and momentum.In addition, the Mediacurrent offices were local to the project stakeholders and allowed for enhancedinteraction.
Goals
In our initial planning sessions, several primary goals were indentified. The most important success factors included:
- Usability – Create an engaging web experience for users by leveraging IMO’s vast repository ofsportsman-related content and video. The new site functionality would take user participation to a new level.
- Branding – Provide a more modern, contemporary look and feel that reinforced the magazine brand.
- Content – Give anglers the ability to quickly find the information they’re seeking by using a well defined taxonomy structure and lists of articles tailored toward a user’s individual preferences. This needed to work for both anonymous and registered users. The objective was based on articles theuser has previously visited as well as interests specified in a registered user’s profile.
- Scalability – Build with scalability in mind. IMO has several high traffic sites in their corporate umbrella. Careful consideration needed to be given to scaling, isolating points of failure andconfiguring the site to fail “gracefully.”
Hosting Architecture
In-Fisherman.com needed to handle thousands of page views per day. The hosting environment requiredthe ability to balance anonymous page requests, authenticated page requests and traffic spikeseffectively. IMO’s system administrator spent months of research, planning, and devising an internalhosting infrastructure that was enterprise caliber. The hosting architecture consists of a series of shuttleservers storing cached content, a file server and a dual database cluster. Page requests are routedthrough a Cisco Load Balancer. The balancer identifies a shuttle server that’s “open” for serving the inputbased on the number of requests it’s processing at that time. Stress tests on the enterprise serverarchitecture proved that Drupal was more than capable of handling. The idea of using memcache orXcache was tossed around, but abandoned in the end, because the hosting environment’s performancetesting exceeded requirements.
Development Process
IMO’s team developed the initial requirements document, which was beneficial. Mediacurrent adopted anAgile methodology for developing the site. A team of 2-6 developers simultaneously worked inconjunction with IMO’s management team throughout the process. Development progress was trackedthrough the open-source project management tool called Active Collab, and its web-based ticketingsystem. Active Collab’s commenting feature helped the Mediacurrent team collaborate effectively. Thereis no shortage of other project management tools out there, but for what it is worth we felt Active Collabfulfilled our needs. Overall, task management and dialogue between IMO and Mediacurrent was primarilyhandled by a project manager, and frequent updates were exchanged on a daily basis. Weekly stand upcalls with IMO stakeholders provided an opportunity for more formal question and answers, and forvaluable debriefing time.
Design and Theming
Intermedia Outdoors tapped a New York-based agency to create the user interface design for the sitemonths before Mediacurrent started site development. Mediacurrent chose the Zen theme to adapt theIn-Fisherman.com design. The Zen theme dramatically cut design time. As requirements shifted, thehighly relevant CSS structure of the Zen theme allowed for impromptu changes to the UI without breakingpage layouts. Mediacurrent also built several custom modules to streamline theming.
The custom content module was used in place of Panels (at the time Panels 6.x was not recommendedfor production use). This allowed for complex content presentation on the front page and species channelpages. Several custom Flash-related modules were written to provide XML data to Flash widgets acrossthe site. These modules create XML data based on taxonomy. Mediacurrent’s final theme was extensibleand flexible enough to withstand numerous IMO design changes just before the site’s alpha release.
Significant Obstacles and Solutions
As with almost any sizable enterprise site there were some challenges to overcome. The most notableincluded:
- Timeline – Developing 3-4 enterprise class sites in a compressed timeframe (5 or 6 months).
- Limited information architecture specifications – Project stakeholders met often to discuss itemssuch as data query logic for blocks and layout format of node edit pages. The use of a ticketingsystem helped the process tremendously.
- Multiple themers – With several developers involved in theming, the team needed to coordinateeveryone’s efforts. Team members notified each other via IM whenever new CSS classes werecreated so as not to duplicate effort.
- Search - For a general site searching, the Google Search Appliance (GSA) was used. Mediacurrenthad to modify it according to client requirements, which called for sorting by criteria unavailable in thestandard GSA. The solution was to limit the number of results, which were then reordered if thedefault sorting was not used. Mediacurrent also added a theme function so the result set would matchthe user interface design.
- Sharing Data across multiple domains – The In-Fisherman.com site uses several databases tosupport high-volume traffic. The technique used relied heavily on Drupal’s multi-site configuration.Drupal points to a particular database, based on the subdomain of the URL. This posed a problem forblocks that presented data across multiple subdomains. IMO didn’t want to make database calls fromone subdomain to another. To solve this, Mediacurrent created a set of modules that would “flatten” ablock’s content to a serialized array and store it in a flat file. Thus, block content on one subdomaincould be read by another subdomain without a database request. Another challenge of multipledomains is making Drupal’s menu system point to the correct domain when routing a page request,without having to use absolute URL’s. Mediacurrent created the Multidomain to pass navigation and/user paths through a custom_url_rewrite_outbound() function. A switch statement in the functionassigns the correct domain for a given path. Without this module, absolute URL paths would have tobe written everywhere to accommodate multiple domains.
- Optimization of multipage nodes – The article content type needed to present up to 6 pages ofcontent. Mediacurrent decided that the pagination module would not meet IMO’s specificrequirements. Our development team employed multipage articles, using a combination of themeoverrides in template.php and customization in the node.tpl file. For search engine optimization, thearticle URL’s needed a page number appended to the path instead of appended to a query string.This was challenging because Drupal perceived the additional argument as a new path alias. Thedevelopment team wrote a custom module to intercept the clean URL and detect a page number atthe end. The page number is stored and Drupal redirects to the node page.
- Data Import – IMO had lots of content (1200+ fishing articles) to be imported. Prior to Drupal, theIMO editorial team managed these articles in FilemakerPro. IMO’s team created a PHP script toparse a FilemakerPro XML file and generate a CSV file that was compatible with the Node Importmodule. The wide array of metadata required that Node Import and various other modules such asFile Field and Image Field to be customized extensively. Once these modifications were complete,Drupal processed the import to completion in an hour. Images were uploaded via FTP to thedevelopment server and placed in the “files” directory.
- Enterprise level hosting and establishing fault-tolerance –To meet In-Fisherman.com’s stabilityneeds, the IMO team configured a hosting architecture that did not require additional optimization andcaching modules. Multiple databases for content and user accounts ensured that the site degradedgracefully in the event of database failure. IMO’s system architect devised a technique to accomplishthis by leveraging Drupal’s multi-site capability along with prefixing table names with database namesin each site’s settings.php file.
Module List
The In-Fisherman.com site used a large, diverse set of contributory modules – thank you Drupalcommunity. There were staples like CCK, Views, PathAuto and Imagecache, as well as an assortment ofothers. DrupalModules.com became a terrific resource for module reviews, release state anddescriptions. Some of the other more noteworthy contributory modules included:
- Nice Menus: This easy-to-configure module gave the site’s primary navigation a set JavaScript dropdown menus.
- Fivestar: Allows site users to rate content.
- Workflow: Gives content contributors the ability to promote content and have it approved by an editorbefore it’s published.
- Transliteration: This module “sanitizes” file names for user uploaded content, helping oddly named filesbecome readable by the file server.
- String Overrides: Gives site administrators a simple way to replace text that’s passed through theDrupal API t() function.
- TinyMCE: A WYSIWYG editor that gives content contributors the ability to style web site copy.
Custom Modules
Developing the site involved extending or completely customizing quite a few modules – many of whichwill be contributed back to the community. Here is a summary:
- Alternating Content Background Manager: This allows site administrators to update the backgroundimages used by an accordion flash widget without having to update XML manually. New images aresaved to specific filenames referenced in the XML.
- Block Flattener and Block Flattener Reader: These modules allow block data to be shared betweensubdomains without directly accessing a database for block content.
- Gear Related Articles: This module outputs block content to a flat file for sharing across subdomains,similar to the Block Flattener module.
- Profanity Input Filter: This provides rudimentary, context-based input filtering via a modifiable set ofrules. Site administrators can insert custom string rules of prohibited content. The module then replacesthe prohibited strings with asterisks.
- Fish Profile: Adds radio button-based fields to the profile form and reorganizes the fields.
- Gear Related Articles Export: Saves block data to a flat file for use by blocks in other subdomainsthereby reducing cross domain database calls.
- IMO import Fix: A helper module that assists in correcting file paths, taxonomy assignments and stringreplacements during the article import process.
- In-Fisherman Form Alters: Handles all form alter logic for In-Fisherman.com.
- Multidomain: Manages the subdomain links for a multi-site Drupal install.
- Node Process: Processes node page calls, allowing nodes to have multiple pages.
- Profanity Input Filter: Provides an input that can filter profane words or phrases based on a set of rules.
- Solunar Month: The In-Fisherman site provides solunar calendars, which provide the best lunar fishingphase in any given month. This module supplies the solunar_month content type for the calendar. CCKcouldn’t be utilized because the number of fields required by this content type consistently maxed outPHP’s memory allocation when loading the node edit form. The module also supplies a dynamic XMLmenu item for a given month and year together.
- WWW Advanced Search: Generates an advanced search form page, containing category-based filters.