Containers configuration - BloomReach Experience - Open Source CMS

This article covers a Hippo CMS version 12. There's an updated version available that covers our most recent release.

21-06-2018

Containers configuration

The Workspace configuration page explained that the following configuration nodes can be placed below the hst:workspace node:

/hst:workspace:
  /hst:containers:
  /hst:sitemenus:
  /hst:abstractpages:
  /hst:pages:
  /hst:components:
  /hst:sitemap:
  /hst:channel:

On the Workspace configuration page, we already explained hst:sitemenus, hst:pages and hst:sitemap. This page explains the hst:containers section.

hst:containers

Through the Channel Editor a webmaster can modify certain configurable regions of a web page. These regions are called containers. Containers are only modifiable when they are stored in the hst:workspace. Or more explicitly, when they are configured either 

  1. below hst:workspace/hst:pages or
  2. below hst:workspace/hst:containers.

This is to enforce that runtime production changes through the Channel Editor do not end up outside the hst:workspace.

Containers configured outside the workspace are not editable. When a non-workspace page (maintained by developer / bootstrap content) needs to have editable regions, then that page needs to reference containers below  hst:workspace/hst:containers. An example configuration (relevant parts) making use of hst:workspace/hst:containers setup is as follows:

/example:
  /hst:pages:
    /home:
      jcr:primaryType: hst:component
      /main:
        jcr:primaryType: hst:component
        /content:
          jcr:primaryType: hst:component
          /container:
            jcr:primaryType: hst:containercomponentreference
            hst:referencecomponent = home/container
  /hst:workspace:
    /hst:containers:
      jcr:primaryType: hst:containercomponentfolder
      /home:
        jcr:primaryType: hst:containercomponentfolder
        /container:
          jcr:primaryType: hst:containercomponent
          /list:
            jcr:primaryType: hst:containeritemcomponent

The configuration above has two new node types:

  1. hst:containercomponentreference: this nodetype has one mandatory property hst:referencecomponent. The property must contain a relative path to a node of type hst:containercomponent. The hst:containercomponent node is located in the hst:workspace/hst:containers node.

    If the hst:containercomponent is not present, or the path in hst:referencecomponent is incorrect, the HST does not load the hst:containercomponentreference  into it’s model, i.e. it is entirely skipped.

    Important!

    The HST model uses the node name of hst:containercomponentreference  and not the node name of the hst:containercomponent. For example, if the name of the hst:containercomponentreference node is  mycontainer but the hst:referencecomponent refers to a hst:containercomponent with name yourcontainer, then the HST model knows the component as mycontainer. So, you need to use mycontainer in the hst:include tag:

    <hst:include ref="mycontainer" />

     

    /example:
      /hst:pages:
        /home:
          jcr:primaryType: hst:component
          /main:
            jcr:primaryType: hst:component
            /content:
              jcr:primaryType: hst:component
              /mycontainerjcr:primaryType:
                hst:containercomponentreference
                hst:referencecomponent: home/yourcontainer
      /hst:workspace:
        /hst:containers:
          jcr:primaryType: hst:containercomponentfolder
          /home:
            jcr:primaryType: hst:containercomponentfolder
            /yourcontainer:
              jcr:primaryType: hst:containercomponent
              /list:
                jcr:primaryType: hst:containeritemcomponent
  2. hst:containercomponentfolder: this is only a placeholder node that can contain another hst:containercomponentfolder or a hst:containercomponent that can be referenced.

The CNDs for the two new node types are: 

[hst:containercomponentreference] > nt:base orderable
- hst:referencecomponent (string) mandatory

[hst:containercomponentfolder] > nt:base orderable
+ * (hst:containercomponentfolder)
+ * (hst:containercomponent)

Pages in the hst:workspace technically can also use the mechanism to store their containers below hst:workspace/hst:containers, however it is most likely easier to maintain if the containers for hst:workspace pages are just stored below the page directly, for example:

/example:
  /hst:workspace:
    /hst:pages:
      /home:
        jcr:primaryType: hst:component
        /main:
          jcr:primaryType: hst:component
          /content:
            jcr:primaryType: hst:component
            /container:
              jcr:primaryType: hst:containercomponent
              /list:
                jcr:primaryType: hst:containeritemcomponent
See Channel Editor Containers for information on configuring how containers are rendered in the Channel Editor.

Summary  

Only containers stored in the hst:workspace can be modified through the Channel Editor. Modifiable containers can be explicitly stored below hst:workspace/hst:pages or below hst:workspace/hst:containers, in which case they can be referenced by non-workspace pages.

Did you find this page helpful?
How could this documentation serve you better?
On this page
    Did you find this page helpful?
    How could this documentation serve you better?