我在Liferay中使用结构(XML)和模板(FTL)。
我的问题是我无法使用sort_by()
与getSiblings()
一起使用。
此代码不起作用,例如:
<ul id="emedia-categories">
<#list category?sort_by('linktext').getSiblings() as cat>
<li>
<a href="${cat.path.getData()}" title="${cat.title.getData()}">
<h3>
${cat.linktext.getData()}
</h3>
<img src="${cat.image.getData()}" alt="image-alt">
</a>
</li>
</#list>
</ul>
我得到的错误如下:
Expected sequence. category evaluated instead to com.liferay.portal.freemarker.LiferayTemplateModel on line 2, column 16 in 14868#14904#131571.
我想要实现的是遍历所有数据,并且在执行此操作时,我希望它在每个cat.linktext
内的字符串上排序。结果如下:A,B,C,D,E ...
而不是:D,B,E,A,C ......
这是我唯一的工作变体,但它在linktext
上没有任何排序,只是按照输入的顺序循环数据(可能是id):
<ul id="emedia-categories">
<#list category.getSiblings() as cat>
<li>
<a href="${cat.path.getData()}" title="${cat.title.getData()}">
<h3>
${cat.linktext.getData()}
</h3>
<img src="${cat.image.getData()}" alt="image-alt">
</a>
</li>
</#list>
</ul>
答案 0 :(得分:1)
错误消息非常明确:您尝试对类别进行排序,该类别不是序列(=列表或数组)。
您希望按属性linktext.data
对兄弟姐妹进行排序,这是一个序列(=列表):
<#list category.siblings?sort_by(['linktext', 'data']) as cat>
...
<#/list>