タグシステムが実装された 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
。あまり効率的ではないように見えますが、現時点では効率性を求めていません。機能する必要があるだけで、上記のコードはそうではなく、理由がわかりません。
編集::::
別の解決策を試しました。今回は、最初のタグが付いたすべてのドキュメントと2 番目のタグが付いたドキュメントがどこにあるかを取得$list
します。次に、1 つのリストの各ドキュメントのフル ネームを、2 番目のリストのすべてのドキュメントのフル ネームと比較します。それでも機能しません。これがコードです。$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}}
有効な場合に表示されるように $doc を表示したいことです。最初のパラメーターはリストであると思われるためではなく、ここで $doc は1つのドキュメントにすぎません。