每个人。我是aem
的新手。我正在使用aem 6.4
。我的任务是根据JSON文件的内容,以编程方式对cq:project
中aem
的内容进行排序。
JSON文件的内容应设置为初始子项,而不是按其创建日期排序的子项。
这是我的cq:page
的当前结构。如果child2是JSON文件中指示的那个,则它应该是要显示的第一个。 JSON文件的内容只是一个孩子的名字,因此,即使有10个孩子,JSON文件的内容也应始终是列表中的第一个孩子。
尽管我仍然找不到任何解决方案,但我已经花了很多时间研究如何实现它。我应该如何创建这个的任何见解?谢谢!
答案 0 :(得分:0)
这可能有帮助-
答案 1 :(得分:0)
据我了解,您想要一种将cq:Page
的命名子项排序为列表中第一项的方法。
这是可能的,因为cq:Page是
orderable
节点。否则这是不可能的。您可以在CRX资源管理器中检查任何节点类型。
我认为添加有关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