I have been using Blogengine.net for over a year now and have thought it is a great application. In this post I will tell you how I have successfully tweaked it to deliver a lightweight CMS system that I required. (I have published the source code at the bottom of this article)
At the time of writing I have successfully implemented a few websites powered completely with Blogengine.net:
Some of the things that I really like about Blogengine.net is how it can run just using Xml file out of the box and if you want to use a database you can. I like all the Search Engine Optimizations you get for free, I like how it implements semantic web technologies, I like how you can use 3rd Party tools to edit content (Live Writer for example)... the list goes on and on.
I have recently quit my job at Avanade and have setup my own website which I'm hoping to make a living out of. To pay the bills in the mean time I have been picking up small projects along the way. One of these was for a local parish church Petersfield Parish website. The main thing they wanted was a calendar of events & services which I completed using a standard asp.net website. They also wanted to allow members of the parish to contribute news items to the site which I thought was a perfect candidate for a blog solution.
I initially setup the blog with BlogEngine.net in a separate site and created an RSS reader to pull through the latest articles to the main site. However it wasn't the best solution as it would be nicer to have it all under one roof. I was also having problems with the site's webmaster has he used a Mac and Dreamweaver which was having all sorts of problems understanding the asp.net pages and breaking the site when new content was uploaded.
With these two problems to solve I decided to look at using BlogEngine.net to host all the content as well as the blog so the the webmaster could create and maintain content online with no risk of breaking the site and the contributors and blog articles would be under one roof.
I found this article about using Blogengine.net as a CMS solution but it seemed kind of fiddly as all the pages had to be standard.net pages with a usercontrol embedded in them for the content which would still leave me with my webmaster problem and I also thought this is essentially what Blogengine.net pages do.
So I decided to see if I could use the standard BlogEngine.net functionality to create the whole site. To my joy it was pretty straight forward to get 80% of the way there. I created a new theme based on the original site I had created and it looked the business. However there were a number of problems. The pages were in a random order and I wasn't sure how to get my funky calendar controls to work.
Fixing the page sort order was pretty straight forward as I just added a new property to the page entity in the XmlProvider to take an integer. I then amended the PageSiteMap class to sort the pages based on the new value and then Robert is your fathers brother.
I was still struggling with the calendar controls when I spied something in the BlogEngine.net source code
ERROR - UNABLE TO LOAD CONTROL : ~/path/usercontrol.ascx
Here was some standard functionality that I had not known about allowing me to drop usercontrols in to the generated pages. As I had already put my funky calendar controls in usercontrols so it was pretty straight forward to pop them in my new Blogengine.net pages. Then I had exactly what I wanted and a very happy customer (I had over delivered and undercharge.... again!)
Here is a link to the services usercontrol embedded in a page: http://www.petersfieldparish.org.uk/page/Services.aspx
The homepage has a few usercontrols, a couple pulling the last 3 articles contributed through as a summary and one showing today's services.
I then got my graphic designer to knock up a new theme for my company's, See The Link, website and very quickly I had a great looking website which is easy to maintain 100% created with Blogengine.net for us as well.
It has just re-enforced my view that is this a great product!
DaveHawes.BlogEngineTweaks.zip (12.59 kb)