Blueprints Configuration
When you update blueprints using the Console, you must log out and log in to the CMS again to view the changes in the Experience manager's 'Add Channel' dialog.
Blueprints for New Channels
The Experience manager can create new channels at runtime. Each new channel is based on a blueprint, which defines the HST configuration and content for the channel. When you create a new channel, the system adds several nodes to the HST configuration, including a channel, mount, site, and configuration nodes. The names of these nodes are derived from the channel name.
All blueprints are stored at:
/hst:hst/hst:blueprints
A typical blueprint node structure is:
/hst:hst:
/hst:blueprints:
/example-blueprint:
hst:name:
hst:description:
hst:contentRoot:
/hst:configuration:
/hst:pages:
/...:
/...:
/hst:workspace:
/...:
/hst:channel:
/hst:channelinfo:
/hst:mount:
/hst:site:
Blueprint Properties
A blueprint can define the following properties:
hst:name: The display name of the blueprint in the CMS blueprint selection dialog.hst:description: The description shown in the blueprint selection dialog.hst:contentRoot: The node where bootstrap content for the blueprint is copied. Defaults to/content/documents. This property is only relevant for blueprints that include content.
Blueprint Child Nodes
A blueprint can include these child nodes:
-
hst:configuration
Contains the HST configuration for new channels created from this blueprint. This can include site menus, sitemap, components, templates, and other configuration elements as needed. -
hst:channel
Thehst:channelnode must include a string propertyhst:channelinfoclasswith the fully qualified name of theChannelInfointerface to use. Optionally, you can add a child nodehst:channelinfowith initial persisted values for channel properties. If omitted, the getters in the channel info interface return the default values defined in the @Parameter annotations.
Thehst:channelnode can be either a sibling or a child of thehst:workspacenode. Regardless of its location in the blueprint, when you create a new channel, the system always places thehst:channelnode underhst:workspacein the new channel configuration. If the blueprint does not include ahst:channelnode, the system still creates one underhst:workspacewhen the channel is created—even if the blueprint does not define ahst:workspacenode.Info: The system always creates an
hst:channelnode underhst:workspacefor a new channel, regardless of how or whether the blueprint defines it. -
hst:mount
Include this node only if the mount for a channel created from this blueprint requires additional properties. If present, the system copies the mount node and its properties to the correct location underhst:hostswhen creating a new channel. If the blueprint does not include anhst:mountnode, the system generates one automatically. Thehst:localeproperty for the new mount is always set to match the locale of the content root path. -
hst:site
Use this node when channels created from the blueprint should reuse existing content or HST configuration. To reuse existing content, set thehst:contentproperty (typeString) to the path of the content root node (for example,/content/documents/myproject).
To reuse an existing HST configuration, set thehst:configurationpathproperty to the absolute path of the configuration (for example,/hst:hst/hst:configurations/myproject). Channels created from this blueprint will inherit the specified HST configuration via thehst:inheritsfromproperty.
Blueprints can be structured in different ways, depending on the channel type. The following sections describe common options.
Blueprint with Content (Subsite)
A blueprint that includes content is often called a 'subsite'. This type of blueprint reuses HST components from a specific site application but provides a separate content tree. The structure typically looks like this:
/hst:hst:
/hst:blueprints:
/example-subsite:
hst:contentRoot: /content/documents/subsites
hst:description: Create a new subsite
hst:name: Subsite
/hst:configuration:
hst:inheritsfrom: [../common-subsite]
/hst:sitemap:
/hst:sitemenus:
/hst:pages:
/hst:workspace:
/hst:channel:
hst:channelinfoclass: org.example.channels.SubsiteInfo
In this example, the blueprint defines its own sitemap, site menus, and pages. It inherits components, templates, and catalog items from the common-subsite HST configuration.
Hint: For details on HST configuration inheritance, see Adding a new (sub)site.
Subsite Bootstrap Content
A subsite blueprint usually provides a bootstrap content structure. Each time you create a new subsite channel, the system copies this structure to the path specified by the hst:contentRoot property.
The new-subsite query handles copying the bootstrap content. For example, the blueprint at:
/hst:hst/hst:blueprints/example-subsite
can reference its bootstrap content tree at:
/hippo:configuration/hippo:queries/hippo:templates/new-subsite/hippostd:templates/example-subsite
When you create a new channel named my-subsite from this blueprint, the system copies the node /hippo:configuration/hippo:queries/hippo:templates/new-subsite/hippostd:templates/example-subsite to /content/documents/subsites/my-subsite.
A sample YAML definition for the subsite bootstrap content:
definitions: config: /hippo:configuration/hippo:queries/hippo:templates/new-subsite/hippostd:templates/example-subsite: jcr:primaryType: hippostd:folder jcr:mixinTypes: ['hippo:harddocument'] hippostd:foldertype: [new-document, new-folder] # add more bootstrap content here
Blueprint Reusing Existing Content
You can also configure a blueprint to reuse existing content. This approach allows you to prepare all content for a new channel in the CMS (for example, by translating or copying existing content) before creating the channel. The content tree can then be selected during channel creation. A typical structure is:
/hst:hst:
/hst:blueprints:
/example-website:
hst:description: Create a new website
hst:name: Website
/hst:configuration:
hst:inheritsfrom: ../common-website
/hst:sitemap:
/hst:sitemenus:
/hst:pages:
/hst:workspace:
/hst:channel:
hst:channelinfoclass: org.example.channels.WebsiteInfo
/hst:site:
hst:content: absolute path content root of an existing website
The hst:site node sets the initial value for the content root path in the 'Add Channel' dialog. If you omit the hst:site node, the content root path field will be empty by default.
If both a hst:site node with an hst:content property and a matching subsite node under /hippo:configuration/hippo:queries/hippo:templates/new-subsite/hippostd:templates are present (that is, both 'blueprint reusing existing content' and 'subsite bootstrap content' are configured), the system gives precedence to the subsite bootstrap content.