Experience Page Layouts Configuration
Info: Available in brXM 14.3.0 and later.
Overview
Experience Pages are standalone pages that combine content and page layout, enabling a page-driven approach in Bloomreach Content. A CMS user creates an Experience Page Document, which includes an embedded page configuration based on an Experience Page Layout. Developers define Experience Page Layouts in the project's HST configuration.
Configuration
Under an hst:configuration node, you can add an optional hst:xpages node. This node contains one or more hst:xpage nodes that define Experience Page Layouts. Example structure:
+ hst:myproject + hst:configurations + myproject + hst:xpages [hst:xpages] + one-column-xpage [hst:xpage] - hst:referencecomponent = hst:abstractpages/base + main [hst:containercomponent] - hippo:identifier = 4d1776f0-faa8-4913-a94f-89d5e87bfce3
The hst:xpage node type extends hst:component, which is also used for pages configured under hst:pages. It supports all hst:component configuration options, with two additions:
hst:pageref: Used only in user-created Experience Page Documents containing anhst:xpagenode. Developers must not set this property in HST configuration.hst:label: Specifies the name of the Experience Page Layout shown when creating a new Experience Page Document.
Identifiable Containers
Nodes of type hst:containercomponent include the hippo:identifiable mixin. The behavior of nodes with this mixin is as follows:
- When created, the node receives a
hippo:identifierproperty with a randomly generated UUID. - If the
hippo:identifierproperty is removed, it is not regenerated. - When copying a node, if the source lacks
hippo:identifier, a new UUID is assigned. If the source hashippo:identifier, the value is copied as-is.
The hippo:identifier property provides a stable identifier for nodes when neither jcr:uuid nor jcr:path is suitable.
HST configuration nodes of type hst:containercomponent always include the hippo:identifiable mixin, so container items receive the hippo:identifier property by default. Do not modify hippo:identifier values or copy them between different container nodes or xpages in YAML files. If a bootstrapped hst:containercomponent node from YAML does not have a hippo:identifier, the property is generated when the node is created.
For Experience Pages, the hippo:identifier property links the Experience Page Layout container to the Experience Page Document container.
Containers with Default Container Items
You can configure an Experience Page Layout so that its containers include one or more default container items. When a user creates an Experience Page Document, these container items are copied into the document's container and act as prototypes.
Hint: See the Configure Experience Pages tutorial for an example of an Experience Page Layout with a container that includes a default container item.
Inheritance
Info: Experience Page inheritance is supported starting with brXM 14.4.0.
Like hst:pages, you can inherit hst:xpages from other HST configurations.
Example configuration:
+ hst:myproject + hst:configurations + common + hst:xpages [hst:xpages] + common-xpage [hst:xpage] + myproject - hst:inheritsfrom = ../common + hst:xpages [hst:xpages] + one-column-xpage [hst:xpage]
In this example, the myproject configuration inherits the common-xpage layout from the common configuration.
The hst:xpages node is not supported under hst:workspace. Unlike hst:pages, only developers manage hst:xpages layout configuration.
When creating a -preview configuration or a branch of myproject, only the hst:workspace node is copied. The hst:xpages node is not duplicated; instead, these configurations inherit hst:xpages from the primary live configuration for the same channel ID.
For example:
+ hst:myproject + hst:configurations + myproject + hst:workspace + hst:xpages [hst:xpages] + one-column-xpage [hst:xpage] + myproject-preview - hst:inheritsfrom = ../myproject + hst:workspace + myproject-v8UfB: - hst:inheritsfrom = ../myproject - hst:branchid: v8UfB - hst:branchof: myproject + hst:upstream + hst:workspace + myproject-v8UfB-preview: - hst:inheritsfrom = ../myproject-v8UfB - hst:branchid: v8UfB - hst:branchof: myproject + hst:workspace
In this setup, myproject-preview, myproject-v8UfB, and myproject-v8UfB-preview all inherit the hst:xpages from the primary live myproject configuration.
If multiple channels require the same hst:xpages layouts, either duplicate the layouts or place them in a shared HST configuration that channels inherit from. Using a common configuration is recommended.