如何在 xwiki 中显示与标签相关的页面列表

How to display list of pages related to a tag in xwiki

我使用 xwiki 创建一个 wiki。我想动态显示页面列表(在实时表中或只是批量显示。),所以我使用标签系统。

目前我使用 HTML 宏 +​​ iframe,但它会显示带有 header、侧边菜单、选项等的所有页面

我试过 this snippet 但没有显示任何内容,而且我不太理解所有代码,我不确定这是好的解决方案。

我试过使用显示和包含宏:

{{display reference="Main.Tags"/}}

它在云端显示我所有的标签。

但是为了得到我想要的东西,我应该用

指定此代码
queryString="do=viewTag&tag=Test"

或类似的东西,但我不知道该怎么做。

因此,如果您有想法显示具有相同标签的页面列表,我将很乐意阅读它:)

谢谢。

编辑1

所以我开始研究它,并按照以下说明显示我想要的内容:

    {{velocity}}
#set ($list = $xwiki.tag.getDocumentsWithTag('test'))
#foreach($doc in $list)
  $doc
#end
{{/velocity}}

但是问题是显示所有文件的路径。

    Wiki Interne.2\. Liste des flux TEST.2_1_Flux_Externes_Entrants.AGDAT01.WebHome
Wiki Interne.2\. Liste des flux TEST.2_1_Flux_Externes_Entrants.AGOL20.WebHome
Wiki Interne.2\. Liste des flux TEST.2_1_Flux_Externes_Entrants.AGOL21.WebHome
Wiki Interne.2\. Liste des flux TEST.2_1_Flux_Externes_Entrants.AGOL22.WebHome

如何限制只显示文档的标题?

您可以使用 Livetable 宏 (http://extensions.xwiki.org/xwiki/bin/view/Extension/Livetable%20Macro) 列出您想要的页面并将其自定义为仅显示带有特定标签的页面。

{{velocity}}
#set($collist = ['doc.title', 'doc.location', 'doc.date', 'doc.author'])
#set($colprops = {
 'doc.title' : { 'size' : 30, 'link' : 'view', 'filterable': false, 'sortable': false },
 'doc.location' : { 'html' : true },
 'doc.date' : { 'type' : 'date' },
 'doc.author' : { 'type' : 'text', 'link' : 'author' }
})
#set($options = {
 'translationPrefix' : 'platform.index.',
 'rowCount' : 15,
 'tagCloud' : 'true',
 'selectedTags' : ['test']
})
#if(!$isGuest)
 #set($discard = $collist.add('_actions'))
 #set($discard = $colprops.put('_actions', { 'actions' : ['copy', 'delete', 'rename', 'rights'] }))
#end
#livetable('taggedDocs' $collist $colprops $options)
{{/velocity}}

因为 'tagCloud' 选项需要启用以便 'selectedTags' 选项允许您列出要默认显示的标签(在我的示例中,我列出了标记的页面使用标签 'test'),您还将看到用户可以 select 来自的所有其他可用标签。如果这让您感到困扰并且您不想让用户更改显示的标签,您可以通过在页面上进入对象编辑模式并添加类型为 [=22 的对象来简单地隐藏 livetable 上方的 'tagCloud' 部分=](有关详细信息,请参阅 http://www.xwiki.org/xwiki/bin/view/Documentation/DevGuide/Tutorials/SkinExtensionsTutorial/#HMinimalStyleSheeteXtension),内容如下 CSS:

#alldocs-tagcloud {
  display : none;
}

谢谢@Eduard Moraru :) 我会试试的。

但是,当我找到 Velocity 文档时,我已经解决了我的问题:http://velocity.apache.org/engine/1.7/user-guide.html

可能感兴趣的人的代码:

{{velocity}}
#set ($list = $xwiki.tag.getDocumentsWithTag('Your Tag'))
         #foreach($reference in $list)
  #set ($document = $xwiki.getDocument($reference))
  #set ($label = $document.getTitle())
         [[$label>>$reference]]
   #end
{{/velocity}}

试试这个,它是从内置标签应用程序中无耻切割的。

{{velocity}}
#set ($tag='Tag')
  #if ("$!{request.get('renamedTag')}" != '')
    {{info}}$services.localization.render('xe.tag.rename.success', ["//${request.get('renamedTag')}//"]){{/info}}

  #end
  #set ($list = $xwiki.tag.getDocumentsWithTag($tag))
  {{container layoutStyle="columns"}}
    (((
      (% class="xapp" %)
      === $services.localization.render('xe.tag.alldocs', ["//${tag}//"]) ===

      #if ($list.size()> 0)
        {{html}}#displayDocumentList($list false $blacklistedSpaces){{/html}}
      #else
        (% class='noitems' %)$services.localization.render('xe.tag.notags')
      #end
    )))
  {{/container}}
#set ($displayDocExtra = false)
{{/velocity}}