Configure content providers
Describes the concept of content provider, and how to configure these for Optimizely Content Management System (CMS) websites.
A content provider is a module that, when registered with Optimizely Content Management System (CMS), can serve the site with external data as IContent
objects (for example PageData
instances). A CMS site can have several different content provider instances registered, each with its own configuration data set, such as capabilities settings and so on.
You can register a content provider with CMS through ContentOptions.Providers
or the EPiServer.Core.IContentProviderManager
API interface or through, which is located through the IOC container.
Note
A custom content provider cannot deliver the start page, root page, and waste basket (recycle bin, trash).
You configure content providers in web.config
. You can add attributes for the content provider type, which are passed into the provider instance when the instance is initialized. To register the content provider in web.config
, add an entry to the configuration element contentProvider
as shown in the following example:
<episerver>
...
<contentProvider>
<providers>
<add name="custom"
type="CustomServer.PageStore, Custom"
entryPoint="52"
capabilities="Create,Edit,Delete,Search,Wastebasket"/>
</providers>
</contentProvider>
...
</episerver>
Some attributes are mandatory (name, type) while others are optional  (entryPoint
, capabilities
, iconPath
, wastebasketName
).Â
entryPoint
– Specifies which existing page in CMS is the root for the content served by the content provider instance. The givenentryPoint
must not have any existing children in CMS. If the content provider does not give an entry point, it does not appear in thePageTree
in edit view.iconPath
– Displays a custom icon in the page tree for each page served by the provider instance. The given path should be a relative path to the folder\Images\ExplorerTree\PageTree
in the themes folder. For example, if you place an image named_custom.gif
 inApp_Themes\Default\Images\ExplorerTree\PageTree
, the value of theiconPath
attribute is_custom.gif
.wastebasketName
– The name of the content provider's Recycle Bin. If not given, the Recycle Bin has the same name as the registered provider.
You can specify the following capabilities
, if the provider instance supports it. You can specify multiple capabilities with a comma-separated list.
Create
– Creates content. This capability implies that the class should implement theSave
method.Edit
– Edits content. This capability implies that the class should implement theSave
method.Delete
– Removes (deletes) content. This capability implies that the class should implement theDelete
andDeleteChildren
methodsCopy
– Replicates content internally within the content served by the content provider. To support copy between providers, the capability to support isCreate
. TheCopy
capability implies that the class should implement theCopy
method.Move
– Moves content internally within the content served by the content provider. To support move between providers, the capability to support isCreate
andDelete
. TheMove
capability implies that the class should implement theMove
method.
Note
Moving content between content providers requires that the user has permission for the function: "Move between page providers".
MultiLanguage
– Supports multiple language versions. This capability implies that the class should implement theDeleteLanguageBranch
method and that the implementation ofSave
handles multiple languages. It also should take passed-inILanguageSelector
in consideration when serving content.Search
– Looks within the properties for the content served by the provider. This capability implies that the class should implementFindPagesWithCriteria
if it implementsIPageCriteriaQueryService
and if it inheritsContentProvider
.Security
– Checks access for content delivered by the provider (through calls toISecurable
interface on theIContent
instance). For providers that have anentryPoint
and is not supporting Security capability, the access check is performed on the page that was specified as theentryPoint
for the provider. Pages served by the provider instance inherit the access control list (ACL) from theentryPoint
page. If the content instance does not implementISecurable
and has noentryPoint
, no access check is performed.Wastebasket
– Moves content served by the provider to wastebasket. This capability implies that the class should implementMoveToWastebasket
. If the provider does not supportMovebasket
but supportsÂDelete
, then you can delete content but not move it to a wastebasket.
Use ContentProvider for implementation
Each class registered as a content provider must inherit the EPiServer.Core.ContentProvider
 base class, which is based on System.Configuration.Provider.ProviderBase
and resides in EPiServer.dll
 assembly.Â
Use the EPiServer.Construction.ContentFactory
class to create IContent
instances.
Search one or more content provider instances
If you want a content provider instance to be searchable, you must register it with the search capability, and the registered class must implement FindPagesWithCriteria
if it implements IPageCriteriaQueryService
and if it inherits ContentProvider
.
The following example shows how to call FindPagesWithCriteria
, depending on which content providers are to be included in the search. To searching on one or more custom content  providers, add a PropertyCriteria
for each custom content provider to PropertyCriteriaCollection
. Then, name the property EPI:MultipleSearch
and the value to the name of custom content provider.
PropertyCriteriaCollection crits = new PropertyCriteriaCollection();
PropertyCriteria crit = new PropertyCriteria();
crit.Name = "EPI:MultipleSearch";
crit.Value = "CustomKey";
crits.Add(crit);
ServiceLocator.Current.GetInstance<IPageCriteriaQueryService>().FindPagesWithCriteria(customPageRef, crits);
Search on all custom content providers
The following example shows how to search on all custom content providers, by defining only one PropertyCriteria
 and naming it EPI:MultipleSearch
 with the value "*".
PropertyCriteriaCollection crits = new PropertyCriteriaCollection();
PropertyCriteria crit = new PropertyCriteria();
crit.Name = "EPI:MultipleSearch";
crit.Value = "*";
crits.Add(crit);
ServiceLocator.Current.GetInstance<IPageCriteriaQueryService>().FindPagesWithCriteria(customPageRef, crits);
Search on default content providers
If you do not specify PropertyCriteria
with the name EPI:MultipleSearch
, search occurs on the default content provider, typically serving content from the CMS database.
Note
Only the default content provider has a full text search implemented. CMS does not index (and therefore does not search) content served by custom content providers.
CMS uses a remote page provider to integrate the content between two installations. Pages appear as any local page even when they are managed by a separate installation.
Updated 7 months ago