freemarker - 删除 Lithium/Freemarker 中的重复项

标签 freemarker duplicate-removal

我正在使用 Lithium 自定义组件来创建撰写最多博客文章的用户列表。我有一个用户列表,他们写了一篇博客文章,然后进行了一次休息,以获取每个用户所写的博客文章的数量。

<#assign authors = rest("blogs/id/audiofile/posts")>

<#list authors.node_message_context.message.author as t>
<#assign count = rest("${t.@href}/posts/style/blog/count")>
<#assign orderedCount = count.value>
<#list orderedCount as c>
<ul>
<li>Blog posts ${c} userid ${t.@href}
</ul>
</#list>
</#list>

给出输出
Blog posts 4 userid /users/id/2477

Blog posts 4 userid /users/id/2477

Blog posts 4 userid /users/id/2477

我的问题是如何删除此列表中的重复作者?

最佳答案

@Wolfgang Fahl 希望我们可以修改 Lithium REST API =)!

不幸的是,情况并非如此,所以我们必须处理我们得到的东西,可能会做这样的事情:

<#-- this variable we need to store unique author ids -->
<#assign authorids = [] />
<#-- I'd use API v2 here, think for such stuff it's more powerful than v1 -->
<#assign query = 'SELECT author FROM messages WHERE conversation.style = "blog" AND board.id = "audiofiles"'?url />
<#assign response = rest("2.0", "/search?q=" + query) />

<#-- the response object will contain a list of blog post authors,
     we loop trough them to get uniqe ids of every user that has written
     a blog post, we need them later -->
<#list response.data.items as author>
    <#-- make sure each author just gets added once -->
    <#if !authorids?seq_contains(author.id)>
        <#assign authorids = authorids + [author.id] />
    </#if>
</#list>

<#-- now we loop trough the unique author ids and ask for the amount of
     blog posts they have written -->
<ul>
<#list authorids as id>
    <#assign query = 'SELECT count(*) FROM messages WHERE author.id = id AND board.id = "audiofiles"'?url />
    <#assign response = rest("2.0", "/search?q=" + query) />

    <li>User with ID ${id} has written ${response.data.count} blog posts</li>
</#list>
</ul>

代码未经测试,所以不能 100% 确定它是否有效,但我希望我选择的方法通过上面的代码变得清晰......

关于freemarker - 删除 Lithium/Freemarker 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15925379/

相关文章:

java - Freemarker压缩没有空格的single_line

java - 电子邮件与 strut 集成

r - 找到所有重复项的平均值

c++ - 无论如何要将键,值,值存储到 map 中

java - Freemarker:在模板中没有 getter 的情况下访问公共(public)字段

hash - 在 freemarker 中为散列内部的散列分配 key

variables - freemarker插值可以包含插值吗?

mysql - 删除除一条记录外的重复记录

SQL 查询 - 尽量避免结果集中的重复数据?

ios - 使用NSSet不敏感地从NSArray案例中删除重复项