Overview of Mr CMS architecture

Mr CMS is a framework. Within Mr CMS, Apps need to be installed to add functionality to Mr CMS. Without apps, Mr CMS would not do anything special.


An app is a contained amount of functionality. For example an App could be a Blog or ECommerce system.


A webpage in Mr CMS is just that - a class to define a webpage. You can create different types of pages in Mr CMS. For example a TextPage or a GalleryPage. Each webpage is accompanied by a Meta Data to tell Mr CMS how to process the page. For example which controller to use if not the default one.


A widget is a small self contained bit of functionality. For example, you might want a widget which shows the latest 3 blogs. Or you might want a navigational widget - again widgets like webpages are whatever you want them to be. Unlike webpages, widgets do not require metadata but you still have full control over the Widget Model using GetWidgetModelBase<T> where T is the widget class. In other words, widgets can be complex if you need them to be.


Layouts are just as you imagine them in a normal ASP.NET MVC app with one important difference. Layouts in Mr CMS have Layout Areas. A layout area is an area on a layout which Mr CMS will render widgets. Each layout area can have multiple widgets. Widgets can be ordered in the layout areas. Widgets can be added to a layout area at the layout level or the webpage level. Each webpage in Mr CMS has a layout. That layout can have default widgets, however these can be overridden or added to at the webpage level.


The media section to Mr CMS allows content editors to upload media to folders. Mr CMS dynamically resizes images for content editors.


A theme is set against a site. A theme is a set of views which will override the default views which are set at the app level.

Themes are useful when you are using a third party app but you would like to theme it in a bespoke manor.


Mr CMS has multisite functionality. A site in Mr CMS refers to a domain - for example say you have the domain and - both of these would be refered to a site in Mr CMS.

All content to a site is unique except for users. Users are shared across all sites. Mr CMS takes care of your queries in terms of selecting content only from the current site, so no need to say where site = site all the time in bespoke code. This can be disabled though, see class SiteFilterDisabler.

Message Templates

A message template is used when you need to send an email out. For example in the Core App you a reset password message template - this is used when a user has forgotten their password and needs it being sent out. Message temapltes have tokens - these tokens are swapped our for variables when the message is sent.