循环遍历标签列表并比较xWiki

时间:2013-08-26 07:00:29

标签: velocity xwiki

我有一个带有Tag系统的xwiki项目。我想要做的是解决this问题。当我点击标签时,我得到正确的输出,但我想根据其他标签对文件进行排序,这意味着我需要一种方法来搜索多个标签。我所做的是获取标记有第一个标记的文档列表,然后使用#foreach查看每个文档以查找我需要显示的标记。

#set ($tag = "$!{request.get('tag')}")
#set ($list = $xwiki.tag.getDocumentsWithTag($tag))
#foreach($doc in $list)
    #set ($tags = $xwiki.tag.getTagsFromDocuments($doc))
    #foreach($tg in $tags) 
        #if($tg == 'Tutorial')
        {{html}} #displayDocumentList($doc false $blacklistedSpaces){{/html}}
         #end
    #end
 #end

以上代码查找标有$tagTutorial的文档。看起来效率不高但是我不想在这个时间点效率,我只是需要它才能工作,上面的代码没有,我不知道为什么。

EDIT ::::

我尝试了另一种解决方案。这次我得到$list$list2其中$list是包含第一个标记的所有文档,$list2是包含第二个标记的文档。然后,我将每个文档的全名从一个列表与第二个列表中每个文档的全名进行比较。仍然无法正常工作。这是代码,

#set ($tag = "$!{request.get('tag')}")
#set ($list = $xwiki.tag.getDocumentsWithTag($tag))
#set ($list2 = $xwiki.tag.getDocumentsWithTag('Tutorial'))
  #foreach($doc in $list)
     #foreach($doc2 in $list2)
        #if($doc.fullName == $doc2.fullname)
              $doc
        #end
    #end
  #end

编辑2 ::::

所以现在#foreach循环为我提供了正确的输出,但我的问题是我要显示$ doc,因为如果#{{html}} #displayDocumentList($doc false $blacklistedSpaces){{/html}}有效,它会显示出来。不是因为我认为第一个params应该是一个列表,这里$ doc只是一个文档。

1 个答案:

答案 0 :(得分:1)

所以,这是如何显示您的文档。获得$doc后,请使用此行显示您的文档{{display reference="$doc"/}}

以下是Display Macro

的链接