【问题标题】:AEM Sightly to get properties of child nodes.AEM Sightly 获取子节点的属性。
【发布时间】:2016-01-05 11:14:43
【问题描述】:

所以看起来很适合获取属性,但我想努力获取我已定义的其他子节点的属性。

这是我的 PictureFill 组件结构的开始:

{
  jcr:primaryType: "nt:unstructured",
  jcr:createdBy: "admin",
  fileReference: "/content/dam/myapp/dev/hero-billboard.jpg",
  jcr:lastModifiedBy: "admin",
  jcr:created: "Wed Oct 07 2015 03:38:00 GMT+0000",
  jcr:lastModified: "Wed Oct 07 2015 16:54:12 GMT+0000",
  sling:resourceType: "myapp/components/content/image",
  cq:responsive: {
    jcr:primaryType: "nt:unstructured"
  },
    mobile: {
      jcr:primaryType: "nt:unstructured",
      path: "/content/dam/myapp/dev-testing/placeholder/FPO-hero-sm.jpg"
    },
    tablet: {
      jcr:primaryType: "nt:unstructured"
    },
    desktop: {
      jcr:primaryType: "nt:unstructured"
    },
    extralg: {
      jcr:primaryType: "nt:unstructured"
    }
}

所以我卡住的部分是如何在移动、平板电脑、桌面和 extralg 节点上设置属性。

我想尽可能多地重复使用从 utils/Image.js 获得的 OOTB 功能,而不是重新构建它,这就是我走 Java 路线的原因。

【问题讨论】:

    标签: javascript aem sightly


    【解决方案1】:

    为什么不使用 WCMUse Java 类或 JS 使用?

    您正在寻找的是您想要实现的自定义,因此您应该拥有自己的控制器并访问子节点的属性,Sightly 是一种模板语言,如果您需要创建特定的东西,它会故意变得简单a 使用 Java 或 JavaScript 对象并通过 Sightly 访问它。

    【讨论】:

      【解决方案2】:

      方法一:HTL/Sightly

      使用question中的数据结构:

      <sly data-sly-list.device="${resource.listChildren}">
        ${device.name} // this should output 'mobile' or 'desktop', etc.
        ${device.path} // this should output the paths
      </sly>
      

      方法二:Javascript USE API

      这是我想要访问 item0item1 的节点 (navbarnavitem):

      这是帮助我做到这一点的 getLinks 方法(每个项目都有两个属性 - hreflinkText

      祝你好运……

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        • 2010-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多