AI agents: the content index is at /llms.txt. Every page is also available as Markdown — send the request header Accept: text/markdown, or append .md to the page URL.
Xperience Docs

Cookie consent

We use necessary cookies (opens in a new tab) to run our website and improve your experience while browsing. Additional cookies are only used with your consent. You may revoke your consent on the Cookies Policy (opens in a new tab) page or in your browser at any time.

Configure (opens in a new tab)
  • Documentation
    Administration interface basicsDevelopers and adminsBusiness usersChangelogGlossary
  • Guides
    Welcome to Xperience by KenticoAdministration interface basicsCustomer journeysDigital marketingConfigurationDevelopmentArchitectureUpgrade to Xperience by Kentico
  • Training
    For AdminsFor Business usersFor DevelopersFor Solution architects
  • API Examples
    ConfigurationContent managementDevelopmentDigital marketing
  • Changelog
    Documentation updatesSecurity advisories
  • Community Questions & Answers (opens in a new tab)
  • Contact support (opens in a new tab)
  1. Home
  2. Developers and admins
  3. Customization
  4. Extend the administration interface
  5. UI pages
  6. UI page extenders

UI page extenders


Was this page helpful?

Send us feedback Go back to top

If you need custom functionality or content adjustments that you cannot configure through the properties available from the admin UI, you can develop a page extender for the corresponding page.

Page extenders allow you to modify the back-end definition of existing UI pages without directly editing their source code. You can use them to add new commands or change the initial configuration of pages. For example, you can add additional columns to an object listing (e.g., to display additional properties of registered users) or specify new actions (e.g., perform a specific operation with selected objects).

The following diagram illustrates the function of page extenders.

Create page extenders

All page extenders must inherit from the PageExtender<TPage> base class. Substitute the generic parameter with the type of the page you wish to extend.

To find the implementing type of default or other third-party pages that don't make their source code available, the admin UI provides the UI tree view available in the System application. See Register new pages under existing admin UI pages for more information.

C#Creating a page extender
using Kentico.Xperience.Admin.Base;
using Kentico.Xperience.Admin.Base.UIPages;

// Extends the user listing from the 'Users' application
public class UserListExtender : PageExtender<UserList>
{ 
}

Modify the page configuration

Within page extenders, you can modify the default configuration of the page and its client template properties.

The extended page is available via the Page property of the extender. Use it to access the properties of the given UI page, such as PageConfiguration for pages based on system templates.

The options available to you largely depend on the type of page you wish to extend. See Reference - UI page templates for a list of templates on which most of the administration interface is built.

C#Example – extending the Users application user listing page
using System.Threading.Tasks;

using Kentico.Xperience.Admin.Base;
using Kentico.Xperience.Admin.Base.UIPages;

public class UserListExtender : PageExtender<UserList>
{
    // Configures the listing template on which UserList is based
    // The available configuration options vary based on the type of the extended page
    public override Task ConfigurePage()
    {
        // Adds a new action to each item in the listing
        Page.PageConfiguration.TableActions.AddCommand...

        // Adds a new action for the entire listing
        Page.PageConfiguration.HeaderActions.AddCommand...

        return base.ConfigurePage();
    }

    // Configures the properties of the client template this page is based on
    // Called after the 'ConfigurePage' method
    public override Task<TemplateClientProperties> ConfigureTemplateProperties(TemplateClientProperties properties)
    {
        // Manipulate properties as desired

        return base.ConfigureTemplateProperties(properties);
    }
}

Add new page commands

You can use extenders to add new page commands.

Declare a new method within the page extender class and annotate it with the PageCommand attribute. The process is identical to writing commands for UI pages.

C#
[PageCommand]
public async Task<ICommandResponse> MyExtenderCommand()
{
    // Command logic...

    return Response().AddSuccessMessage("Command executed.");
}

Register page extenders

Page extenders need to be registered in the system via the PageExtender assembly attribute.

When registering extenders, you need to provide the System.Type of the implementing class.

C#Page extender registration
using Kentico.Xperience.Admin.Base;

// Registers the page extender of the 'MyPageExtender' type into the system
[assembly: PageExtender(typeof(MyPageExtender))]

public class MyPageExtender : PageExtender<MyPage> 
{
    ...
}

On this page

  • Create page extenders
  • Modify the page configuration
  • Add new page commands
  • Register page extenders

Related pages

  • Extend the administration interface
  • UI pages
  • UI page permission checks