Gorton Studios is proud to announce the relaunch of The Rake Magazine as a Drupal site. The Rake is an arts and culture magazine based in Minneapolis/St. Paul. The magazine is known for its strong storytelling focus as well as its unapologetic brand of humor, style, and personality.
The main goals of this new site were to expose The Rake’s rich resources (about 7,000 nodes) and help visitors find interesting content quickly. It features a wealth of carefully highlighted and cross-connected articles, integration with the organization’s pre-existing Event and Restaurant database (still managed outside of Drupal) and a bevy of blogs.
Simplifying administrative overhead was a key mandate from the outset. The old system was an unwieldy mix of Movable Type blogs and custom CMS content. Updating and featuring content had become an overwhelming process that was preventing The Rake‘s online edition from growing into something more fluid and community-oriented. The new site has enabled much more frequent updating, thanks to easily edited content and a robust permissions system.
Read on for some of the modules and techniques involved in building this site.
A Whole Lot of Custom Block Regions
The site design, provided by Kraig Larson of Ciceron, called for four to six columns of content on every page. After our team (ronan - developer, themer and estenrick - project manager, configurer) examined all of the layout variations and identified major commonalities, we defined eight different block regions for our template—shown as blue highlights in this image.
The Theme Developers Guide has a very nice Regions in PHPTemplate write up on how to do this.
Content Type Templates
We considered several ways to handle the “main content”—the inner columns of each landing page. Top contenders included the Panels module or a custom content type (via CCK). Although Panels allowed us to cover a lot of ground quickly, we eventually settled on custom content types, because we liked the extra control it allowed. Our decision resulted in quite a few content types, but it did the trick.
For example, the 'homepage' content type consists of a title field and a variable number of features (using field_feature—a CCK Node Reference field—set to multiple). The features are then themed as teaser views of highlighted nodes.
The bottom portion of the homepage content type follows a defined set of rules:
- The first column displays the most recently-reviewed restaurants.
- The middle column has upcoming events.
- The last column shows the latest promotions.
These rules are written directly into the theme file (node-homepage.tpl.php) - see this image for a visual breakdown. The restaurant and event content is provided by an XML feed from the client’s ASPX system, which is cached and refreshed on an hourly basis. The latest promotions column is populated by a view that we embedded directly into the theme file. (See a good description of that technique in the Views Documentation, under Inserting Views).
Lots of Little Details
Each of the content types was constructed in a similar manner. Straightforward, perhaps, but all told this site has 30 content types, 40+ fields, 5 themes (4 of which are for generating HTML for email newsletters), 70+ template (*.tpl.php) files, 30+ views, 40+ blocks and over 7,000 nodes.
Every project has its challenges. The major hurdles we faced with this site were generally due to the depth and breadth of the content combined with a short timeline.
- The Migration of Existing Content
The Rake has been online since early 2002 and has amassed a large amount of content. The challenge? The content was not all coming from one place. Over the years, the magazine had been through several versions of a custom CMS (ASP + SQL Server), had incorporated Movable Type for their blogs (CGI and MySQL on IIS), and had developed a custom Restaurants and Events system (ASPX). We quickly moved all that disparate data—very little of which was cleanly separated—into the appropriate Drupal locations, content types, and fields. As an added bit of fun, we also imposed the laws of grammar on old content—parsing for proper title capitalization and making sure all those special characters like em-dashes and ellipses came along for the ride. (It is a magazine, after all). The old URLs were added as Drupal redirects, and the previous HTML contents were parsed to find, save and store all images referenced in content.
- So Many Rules
The individual pieces of this site are not exceedingly complex, but there are a lot of pieces. Each content type has very particular rules about how its data should display, and those rules change depending on where the data appears. Not to mention, as with most projects, these carefully crafted rules shifted and evolved during development.
- Content Construction Kit - the backbone of just about everything, along with Date, File Field, Image Field, Link, and the CCK core Fieldgroup, Node Reference, Number, Option Widgets and Text
- Views - used all over to expose lists and groups of content, along with Views core RSS, Theme Wizard and UI with custom cache wrapper for performance
- Pathauto - providing good, meaningful URLs
- Token - sharing info with other modules
- Content Templates - templating the outgoing RSS feeds
- Node Hierarchy - released with the launch of this site. A module for managing hierarchical relationships and generating menus, paths, views and controlling access based on the same.
- Path Redirect - handle all those redirects from the old site to the new locations
- Global Redirect - redirecting multiple node addresses to one
- Webform - providing contact forms
- Drupal Core: Aggregator, Comment, Help, Menu, Search, Path, Statistics, Taxonomy
Presentation and User Experience
- Signwriter - generating graphic headers from TTF files (e.g. creating Block titles that are shown to the visitors as graphics via CSS)
- SWFObject - embedding Flash content
- Image Cache - generating multiple sizes of the same image
- Thickbox - jQuery goodness for nice image galleries
- Similar by Terms - facilitating relationships between content based on similarly 'tagged' taxonomies
- Suggested Terms - helping keep those tags manageable
- Paging - breaking nodes into multiple pages
- Forward - email the page's content to a friend
- Printer-Friendly Pages - cleaning the display for printing (e.g. spelling out the URLs behind links)
- Automatic Nodetitles - simplify content type creation and improve consistency at the same time
- Meta Tags - setting meta tags per node (and more)
- TinyMCE - WYSIWYG editing goodness
- IMCE - image management goodness, also in conjunction with TinyMCE
- Filter Default - giving different roles different default input filters
- Captcha - SPAM policing the user-submitted comments (and more)
- User Comment - giving content authors control over comments on their content
- Search Keywords - a quick lookup on search terms
- Google Analytics - tracking site usage
- Devel - helping deconstruct and optimize everything
- Backup and Migrate - released with the launch of this site. A module for moving data en-masse from server-to-server as well as doing things like scheduled backups.
Giving Back to Drupal: an Idea and a Donation
Finally, we’re using this occasion to so some good. With this site's launch, we are committing at least 1% of a project's gross every single time we launch a Drupal site. We have gained so much from the Drupal Community (knowledge, support, and a fantastic tool) that we feel compelled to regularly give something back. We’re guessing that other developers may feel the same way, so we’re inviting you to join us in making a formal commitment. You can read more about that idea in this forum post: http://drupal.org/node/191605