2013-08-26 4 views
1

У меня есть проект xwiki с реализованной системой тегов. То, что я пытаюсь сделать, это решить проблему this. Когда я нажимаю на тег, я получаю правильный вывод, но я хочу сортировать документы в соответствии с их другими тегами, что означает, что мне нужен способ поиска по нескольким тэгам. То, что я сделал, это получить список документов, помеченных первым тегом, затем использовать #foreach, чтобы просмотреть каждый документ для тегов, которые мне нужно показать.Пройти через список тегов и сравнить xWiki

#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. Не выглядит очень эффективным, но я не ищу эффективности в этот момент времени, мне просто нужно, чтобы он работал, а код выше, и я понятия не имею, почему.

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 

EDIT 2 ::::

Так что теперь цикл #foreach дает мне правильный вывод, но моя проблема, я хочу, чтобы показать $ док, как это будет показано, если #{{html}} #displayDocumentList($doc false $blacklistedSpaces){{/html}} был действительный. Не потому, что я думаю, что первые параметры должны быть списком, а вот $ doc - это всего лишь один документ.

ответ

1

Итак, вот как отобразить документ. После того, как вы получите $doc использовать эту линию, чтобы показать документ, {{display reference="$doc"/}}

Вот ссылка на Display Macro

Смежные вопросы