我正在创建一个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实现类似的功能。

09-28 06:30