The SXA pipelines
Understand how the SXA pipelines and their processors work.
Understanding how the SXA pipelines and their processors work provides you with an insight into how dependencies are rendered, how tokens for rendering variants are created, how CSS classes are generated, and so on.
A pipeline consists of a sequence of processors. A processor is a .NET class that implements a method. When a pipeline is invoked, the processors are run in order. You can extend and customize the pipelines by adding or replacing processors. Extending a pipeline involves modifying the pipeline definition located in a Sitecore patch file.
This topic describes the following pipelines:
The resolveVariantTokens
pipeline is used to create tokens for rendering variants.
This pipeline includes the following processors:
Processor | Description |
---|---|
ResolveIFileTypeIcon | Renders the span HTML element with the class according to the extension of the file. |
ResolveItemId | Specifies the ID of the content item to be resolved. |
ResolveItemName | Specifies the name of the content item to be resolved. |
ResolveSize | Renders the file size. |
The Inversion of Control (IoC) design principle allows you to change rendering dependencies without changing the rendering itself. The ioc
pipeline is defined in the Sitecore.XA.Foundation.IoC.config
file and is used for adding processors in which you can register your custom services in the container.
For example, you can add the RegisterPageContentServices
processor to register services used in the Page Content feature.
<pipelines> <ioc> <processor type="Sitecore.XA.Feature.PageContent.Pipelines.IoC.RegisterPageContentServices, Sitecore.XA.Feature.PageContent" /> </ioc> </pipelines>
The decoratePage
pipeline is used to decorate the page <body>
tag with attributes. These can be standard attributes, such as id
or class
, but you can also add custom data attributes.
The decorateRendering
pipeline is used to decorate the rendering's outer <div> tag with attributes. These can be standard attributes, such as id
or class
, but you can also add custom data attributes.
<div class="component title"> <div class="component-content"> <h2 class="field-title"> Title of the page </h2> </div> </div>
The mediaRequestHandler
pipeline is used in the SXA media requests handler. The mediaRequestHandler
pipeline is defined in the Sitecore.XA.Foundation.MediaRequestHandler.config
file.
This file extends the standard media request handler by adding a pipeline that implements custom functionalities such as the support of wireframe images or providing optimized assets.
This pipeline includes the following processors:
Processor | Description |
---|---|
ParseMediaRequest | Checks if the HTTP request is a valid media type. If not, the pipeline is aborted. |
GetMediaFromUrl | Determines the media item from the URL that is stored in HTTP request. |
HandleErrors | Redirects the user to an error page. |
The resolveTokens
pipeline is used to resolve tokens that can be used in queries. For example, $site, $tenant, $currenttemplate, $home,
and $pageDesigns.
By adding new processors to this pipeline, you can design new tokens.
This pipeline is defined in the Sitecore.XA.Foundation.TokenResolution.config
file and includes the following processors:
Processor | Description |
---|---|
CurrentTemplateToken | Determines the current tokens used. |
EscapeQueryTokens | Used to escape tokens that are used in Sitecore queries. |
The assetService
pipeline is responsible for assets optimization. This pipeline includes the AddEditingtheme
processor, which you can use to add a theme when you are in Edit mode.
<assetService> <processor type="Sitecore.XA.Foundation.Editing.Pipelines.AssetService.AddEditingTheme, Sitecore.XA.Foundation.Editing" /> </assetService>
The getRobotsContent
pipeline is used to extend the response provided to search crawler robots in the robots.txt
file. The Robots.txt
file is a simple text file on your site’s root directory that tells search engine robots what to crawl and what not to crawl on your site. The getRobotsContent
pipeline contains the following processors:
Processor | Description |
---|---|
GetContentFromSettings | Checks if the robots' content field is filled and uses its value. |
GetDefaultRobotsContent | Checks the |
AppendSitemapUrl | Adds the path of the |
The getRenderingCssClasses
pipeline is used to gather CSS classes that will be applied on rendering (added to the list of CSS classes on rendering).
The refreshHttpRoutes
pipeline is used to refresh HTTP routes after changes in site configuration.
The getVelocityTemplateRenderers
pipeline is used to add a custom renderer that later on can be used in the NVelocity template. This pipeline is defined in the Sitecore.XA.Foundation.RenderingVariants.config
file. It contains the following processors:
Processor | Description |
---|---|
InitializeVelocityContext | Initializes the pipeline argument objects. |
AddTemplateRenderers | Provides two custom tools that format data and time values (dateTool) and numbers (numberTool) in a NVelocity template. |