通过标签和比较XWiki实现的列表循环(Loop through a list of Tags an

2019-10-18 13:46发布

我有一个实施的标签系统XWiki实现的项目。 我所试图做的是解决这个问题。 当我点击一个标签,我得到了正确的输出,但我要的文件进行排序,根据他们的其他标签,这意味着我需要一种通过多个标签进行搜索。 我所做的是得到的标注了第一个标签,然后使用文档列表#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 。 看起来不是很有效的,但我不会在这一点上的时间寻找工作效率,我只是需要它来工作,上面的代码不,我不知道为什么。

编辑::::

我尝试了不同的解决方案。 这一次,我得到了$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循环给我正确的输出,但我的问题是我想说明的$文档,因为这将显示是否#{{html}} #displayDocumentList($doc false $blacklistedSpaces){{/html}}为有效。 是不是因为我觉得第一params为应该是一个列表,并在$文档只是其中的一个文件。

Answer 1:

所以,这里是如何显示您的文档。 一旦你获得$doc使用这条线,以显示你的文档, {{display reference="$doc"/}}

这里是链接到显示宏



文章来源: Loop through a list of Tags and compare xWiki