大家。我是与aem
合作的新手。我正在使用aem 6.4
。我的任务是根据JSON文件的内容以编程方式对cq:project
中aem
内容的顺序进行排序。应将JSON文件的内容设置为初始子项,而不是按创建日期排序的子项。
这是我的cq:page
的当前结构。如果child2是JSON文件中指示的那个,则它应该是第一个要显示的文件。 JSON文件的内容只是一个子项的名称,因此即使有10个子项,JSON文件的内容也应始终是列表中的第一个。
我花了几个小时研究如何实现这个,虽然我仍然找不到任何解决方案。关于如何创建这个的任何见解?谢谢!
据我了解,您想要一种方法来命令cq:Page
的命名子项成为列表中的第一个。
这是可能的,因为cq:Page是一个
orderable
节点。否则这是不可能的。你在CRX Explorer中检查任何nodetype。
我认为添加关于JSON的一点使问题复杂化。您只需要一个简单的方法,如下所示:
private void orderAsFirstChild(String childName, Node parentNode) throws RepositoryException {
if (parentNode.hasNode(childName)) {
// find current first child name
String firstChildName = Optional.ofNullable(parentNode.getNodes())
.map(NodeIterator::nextNode)
.map(node -> {
try {
node.getName();
} catch (RepositoryException e) {
e.printStackTrace();
}
return (String) null;
}) //
.orElse(null);
parentNode.orderBefore(childName, firstChildName);
}
}
你可能应该稍微清理一下,但这是使用Node#orderBefore
的一般想法
这可能有所帮助 -