使用data-sly-list我可以在Sightly中迭代列表对象,但是如何检查第一个
<li>
并为其添加一个特定的类?
另外,如何分别显示每个项目?现在我的列表看起来像一个LI,所有项目由昏迷分隔。 (<li> item1,item2,item3 </li>
)
<ol data-sly-list="${currentPage.title}">
<li>${properties.title}</li>
</ol>
我确实尝试过:
<div data-sly-test="${!first}">
但没有工作......任何想法?
答案 0 :(得分:2)
检查spec,您可以使用itemList
变量:
<ol data-sly-list="${['a', 'b', 'c']}">
<li class="${itemList.first?'first':''}">${item}</li>
</ol>
答案 1 :(得分:0)
在标准AEM示例模板和组件中,jcr:title
是单个值字段,因此迭代${currentPage.title}
只会生成一个列表项。
您的代码应如下所示:
<ol data-sly-list="${currentPage.title}">
<li class="${itemList.first?'first':''}">${item}</li>
</ol>
但我不确定,你在做什么。 jcr:title
是您网页内容中的多值字段吗?或者它是单值并包含逗号分隔列表?
如果jcr:title
是多值字段,则会出现下一个问题,因为getTitle()
中的方法com.day.cq.wcm.api.Page
会返回字符串值而不是列表值。
您必须使用properties
对象,而不是:
<ol data-sly-list="${properties.jcr:title}">
<li class="${itemList.first?'first':''}">${item}</li>
</ol>
这应该适合你。
我的建议是尽可能将jcr:title
切换回单个值字段,以保持内部API正常工作,并添加另一个字段(即myTitle
),这可能是一个多值字段