London Dev Meetup Rescheduled! Due to unavoidable reasons, the event has been moved to 21st May. Speakers remain the same—any changes will be communicated. Seats are limited—register here to secure your spot!

Loading...
Area: Optimizely CMS
ARCHIVED This content is retired and no longer maintained. See the latest version here.

Example

The example below shows how it is possible to replace a component for the entire system, and in this particular example how the built-in EPiServer CMS page tree can be replaced with a custom page list component. First declare a replacement component.

C#
// 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));
    }
}

Then replace the page tree component using the IOC container by implementing the ConfigureContainer method of EPiServer.ServiceLocation.IConfigurableModule in an initialization module.

C#
public void ConfigureContainer(ServiceConfigurationContext context)
{
    context.Container.Configure(container =>
    {
        container.For<IComponent>().Add<MyCustomPageList>()
            .Named(new PageTreeComponent().DefinitionName);
    });
}

This will replace any creation of the PageTreeComponent with a new instance of the MyCustomPageList type that is created by the IOC container.

Last updated: Feb 23, 2015