Content
This topic introduces the concept of content and content types in Episerver. Content can be pages, blocks, media files, and folders. It can also be catalog content in Episerver Commerce. In the Episerver content model, a content type inherits from the Content interface, and contains a set of specific properties.
How it works
Content in Episerver can be almost anything, as long as it is a class that implements the IContent interface.
This means that if you have an instance of a class that implements IContent, you can use the Episerver API to save it to the Episerver CMS database. The IContent interface also provides a set of important basic properties such as the content display name, as well as references and unique identifiers for the content item.
namespace EPiServer.Core
{
// Summary:
// Interface that must be implemented by a component that is to be stored in
// the content repository.
public interface IContent : IContentData
{
// Summary:
// Gets or sets the unique identifier of this EPiServer.Core.IContentData instance.
// It is used as identifier of this item when it is transferred outside of
// the current system.
Guid ContentGuid { get; set; }
//
// Summary:
// Gets or sets a reference to this EPiServer.Core.IContentData instance. It
// is used as a identifier for this item within the EPiServer system.
ContentReference ContentLink { get; set; }
//
// Summary:
// Gets or sets the ID of the content type that describes this EPiServer.Core.IContentData
// instance.
int ContentTypeID { get; set; }
//
// Summary:
// Gets or sets a value indicating whether this instance is deleted.
bool IsDeleted { get; set; }
//
// Summary:
// Gets or sets the name of this EPiServer.Core.IContentData instance.
string Name { get; set; }
//
// Summary:
// Gets or sets a link to the parent content item in the EPiServer system.
ContentReference ParentLink { get; set; }
}
}
Content model and types
When developing a solution using the MVC conventions for controllers, models and views, it is convenient to base your model on Episerver content types. Your content model can inherit from model classes for content types, which provides flexibility when extending your solution. You can easily create new content types by adding model classes. Create for example a page type that implements IContent to get the basic properties, and add custom properties like author, an editorial area and publish date.
Example: A page type created using the Episerver Visual Studio extensions.
namespace MyEpiserverSite.Models.Pages
{
[ContentType(GroupName = "Basic pages", Order=1, DisplayName = "StandardPage", GUID = "abad391c-5563-4069-b4db-1bd94f7a1eea",
Description = "To be used for basic content pages.")]
public class StandardPage : SitePageData
{
[CultureSpecific]
[Display(
Name = "Main body",
Description = "The main body will be shown in the main content area of the page, using the XHTML-editor you can insert for example text, images and tables.",
GroupName = SystemTabNames.Content,
Order = 1)]
public virtual XhtmlString MainBody { get; set; }
}
}
You can add and modify content types from the administrative user interface. However, these will not be strongly typed, and for legacy reasons this approach is not recommended. Settings defined in the user interface take precedence over settings from your model.
Initialization and synchronization
During site initialization all assemblies in the bin folder are scanned, and all classes decorated with the EPiServer.DataAbstraction.ContentType attribute are added by the synchronization engine. A content type is constructed by merging the settings from the model class with any settings that have been defined in the administration view.
You can see examples of different content types if you install an Episerver CMS sample site.
Built-in functionality
When using the Episerver content model, certain functionality will be available by default for all content types. You will for example get waste basket support, content reference checking when deleting content items, and drag-and-drop support from the Assets pane into any overlay or editor that handles files.
Related topics
Last updated: Sep 21, 2015