这个列表可以在 Velocity 中按日期排序吗?

Can this list be sorted by date in Velocity?

我找到了这段代码,用于按标签获取文章并将它们显示为带有 xWiki 链接的列表,但我希望它按日期排序。

有人对我有什么建议吗?

  {{velocity}}  
    #set ($list = $xwiki.tag.getDocumentsWithTag('myTag'))
      #foreach($reference in $list)
    #set ($document = $xwiki.getDocument($reference))
    #set ($label = $document.getTitle())
      [[$label>>$reference]]
    #end
  {{/velocity}}

提前致谢!

按速度排序可能会造成 2 种性能损失之一:

  1. 实际上是按速度排序,或者使用排序算法 -> 不必要地复杂化
  2. 将所有文档结果加载到内存(集合)中并 使用 sort/collection tool 对该集合进行排序 -> 如果结果比您预期的要大,您可能会很快面临 运行 内存不足的风险。

假设有 XWiki 运行 支持,最简单的替代方法是对存储在文档中的 XWiki.TagClass 对象执行 XWQL 查询,并在数据库级别进行排序。此时,在velocity中,只需要显示结果:

{{velocity}}
#foreach ($docStringRef in $services.query.xwql("from doc.object(XWiki.TagClass) tagsObj where 'conference' member of tagsObj.tags order by doc.creationDate DESC").setLimit(10).execute())
  #set ($document = $xwiki.getDocument($docStringRef))
  [[$document.title>>$docStringRef]]
#end
{{/velocity}}

对于未来 use/reference,XWiki 中可用的 Velocity 工具列表也可能有用 https://extensions.xwiki.org/xwiki/bin/view/Extension/Velocity%20Module#HVelocityTools 因为它们可以帮助进行常见操作,包括排序(我在上面第 2 点提到的)