这个列表可以在 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 种性能损失之一:
- 实际上是按速度排序,或者使用排序算法 -> 不必要地复杂化
- 将所有文档结果加载到内存(集合)中并
使用 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 点提到的)
我找到了这段代码,用于按标签获取文章并将它们显示为带有 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 种性能损失之一:
- 实际上是按速度排序,或者使用排序算法 -> 不必要地复杂化
- 将所有文档结果加载到内存(集合)中并 使用 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 点提到的)