6. December 2009 05:19
Pipedream: Multiple Blogs
I’m not sure if anyone else has noticed but the NUMBER ONE requested feature of BlogEngine.NET (That’s #1 by a landslide) is to support Multiple Blogs per installation. I have been struggling with this concept and while searching for and designing a workaround using BlogEngine.NET and the Provider model using SQL Server only, I came across SqlBlogProvider that also uses Linq to SQL. This model supports Multiple Blogs in a single SQL Server Database in a single Application folder. It now also supports multiple hosts or domains per blog if required. So the only dilemma I’m struggling with today is where to go from here.
Now that the SqlBlogProvider supports what I need, although there are a few items I’ve extended I’m still having problems syncing between the “current” or “newest” code base(s) of BlogEngine.NET and the SqlBlogProvider. They don’t jive, nor should they. However, I want it all, and I want it now…Yeah, I know it sounds like a song. The strategy I would have employed was to Add a blog table, and then the host table to support another level of hierarchy, then add a BlogId to each necessary table. However, in order to create the least possible interference with the Core, the SqlBlogProvider author added separate tables (Junction tables) and a separate Provider project.
I’ve made the changes to the latest BlogEngine source I had from a few days ago (184.108.40.206) and SqlBlogProvider (1.5 Change Set 27978) but haven’t finished the work I wanted yet. My plan is to finish some bug fix work across both projects which may be done as far as my issues are concerned. Now I’m adding a GUI for setting up new Blogs (via Linq and the new provider I chipped out of SqlBlogProvider). Then I’ll dog-food it for a while and see where it leads me. I may learn enough from this to start fresh and rebuild the core in my own way but I’m willing to share the results if someone asks.
You’ll know it’s in use when the BlogEngine.NET version at the bottom of this blog changes from 220.127.116.11 to 18.104.22.168 or above.