Tree navigation | HCL Digital Experience
The Content, Layout, and Portlet beans each represent a tree hierarchy. The basic navigation methods are the same for all three. A tree bean provides methods to access the root node to look up the parent and children of a node, and to maintain a cursor that points to a selected node in the tree.
The code examples use the Content bean, but you can do the same operations on the other tree beans as well. The command root returns the ID of the root node, as a fixed starting point for navigation.
Jython: Content.root()
Jacl: $Content root
You can select a node by its ID by using the select command. You can clear the current selection by using deselect or by using select without an argument. You can return the ID of the selected node by using the current command. For interactive use, csn is an alias for current.
Content.select ID
Content.deselect
Content.current
Content.csn
# example: select the root node
Content.select(Content.root())
$Content select ID
$Content deselect
$Content current
$Content csn
# example: select the root node
$Content select [$Content root]
The path command returns a list of all IDs from the root to the currently selected node. In a similar way, the children command returns the children of the selected node. You can obtain the ID of the parent of the selected node by using parent.
Content.path
Content.parent
Content.children
# example: select a node and print its children
Content.select(node_ID)
for child in Content.children().split():
print child
$Content path
$Content parent
$Content children
# example: select a node and print its children
$Content select node_ID
foreach child [$Content children] { puts "$child" }
You can also use the commands path, parent, and children with an explicit ID instead of implicitly referring to the currently selected node.
Content.path(ID)
Content.parent(ID)
Content.children(ID)
$Content path ID
$Content parent ID
$Content children ID
For simplicity, there are dedicated select commands for the root node and for the parent of the currently selected node. In the following example, the first argument is a dummy that is used to distinguish the method from the select with an ID argument. The dummy argument is not interpreted. The second argument is a keyword, which is not case-sensitive. Alternative, shorter keywords are documented in the bean help.
Content.select("the", "root")
Content.select("the", "parent")
$Content select the root
$Content select the parent