DotShoppingCart CMS page is comprised by the server blocks, which are the pre-built server side controls. The out of box software comes with a handful of common blocks. The article is going to talk about creating your own server block.
	Notice: read this blog entry for DotShoppingCart V2.5+.
	1) Create the Standard ASP.NET stardard User Control and derive it from DotShoppingCart.OpenSource.Core.BlockUserControl
	In the Page_Load method add the following code.
	 public partial class YourCustomControls : BlockUserControl {
	    protected void Page_Load(object sender, EventArgs e) {
	        EnableViewState = WebUtils.IsPageEditorEnable();
	        editor.BlockUserControl = this;
	        if (ShowEditor) {
	            pnlBlockContent.CssClass = "BlockEditPanel";
	            editor.BlockTitle = string.Format("Your Custom Control {0}", BlockId);
	        }
	    }
	}
	In the ascx file add the following code.
	 <%@ Register tagprefix="dsc" tagname="BlockEditor" src="/Controls/Blocks/BlockEditor.ascx" %>
	 <dsc:BlockEditor id="editor" runat="server" />
	<asp:Panel id="pnlBlockContent" runat="server">
	    <%-- Place your control content here --%>
	</asp:Panel>
	A simple example is to check web\controls\blocks\Search.ascx and Search.ascx.cx files.
	2) Hook up the new block in DB
	Insert a new entry to dbo.DSC_Block_Type_lkp table e.g. INSERT INTO DSC_Block_Type_lkp (type, virtualPath) VALUES ('My Block', '/Controls/Blocks/MyBlock.ascx')
	Insert a new entry to dbo.DSC_Block_Type_Group_Block_Type_Map