我有一个实施了标签系统的 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
上面的代码查找带有$tag
和标记的文档Tutorial
。看起来效率不高,但我现在不是在寻找效率,我只需要它工作,上面的代码没有,我不知道为什么。
编辑::::
我尝试了不同的解决方案。这次我得到了一个$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}}
是有效的就会显示。不是因为我认为第一个参数应该是一个列表,而这里 $doc 只是一个文档。