Wopular - Online Newspaper Rack
Wopular is a news aggregation site. I wanted to create an online newspaper rack, showing the top 5 headlines from the top 30 newspapers. I also wanted the ability to highlight interesting and/or important stories and insert corresponding pictures with them. I've always wondered what being a newspaper editor would be like, and this allows me to play that role in spite of my poor writing skills.
By listing five stories from the top circulated newspapers in the country, I'm hoping that this will give a more comprehensive view of what's happening across the United States. Even if most papers cover the same story, it's good to have multiple perspectives. Think of this as Drudge Report meets Rotten Tomatoes.
"... presents breaking news in a slick user-friendly interface that makes The Drudge Report look positively 20th century."
— Anne Thompson, Deputy Editor of Variety.com
Most of the sources are newspapers, but I also link to social news sites like Digg, Google News, and Yahoo! Buzz to show popular news items submitted by their respective users. The Onion and Fark, two news sites focusing on humor are included as well. Sources are sorted by popularity (online news sites) and circulation (newspapers).
Why create another news aggregation site when there are already plenty out there, like the Drudge Report and Huffington Post? First, each of our site's focus is slightly different, and each editor has a different sensibility. It's these slight differences that makes each site unique and, hopefully, allow it to capture its own audience.
History & Platform
Originally, I had wanted to build Wopular with vBulletin. Even though my php/mysql skills were only elementary, I was thinking about writing my own php parser that would create a new forum thread for each headline. As I researched the parser, I found that one had already been written for phpBB. Unfortunately, it didn't work with the latest version, which had some features I needed at the time. I did more research that finally lead me to Drupal and the Aggregation module, which created a node for every story in a feed - exactly what I needed. Still, I wasn't convinced because even after reading all the literature on Drupal, I couldn't quite figure out what it did. I finally went with it when my friend launched EndofBoredom with Drupal and cleared everything up for me. That's how Wopular became my first Drupal site.
Drupal 5 or 6?
When I first started looking into Drupal, which was around February 2008, Drupal 6 was still brand spanking new. The modules I wanted to use - Aggregation, Panels, and Views - weren't available for it yet, so I decided to use version 5 instead. Even now, Aggregation and Panels are still in beta. As soon as those modules are out of beta, I'll upgrade to version 6 - looking forward to the speed improvements and simplified theme system.
Design
Since the focus is news, I wanted the site to look like a newspaper. I wanted four columns with the same width initially, but backed out of it because a 300x250 ad would be too big to fit in one of those columns. It fits perfectly in a three-column design with a screen width of 1000 pixels.
I wanted each feed to look like a mini-newspaper, so when they're stacked they would resemble a newspaper rack. I saw a design in a newspaper I liked (scroll down to the middle of the page, middle column), and just used that as a guideline to make it look more like a mini-newspaper for Wopular. For colors, I didn't want to stray to far from Drupal's default scheme; this was my first Drupal site, and CSS was still new to me.
"VERY nice implementation, clean, simple, valuable."
— Nick Demartino, Senior Vice President of American Film Institute
Modules
I ended up using just four modules:
Aggregation was used to create nodes for each feed item, which the core aggregator wasn't able to do. I chose this module over the others because it was the first RSS module I came across that I could understand and did what I wanted. It has performance tweaks, which was helpful. I can adjust the time between each feed and the number of feeds to process per cron job. Because Wopular was processing hundreds of feeds, I had to space them out (a couple seconds between each feed) during cron. When I launched the site, I made the mistake of processing all of them at once and crashed the servers at my isp on a weekly basis. Luckily, my ISP was very understanding :)
I had three types of Views. The first type was used to generate the featured stories for each menu section on the left column of the home page, which had both titles and teasers. The second was similiar to the first except there's no section (you can see an example of this in the middle column of the homepage). The third generated the list of headlines for each news source in the Full News Rack tab. Originally, I created a view for each source - about 550 sources total - and that kinda killed the module. It would take a couple minutes just to load up whenever I tried to edit a view and another couple minutes when I submitted. Fortunately, I learned how to use Views Arguments and replaced 550 views to just a handful.
(From left to right: Views Type 1, 2, and 3)
Panels was used for the three column layout. This was most useful for stacking the newspapers one on top of the another within each column. You can insert Blocks, Views, Nodes, and even custom content into Panel columns. For wopular, I mostly used Views and custom content ("What is Wopular" box). When a view is inserted into a column in Panels, I can configure certain views attributes within Panels. It was convenient that Views was well integrated within Panels.
CCK was used to create custom image link fields for each feed item. Once the custom field was created, it was available in each feed item. Then I manually grabbed the image urls from highlighted news sources. I plan to use this module a lot more in the future.
Custom Module
A custom module was created to display each news source in a three column format (ex. CNN) - or if you prefer Digg. It's a very simple module. All it does is query the database for the last 30 or so articles from a news source and divy them up into three blocks, one for each column. I originally wanted to create a function on template.php to accomplish this, but couldn't get Panels to access it. I learned from the forums that a custom module was the way to go. That was good, because I had wanted to learn how to do that anyway.
Performance
I had to reluctantly shut down pathauto, xml sitemap, related links, and search modules because of performance issues. Because I had about 500 feeds, about 300,000 nodes were generated each month. Those modules were probably not created with that kind of quantity in mind. I have shared hosting, and my site was crashing the server every other day with those modules. Each of those modules alone was very resource intensive. They're great for SEO, but that's not gonna be any use to me if the site's not accessable. They're awesome modules though, and I do plan to use them again in the future once I figure out the performance issues.
The Future
I plan to make incremental additions/improvements to the site. One of the first priorities is to upgrade to Drupal 6 when Aggregation and Panels get out of beta stage. I've started tagging featured articles recently and wanted to make better use of that feature by turning them into sub-menus/navigation. I also want to tinker some more with the disabled modules to figure out the performance issues. The Full News Rack pages take a while to load, so I might break them up into small pages with sub-categories. There are other modules that I might want to explore, like Drigg and some of the social networking tools. That's the great thing about Drupal and its community - there are lots of possibilities and people are happy to provide a helping hand. One of the things I've wanted to accomplish with Wopular is to learn new development skills, and this is a great platform and community to do that with.
Drupal version: Drupal 5.x