Following up on the Popular Science Case Study presented at DrupalCon Boston 2008 by Kevin Bridges (cyberswat), Laura Scott and others at pingVision,along with Megan Miller and John Mahoney of PopSci.com, here is awritten case study on the development approaches for PopSci.com. Wewelcome your questions and feedback.

In February 2008,
Popular Science,the fifth-oldest continually-published monthly magazine, relaunched itsonline presence with an enterprise-level website developed by
pingVision, powered by
Drupal.
Founded in 1872,
Popular Science, the "What's New, What'sNext magazine," has witnessed, reported on, and evaluated countlessscientific and technological developments, from the dawn of electricityto the latest innovations of today's information age -- advances thathave shaped the way we live, work, play, travel, communicate,understand and interact with the world. Indeed, the archives of PopularScience reflect humankind's progress over the past 135+ years.
Until this year,
Popular Science's online presence was dominated by proprietary web content management solutions. With this relaunch, the
Popular Scienceteam wanted to take the online presence of the magazine into the opensource world. They decided on Drupal for the website's platform andretained pingVision for the development.
This is a brief run-down of how pingVision developed the site to meet the
Popular Science staff's exacting requirements.
Website Goals and ChallengesPrior to its relaunch, the
Popular Science website usedvarious different systems to deliver content. One of the goals for thenew site was to bring these disparate sites together into a unifieduser interface while increasing usability and functionality. Drupal'sinherent flexibility and extensibility afforded the delivery of
Popular Science'susability and functional requirements. One of the big challenges,however, was converting and importing several years' worth of contentfrom a
Vignette 7 CMS and several
TypePad blogs.

Another challenge was the integration of several third-partyservices, including a fantasy stock trading system, video conversionand hosting services, and advertising.
In approaching the development of the new PopSci.com, we tookadvantage of various contributed modules, and created a number ofcustom modules, including the
Drupal Markup Engine for content placement within nodes and
Node Carousel for displaying content.
Finally, scalability was a primary concern, as PopSci already had alarge and active user base. By specifying a load-balanced multi-servercluster to serve up the site, combined with the use of
Memcache,PopSci.com post-relaunch was able to weather an average load of 60pages per second with a spike of over 1.1 million page views in 24hours -- a new record for Popular Science.
Content TypesIt was important to the PopSci.com editors that they have completecontrol over the placement of media and supporting content not only infull node view but also in teaser view. They wanted the ability topaginate long articles and place any number of images or even relatedblocks into the content of a node. The media placement also needed tobe intelligent enough to work with legacy content imported fromVignette and Typepad. Most of this was accomplished with the creationof a new module called the
Drupal Markup Engine, or DME. The DME works in conjunction with the content-types that were created for this project with the
Content Construction Kit (CCK) by providing a custom, extensible input filter.
ArticlesArticles are the main content-type on the site. All blog posts fromTypePad and articles from Vignette were consolidated as articles inDrupal.
The article content-type uses the DME extensively. Referenced images can be placed anywhere in an article using the DME. If a referenced image node isn't specifically placed within the content body by the DME, it is automatically displayed at the top of the article and in the article's teaser view.

Images may also be placed directly in the teaser using the DME.This approach provides maximum flexibility with images entered throughDrupal and with images from legacy content, which required no humanintervention to make the latter work.
The DME is also used to place a relatedcontent block (containing links to nodes in Node Reference fields ornodes with similar taxonomy terms) into the content and to setpagination for the article.
Article Structure
- Article Images -- Node Reference to images used in the article.
- Associated Photo Gallery -- Node Reference to an Photo Gallery.
- Body -- The article's body.
- Category Badge -- A taxonomy image that will apply a graphical badge to the article.
- Credit -- The credit is the contributor of the article.
- DEK -- A brief description of the article.
- Primary Category -- The primary taxonomy for the site represented by the main navigation areas.
- Related Articles -- Node Reference field to relate other articles.
- Tags -- An auto-fill taxonomy field.
- Title -- Core title field.
- V7id -- The Vignette 7 ID of the original article so that it can becross-referenced. This was useful for redirecting old urls to newDrupal content. [See discussion about imports below]
- Video Link -- Node Reference to related videos.
Current Issue

The "current issue" node type represents an issue of the magazine. Itis used to store images of the magazines cover associated with dates.This node type is used in various promotional content throughout thesite.
Current Issue Structure
- Cover -- An image representing the magazine cover.
- Issue Date -- Publication date of the issue.
- Title -- Core title field.
Featured ToutThe Featured tout is a node type created to be used solely in a NodeCarousel driven by a Node Queue. The featured touts simply require thePopular Science editors to create graphics that are of the appropriatedimensions. These can be seen on the front page of
http://popsci.com/.

Featured Tout Structure
- Associated Article -- Node Reference to the article being touted.
- DEK -- A brief description of the article being touted.
- Index Display Link -- The word used as the link in the tout.
- Title -- Core title field.
Images

Images are used extensively on the site and needed to be invoked in anumber of ways. Images are used in different forms in articles, teaserwidgets, and photo galleries. If an image has related content, links tothat content are shown in all but teaser views. Images are not servedas stand alone images on the site but are invoked in Articles and PhotoGalleries.
Image Structure
- Credit -- The contributor of the image.
- DEK -- A brief description of the image.
- Photo Gallery Link -- Node Reference to Photo Galleries. If an image references a gallery it shows up in that Photo Gallery.
- Photo Gallery Weights -- This field contains a series of numberpairs with each pair representing the photo gallery and the image'sweight in that photo gallery.
- Primary Category -- The primary taxonomy for the site represented by the main navigation areas.
- Title -- Core title field.
- V7id -- The Vignette 7 ID of the original image so that it can becross-referenced. This was useful for redirecting old urls to newDrupal content.
- Video Link -- Node Reference to related videos.
Photo Gallery

A Photo Gallery is a node type serving to collect image nodes andcontent to be displayed to the end user as a photo gallery. The imagesare designated for a photo gallery by editing the image and enteringthe gallery title in the appropriate Node Reference field. Galleriesare presented as Node Carousels to give them a slick, interactive feel.
Photo Gallery Structure
- Category Badge -- A taxonomy image that will apply a graphical badge to the image.
- Credit -- The contributor of the image.
- DEK -- A brief description of the image.
- Icon -- A Node Reference field to the image to use when viewing the gallery in teaser view.
- Primary Category -- The primary taxonomy for the site represented by the main navigation areas.
- Tags -- An auto-fill taxonomy field.
- Title -- Core title field.
- V7id -- The Vignette 7 ID of the original image so that it can becross-referenced. This was useful for redirecting old urls to newDrupal content.
User VideoThe Video node enables posting of video to either
YouTube or
OnStream. We developed a custom media module, which creates a custom Media Profile CCK field that can be attached to any node, allowing editors and admins to restrict the services used on a per-content-type basis.
The custom media module differs from the existing emfield module byoffering greater flexibility -- such as allowing users to upload videosto the services straight from Drupal.