Replace a component globally
This example describes how to replace a component globally in the Optimizely Content Management System (CMS) user interface.
The following example shows how to replace a component for the entire system. This example also shows how to replace the built-in Optimizely Content Management System (CMS) page tree with a custom page list component.
- Declare a replacement component. It is important to use the definition name of the component that you want to replace.
// A simple component implementation represented with a dijit content pane on the client side
public class MyCustomPageList : ComponentBase
{
public MyCustomPageList() : base("dijit/layout/ContentPane")
{
// Add "Hello World!" as non-persisted content to the dijit content pane
this.Settings.Add(new Setting("content", "Hello World!", false));
}
public override string DefinitionName => new PageTreeComponent().DefinitionName;
}
- Register the new component using the IOC container by implementing the
ConfigureContainer
method ofEPiServer.ServiceLocation.IConfigurableModule
in an initialization module.
[InitializableModule]
public class InitializationModule : IConfigurableModule
{
public void ConfigureContainer(ServiceConfigurationContext context)
{
context.Services.AddTransient<IComponent, MyCustomPageList>();
}
public void Initialize(InitializationEngine context) { }
public void Uninitialize(InitializationEngine context) { }
public void Preload(string[] parameters) { }
}
This replaces any creation of the PageTreeComponent
with a new instance of the MyCustomPageList
type that is created by the IOC container.
Note
An editor has to make a change in edit view to able to see new component.
Updated 5 days ago