1

タグシステムが実装された 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つのドキュメントにすぎません。

4

1 に答える 1

1

ですから、ここにあなたの文書を表示する方法があります。$docこの行を使用してドキュメントを表示したら 、{{display reference="$doc"/}}

表示マクロへのリンクは次のとおりです。

于 2013-08-30T04:48:35.800 に答える