我正在创建一个React应用程序,该应用程序需要继承特定于AEM CMS中每个产品的辅助导航。
假设我们在CMS中的页面布局如下:
- Product 1
-- Child Page 1A
-- Child Page 1B
-- Child Page 1C
- Product 2
-- Child Page 2A
-- Child Page 2B
-- Child Page 2C
现在,在外部应用程序中,如果有人正在加载产品1,我想查询AEM以获取产品1的子节点。
这有可能吗?如果是,该怎么办?我不知道是否可以使用AEM API,还是可以使用吊索/选择器组合来获取子节点?任何帮助,将不胜感激。
谢谢
最佳答案
您可以获取具有所需的深度级别和“ json”扩展名的GET请求的Page的子节点。
例如,如果您点击了:
.../Product1.1.json
JSON结果将如下所示:
{
"jcr:primaryType": "cq:Page",
"jcr:createdBy": "admin",
"jcr:content": {
"jcr:primaryType": "cq:PageContent",
"jcr:createdBy": "admin",
"jcr:title": "Product1",
"cq:template": "X",
"sling:resourceType": "Y",
"cq:lastModifiedBy": "admin"
},
"child-page-1A": {
"jcr:primaryType": "cq:Page",
"jcr:createdBy": "admin"
},
"child-page-1B": {
"jcr:primaryType": "cq:Page",
"jcr:createdBy": "admin"
},
"child-page-1C": {
"jcr:primaryType": "cq:Page",
"jcr:createdBy": "admin"
}
}
如果将深度级别从1增加到X,则可以从子节点/页面获取更多信息。
Sling Default JSON Rendering
正如Florian Salihovic所指出的,在生产/发布环境中可能禁用了默认渲染。
在这种情况下,您可以使用定制Servlet实现类似的功能。