We have been using Blogengine.net for over a year now and have found it to be a great application. In this post I will tell you how we plan to tweak it to deliver a lightweight CMS system.
Requirement Specification
As a part of this development the source code of BlogEngine.net will be modified to manage Pages that feed content to multiple sites. The source code will be modified to persist “Site” information of a page to XML files as done currently in BlogEngine. Associate a page to a site (one to one relation), view/edit pages per site basis.
Constraints
The title of the pages will remain unique. The Site metadata information is only to ease the process of managing Site pages. A naming convention of “SiteName-PageName” for the title of the page can be followed in cases multiple sites have pages with the same name. E.g. AFH-Home, TheITHelper-Home etc.
Proposed Changes
-Site Management: Manage Sites
A site tab will be added to the menu in the Pages tab on the top. This will be used to manage pages for site, add a new site. Sites name and description can be edited or deleted. However a site existing pages cannot be deleted.

-Add a new site
Modal popup to add a new site.

-Associate a page to a site
When pages are added/edited
When pages are associated to a site, a file will be used to persist the one to one relation between the pages and sites. This will done similarly as Categories are associated with posts.

- Editing pages of a site
When the view pages on manage site screen is clicked (1(i)), a page will be shown that lists the pages belonging to that particular site. Pages can be edited or deleted from this screen.

Integration with Future Versions of BlogEngine.net
The changes made will be made as per coding standards of BlogEngine to ease integration with future versions of BlogEngine.net. The changes will be documented to ease the integration process.
Extracting Content of Pages In Site pages
The existing BlogContent user control will be used to extract content from the pages of the modified BlogEngine.net site with little or no change.
XML persistence files
Site XML file for saving Site data
|
App_Data\Sites.xml
|
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<sites>
<site id="19770e74-9ec9-4cde-b2ab-e5051aaaf348" description="A French House propertye site”>AFH</category>
<site id="c223353c-1aef-4a46-afd1-cb61ab1a792d" description="The IT Hellper Website">TheITHelper</category>
</sites>
|
Modify the Page xml to include site information
|
App_Data\Pages\<Page_GUID>.xml
|
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<page>
<title>Example page</title>
<description>The description is used as meta description</description>
<content><p>
This is an example page.
</p>
<p>
&nbsp;For more information about pages and how to use them,&nbsp;visit the <a href="http://www.dotnetblogengine.net/wiki/">BlogEngine.NET wiki</a>.
</p>
</content>
<keywords>Is, added, to, meta, keywords</keywords>
<slug>Example-page</slug>
<parent>00000000-0000-0000-0000-000000000000</parent>
<isfrontpage>False</isfrontpage>
<showinlist>True</showinlist>
<ispublished>True</ispublished>
<datecreated>2007-07-14 08:06:59</datecreated>
<datemodified>2008-06-28 18:46:13</datemodified>
<siteId>c223353c-1aef-4a46-afd1-cb61ab1a792d</siteId>
</page>
|