data-sly-list如何检查第一项

时间:2016-07-20 12:46:14

标签: list aem sightly

使用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}">

但没有工作......任何想法?

2 个答案:

答案 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),这可能是一个多值字段