我正在尝试创建一个自动索引,其中将显示空格中的所有页面。类似的东西:
其中:
Read=True
)用户可以点击访问内容。Read=False
)用户可以看到标题,但无法点击。如果用户无权read
我想要的页面,至少他可以看到页面的标题,因为我可以继续列出能够read
的页面。子。
我有什么:
#foreach($space in $xwiki.spaces)
#set($WebHome = $space + ".WebHome")
#getChildrenOf($WebHome)
#end
现在递归getChildrenOf
宏是:
#macro(getChildrenOf, $docName)
#foreach($name in $xwiki.searchDocuments('where doc.parent = ? or doc.parent = ? order by doc.name', [$docName, "xwiki:$docName"]))
#if($xwiki.hasAccessLevel('view', "xwiki:$name"))
[[$xwiki.getDocument($name).getPlainTitle()>>$name]]
#else
$xwiki.getDocument($name).getPlainTitle()
#end
#getChildrenOf($name)
#end
#end
结果:
在else
我收到一个显示功能$xwiki.getDocument($name).getPlainTitle()
的纯文本,而不是页面的标题。
如果我只是在$name
中写else
我得到的是Space_1.Page_2
而不是第2页的标题。
为什么会这样?我该如何解决?
答案 0 :(得分:0)
$xwiki.getDocument($name)
返回null,当方法返回null时,Velocity行为将显示代码。
您可以使用$xwiki.getDocumentAsAuthor($name)
来访问具有脚本作者权限的文档。见http://nexus.xwiki.org/nexus/service/local/repositories/releases/archive/org/xwiki/platform/xwiki-platform-oldcore/6.2/xwiki-platform-oldcore-6.2-javadoc.jar/!/com/xpn/xwiki/api/XWiki.html#getDocumentAsAuthor%28org.xwiki.model.reference.DocumentReference%29