A dynamic blogroll for ASP.NET

Mar 6, 2007

The blogroll has become a standard element on most blogs today. If it is an ASP.NET blog, the blogroll probably contains links to other ASP.NET blogs and that gives the visitor an opportunity to surf to other related websites. The only problem with it is that you have no idea what to expect from the blogs by looking at the blogroll. Most often, the link title on the blogroll contains the name of the author and if you don’t know him/her on beforehand, you have no idea if it’s a related blog or not.

That got me thinking about a way to tell a little more than just the name of the authors. Why not display the titles of their 3 latest posts so the visitor quickly can see what the blogs are about?

By showing the newest posts beneath each blog we also stop the visitor from leaving your site for an unrelated one.

The code

In order to display the latest posts we need to parse all the blog’s RSS feed, which means that we have to retrieve them first. That is time consuming, so it has to be done asynchronously so it doesn’t slow the entire page down. It doesn’t have to be updated with each request but only every hour or whenever you see fit. By each update it still mustn’t slow the page and I found a way to do that.

The first time the blogroll is created it displays the blogroll without the latest posts. After it has retrieved the feeds it adds them beneath each blog. It takes less than a second per blog and is cached until the blogroll will be updated. The default is one hour.

Implementation

The blogroll is a user control and you add blogs to it like this:

private void CreateList()
{
 AddBlog(".NET slave", "http://feeds.feedburner.com/netslave");
 AddBlog("Vault Of Thoughts", "http://vaultofthoughts.net/SyndicationService.asmx/GetRss");
}

You can set the different variables on the control itself like this:

<uc1:blogroll ID="Blogroll1" MaxLength="30" MinutesCached="60" VisiblePosts="3" runat="server" />

There are 3 properties to set:

  • MaxLength: The maximum number of characters to display for each post
  • MinutesCached: The number of minutes before it updates the posts
  • VisiblePosts: The number of posts to show beneath each blog

Download

blogroll.zip (2,66 KB)

* $4.95/month BlogEngine.net Hosting – Click Here!

Comments (5) -

 Eber Irigoyen
Eber Irigoyen
3/6/2007 7:55:44 PM #

good idea, would work well for small blogrolls

for a large list, how about implement those little tooltips that popup when you hover the link...
http://www.miniajax.com/

Mads Kristensen
Mads Kristensen
3/6/2007 8:22:14 PM #

That's a good idea. I thought about hiding the posts and show them when the mouse hovered over the blog links or onclick. It's pretty easy to modify the user control to behave differently and you can use it's RSS retrieving methods no matter how you modify it.

 Michal Talaga
Michal Talaga
3/7/2007 1:25:53 PM #

I like this one!
It would be nice if it were integrated with dasBlog - i.e. 0 configuration, 0 coding. Just adjust your blog template.

 Gabriel Rodriguez
Gabriel Rodriguez
3/7/2007 4:54:36 PM #

great post Mads, like aways!

 Boris Yeltsin
Boris Yeltsin
3/12/2007 8:49:01 AM #

Instead of (or in addition to) specifying the number of characters, you should use the CSS property "text-overflow:ellipsis;" for this.

Comments are closed

About the author

Mads Kristensen

Mads Kristensen
Program Manager at the Microsoft Web Platform team and founder of BlogEngine.NET.

More...

Month List

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer’s view in any way.