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
    The hst:channel node must include a string property hst:channelinfoclass with the fully qualified name of the ChannelInfo interface to use. Optionally, you can add a child node hst:channelinfo with initial persisted values for channel properties. If omitted, the getters in the channel info interface return the default values defined in the @Parameter annotations.
    The hst:channel node can be either a sibling or a child of the hst:workspace node. Regardless of its location in the blueprint, when you create a new channel, the system always places the hst:channel node under hst:workspace in the new channel configuration. If the blueprint does not include a hst:channel node, the system still creates one under hst:workspace when the channel is created—even if the blueprint does not define a hst:workspace node.

    Info: The system always creates an hst:channel node under hst:workspace for 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 under hst:hosts when creating a new channel. If the blueprint does not include an hst:mount node, the system generates one automatically. The hst:locale property 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 the hst:content property (type String) to the path of the content root node (for example, /content/documents/myproject).
    To reuse an existing HST configuration, set the hst:configurationpath property 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 the hst:inheritsfrom property.

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.

Share Feedback
Page: /build/experience-pages-channels/blueprints-configuration
Section: Build
Category *