Michael Fioritto

The Nonprofit News Network: A nonprofit news aggregation site built with Drupal

I just recently launched the Nonprofit News Network, a news aggregation site focused on the world of nonprofits. Why you might ask? Well, first of all I have an interest in the business of nonprofits. I was also looking for a technical project that would allow me to develop a news aggregation site using open source tools. In this case I chose Drupal.

Why Drupal?
I chose Drupal because of its robust open source community and secondly for the FeedAPI module that allowed me to easily setup feeds and bring content into the system.

While I was familiar with Drupal as an open source content management framework I had never worked with it before. I quickly realized after researching it at drupal.org, that there is a robust and well developed community of open source developers that contribute modules to the Drupal core that extend its functionality. I would guess that if there is something you are trying to accomplish, there is a developer out there who has probably created a module to help solve that problem.

I am also not a programmer, so I needed a content managment system that would allow me to develop a site based on my needs with a minimum of php or other code hacking. The FeedAPI module is a great example of meeting my needs. I knew that I wanted to bring in feeds of content that pertained to the nonprofit sector and I also needed to be able to do this quickly with a minimum amount (or none ideally) code tweaking. By using the FeedAPI module I was able to do just that.

A few thoughts on what version to use, 5.x or 6.x. Drupal offers you the ability to install two different versions of the system, the 5.x or the latest 6.x release. Initially I thought I was going to have to use the 5.x version because the server specs of my hosting provider, Hosting Matters, did not match the 6.x requirements. I dropped them a note and they were able to move me to a different system that would support the 6.x version.

I would recommend going with the 6.x version if you are developing a new site. The most popular modules all have 6.x support and at some point (I am guessing) the 5.x version will no longer be actively supported.

There is a new, 7.x version in the works. At some point in the future I am sure I will have to weigh the advantages of migrating my site over. Luckily for me, I think I have some time before I have to make that decision.

My approach
The basic goal of the site it to provide a single web destination that aggregates the best of news, blogs and other content as it relates to nonprofits. I wanted to manually edit the site instead of just letting the content flow through, so I also needed a way to bring the content in, categorize it and then stage it, ready to be edited.

I created my “taxonomy” for the site by breaking the content down into the following categories: Nonprofit news, marketing, fundraising, technology, management and jobs.

Currently I have over 80 feeds coming into the system and I review and edit the content each morning prior to heading into work (I called this project my 5 a.m. job, although I usually don’t make it out of bed until 5:30). I have also created a content type that allows me to manually post content I find interesting from other sources on the web such as newspaper, magazine and blogs that have articles relating to the subject of nonprofits.

I also wanted to post items to Twitter (there’s a module for that).

The details
Once I had Drupal setup and installed at my domain, I began the task of identifying the core modules I thought I would need to build out the site. I spent a lot of time at drupal.org and also doing some web searches to discover how people were approaching various web development problems with Drupal. Here are my del.iciou.us Drupal links.

I found Sean Effel’s Drupaltherapy.com site particularly helpful. In the beginning I watched this screencast on the FeedAPI over and over.

I determined that I needed the following modules to start:

Once I had those modules setup, I began the task of creating some feeds and bringing content into the site. I initially thought I would make more use of the Feed Element Mapper and CCK fields, but I found that for my use (primarily inbound RSS feeds) I was able to do little to no mapping to custom fields and still get the display I needed.

Initially I chose one feed that I thought would be the least problematic, included full-text and other RSS metadata. Once I had that setup and content was flowing into the system, I started working on how to display it on the site.

I knew that I wanted content to be available on the site in four areas or methods: at the “article” level, within a category level (for example, all marketing stories), on the home page and in an archive (by date).

I started at the article or “node” level in Drupal’s vocabulary. Given that this is an aggregation site, I wanted to display only a certain number of characters, the source of the article and a link to the original article.

This probably took me the longest to get it just the way I wanted it to display. I went through several iterations before settling on my final approach. First of all I would recommend doing as much of this work as possible in the Views module. It will take you awhile to get your head around this powerful module, but it is worth the effort. I ended up using views and made a small customization to the node template in order to link the source to the original article url.

I won’t go into the details in this post, but I’m slow, and it took me awhile to figure this out. Views will often get you 90% of the way, but for that final push, you may need to use some php and tweak the template files. But this really all depends on what you are trying to accomplish.

