Your message has been sent.
This article has been saved to your account.
Go to my account
This article has been emailed to your Kindle.
Send this article
The example project in this article by Timi Ogunjobi is based on a fictitious web site development brief, and it illustrates a practical way of applying Drupal to develop a News Aggregation site called Weird Hap'nins. Bad news is always good news for the press. This is why Vaughan Pyre has decided to take advantage of this fact and create a web site that will aggregate bad news and weird happenings from all over the world. The content of the site will be entirely derived from Really Simple Syndication (RSS) feeds from several sources (each feed being automatically fetched and its items displayed on the web site).
Weird Hap'nins requirements will be the need to:
- Get external feed sources and allocate them to menu links on the web site
- Create the means to automatically fetch and display article items located in the feeds
- Display blocks of latest content from each feed source on the front page
The theme chosen is "Strange Little Town", which is a contributed theme that fits the description of this unique web site.
Build Weird Hap'nins
Vaughan Pyre is a very ambitious webpreneur. What he really hopes for is a web site that is completely self-maintaining, and on which he can place some Google AdSense blocks. Clicks from the visitors to his site will ensure that he makes lots of money. For this, he needs a site where the content updates regularly with fresh content so that visitors will keep coming back to click on some more Google ads. Vaughan's ultimate objective is to create several of these web sites.
This is, surprisingly, a very simple site to build, and much of the requirements can be achieved by using the Core Aggregator module. Indeed, were it not for the fact that Vaughan needs the content to automatically update, we needn't use any module other than the Aggregator module.
Optional Core modules
We will be using the following Core modules, which can be enabled via the Modules page:
- Aggregator—for aggregating syndicated content (RSS, RDF, and Atom feeds)
We will also be using the following contributed modules from Drupal.org. Install, and enable them via the Modules page:
- Poormanscron—internal scheduler for users without a cron application
Configure the Poormanscron module
First we need to enable the Poormanscron module, so that the incoming feeds will be able to self-refresh. From the Administer page, we will access the Poormanscron configuration page, mainly to set the time interval between runs of cron to update feed items, as shown in the following screenshot:
In this case, we have left the Time intervals at the default value of 60 minutes.
Configure the Aggregator module
The Aggregator module should be configured to define the feed sources, how often they will be polled, and how they're categorized. For this, if we select the Feed aggregator link on the Administer page, then we should arrive at the following page:
On the Settings page, we will define some more requirements, as follows:
- Allowed HTML tags—which are the tags that are embedded in the incoming feed that we want Drupal to accept. The allowed tags do not include image tags. So if any images are coming with the feed, then they will be excluded. However, we don't want this to happen, so we have added the image tag <img> to the list.
- Items shown in sources and categories pages—we have defined this to be 20 items, but you may select another figure.
- Discard items older than—we want the feed items to be completely refreshed every week so we have set this at 1 week.
- Category selection type—we are not categorizing the feeds, so we will leave this setting as it is.
The site is built around the Aggregator module, and no other Content type will need to be created. Vaughan has decided to initially use three feeds obtained from www.newsfeedmaker.com, as follows:
- Bad News—http://www.newsfeedmaker.com/feed.php?code=ddb874f7
It is from these feeds that we will create the necessary content.
Tips and traps
An excellent source for "mashup" feeds on any topic is pipes.yahoo.com.
On the Add feeds page, which is under the Feed aggregator configuration page, we finally get to define our feeds, and how often we want them to be polled.
We want our Bad News feed to be polled every hour, so we have configured it this way. The same procedure is followed to create the feeds for Crime and Paranormal.
eBook Price: €20.99
Book Price: €34.99
Display the feeds
It is necessary to first start the feeds so that you can be sure that they work. Therefore, if we go to the List tab on the Feed aggregator page and click on the update items link on the righthand side of each listed feed, then we will see that the site polls items from the feeds that we have configured.
Clicking on the Title of the feed on this page will show a page view of the resulting feed. For example, the Bad News page gives us the following view:
Vaughan wants to have blocks containing the latest items from the incoming feeds placed on the front page to encourage visitors to read more and to visit more often. If we visit the Blocks page, then we will see that blocks for Bad News feed latest items, Crime feed latest items, and Paranormal feed latest items have been conveniently created by the Aggregator module. We may now assign these blocks to the Bottom Content region, and configure the blocks to only show on the front page.
Create the front page post
Vaughan needs only one post on the front page, and wants this to be placed at the top of the page, to describe the web site. This post will be created from the Page Content type. In order to do this, click on the Create content link on the lefthand side of the screen, and select the Page link. You will see a form similar to the one shown in the following screenshot:
In this form, we enter the introductory text for the site. At the bottom of the page, in the Publishing option panel, we will promote it to the front page and make it Sticky at top of list. This is necessary just in case Vaughan decides to add new items to the front page, which may effectively displace the site description post that he always wants to be at the top.
Tips and traps
Remember to change the permissions to access news feeds on the Administer | User management | Permissions page.
Now let's tidy up our site by creating a menu system that is more intuitive. For simplicity, we will be putting all of our feeds page views menu under a new Feeds menu, to separate it from our user's menu.
In order to do this, go to the Menu link on the Administer page.
- Click on the Add menu tab at the top of this page to access the page that will permit you to add the new menu (in our example the Feeds menu), as shown in the following screenshot:
- After this, we need to create the menu items that link to each of the feeds pages. The URLs for the feeds that we have created are:
- Bad News—aggregator/sources/1
These URLs may be obtained from the display in the browser without the preceding string (http://.../?q=).
Return to the Menus link on the Administer page and select Feeds. At the top of the page that comes up, select the Add item tab. This will take us to a page (shown in the following screenshot) where we can define the items in our menu.
We will also see from the Blocks link on the Administer page that a new block has been created for Feeds, and we will assign this to the Right sidebar, which is where we want it.
We can now enable our new theme, Strange Little Town, on the Themes page, which will give us a new front page, as shown in the following screenshot:
In this article, you have learned how to:
- Build a basic site for publishing news feeds, using the Aggregator module
- Use the Poormanscron module to run regular site tasks
eBook Price: €20.99
Book Price: €34.99
About the Author :
Rahul Pitre has been writing software of one sort or another for twenty-five years, the last dozen or so of which he has spent developing mostly web sites and web applications. He runs Acxede, a software consulting and training firm in New York, where he oversees web application and content development for a variety of clients. He holds masters degrees in Business Administration and Computer Information Systems.
Books From Packt