I used the Taxonomy module to create the sections of the site. I also assign feeds to a category as I create them in the system. That way I can edit or view all content based on the category.

I still am struggling a bit with the display of content on the site. I chose the Newswire theme as it seemed to offer the basic framework for what I was trying to build out-of-the-box. I have not customized it at all at this point. I have some tweaks that I would like to make, but for now I’m pretty happy (well, at least for version 1) with the layout and look of the site.

Theming is another aspect of Drupal that is going to take me some time to learn. I’m not that solid with CSS, but I know enough to hack around and make changes when needed. Again, there are a lot of themes out there and depending on your needs, you could probably get a site up and running without ever learning the ins and outs of theming.

Once I had the site up and running I added a few more modules. The Twitter module offers several features, but I am using it to post content to the npnewsnetwork handle I setup on Twitter. There is a check box in the content admin area and once that is selected and I hit publish, the post is created at my Twitter account. This module provides me with a simple, automated way to post content to Twitter.

Overall it took me about three weeks (on a part-time basis) to get the site up and running. To date I have been very happy with my technology choice and I know I’ll continue to improve and add features as I move forward with the development of the site.

If you have any questions regarding the specifics on how something was implemented post a comment or drop me a note. I would be happy to share what I have learned. It might not be the “best” way to get it done, but it works for me.


12 Comments

Dad, this looks great! I really like the way the info displays and is organized.

Posted by Mia on 8 October 2009 @ 5am

Thanks Mia. Feel free to share with your friends that are involved with nonprofits. I also post most things to Twitter as well at npnewsnetwork.

Posted by fioritto on 8 October 2009 @ 6am

nice job!

Posted by tom sherman on 28 October 2009 @ 10pm

Thanks Tom. I have some more internal work to do on the site, then I need to get to work on the design aspects of the site. Probably just a few theme tweaks to start, but at some point I would like for it to look a whole lot better.

Posted by fioritto on 29 October 2009 @ 5am

Hi, I stumble upon your article; it’s very informative. The aggregation website looks very nice

I wonder if you have done any comparison against other CMS on their aggregation capability. I heard Modx is quite powerful in this aspect.

Any thoughts?

Cheers,
Fai

Posted by Fai on 8 November 2009 @ 5pm

Thank you. I have not done much research on other CMS’s like Modx. I had some knowledge of the basics of Drupal and as I started digging into it, I found some forum posts on the FeedAPI that detailed what I wanted to accomplish. I was looking for a solution that was based on modules (much like Wordpress), had the aggregation capabilities I was looking for and offered some ability to modify both the input and output of the modules and Drupal fit those needs.

Posted by fioritto on 9 November 2009 @ 6am

I see. Thanks.

Posted by Fai on 9 November 2009 @ 11am

Hi, which Taxonomy module did you use? I tried looking, but there are quite a few.

Posted by Tommy on 14 November 2009 @ 5am

In Drupal 6.x there is an optional core module called taxonomy. I am using that along with path and pathauto to create and mange the categories on the site. I have a pretty basic scheme. I’m not dealing with a collection of terms that relate to a topic etc. If you need something extensive, there is a module that works with Calais, but that was overkill for my needs.

Posted by fioritto on 14 November 2009 @ 7am

Hi

This looks very interesting. I’m curious about one thing:

When you review and edit content and assign them to sections of your site, how do you do that? With the workflow module ?

And can you sort through the content and not display some posts in the feed if it’s not interesting to your site?

best regards

Posted by Kaja Jacobsen on 24 November 2009 @ 12pm

Kaja – here’s the basic workflow for this site.

1. I setup the inbound feeds using the feed_api module. I assign each feed a category at the time the content is ingested into the system.

2. I use the content management filter to search for unpublished feed items in a particular feed category (general news for example).

3. I review the content and then select and publish and items I want to be live on the site. I use the twitter module to post selected items to Twitter at the same time.

Currently, I don’t have any content that gets published to the site automatically. I am thinking about automating the job listings and giving them a shorter “time to live” on the site. Otherwise I select or “curate” the site manually.

Posted by fioritto on 24 November 2009 @ 12pm

Thankyou very much, it was very helpfull!!

Posted by Kaja Jacobsen on 25 November 2009 @ 6am

Leave a Comment

I have neglected you… Test post with the OPML editor