xwiki功能-内容组织

嵌套页和子wiki

可以通过把页面嵌在其他页面(即文档)来组织内容。每个页面通常保存关于某个特定主题的内容。

有以下几种方法来组织你的wiki页面:

  • 在一个wiki内,你可以创建页面层次结构,通过在其他页面创建页面。此功能称为嵌套页。例如,你有一个页面"Product Team"嵌在"XWiki",而"XWiki"嵌在"Rue Beaubourg","Rue Beaubourg"嵌在"Paris"。当你查看"Product Team"页面时,你可以在这个页面看到如以下所示的面包屑(你可以点击省略号展开树):

    breadcrumb-limited.png

    为了查看当前wiki下页面的完整结构,我们提供了一个Index Application应用程序,其中有一个树视图。例如:

    indextree.png

    我们还为每个级别提供面包屑导航树。例如:

    breadcrumbsTreeNavigation.png

  • 你也可以用几个子wiki来组织内容。另外,你可能有如下原因希望使用subwiki而不是使用嵌套页面:
    • 你想为一组用户提供自定义应用程序/扩展,而不提供给其他人
    • 你想实现多租户,每个子wiki被看作是一个孤岛(各自拥有自己的用户等)

术语

  • 嵌套页 (又名 非终端页):这是可以有子页面的wiki页面。技术上一个嵌套页是以空间方式实现(即一个WebHome页面)。
  • 非嵌套页 (又名 终端页):这是一个不能有子页面的wiki页面。应用程序和脚本可以创建终端页面。高级用户还可以从用户界面直接创建终端页面。而普通用户只能创建嵌套页面。
  • 嵌套空间: 一个空间拥有另一个空间作为父节点。用户只需要处理嵌套页面,事实上嵌套页面模拟使用嵌套空间。这就是为什么嵌套空间的概念仍然存在。

历史

截至XWiki 7.1,有2种方式来组织内容:

  • Wiki > Space > Page (包括权限继承和管理员功能) 
  • Page > Child page > Child page of child page > ... (用于分层导航) 

注意,这两个是独立的:一个页面拥有的父页面可以在不同的空间或wiki。

虽然这是起作用的,但我们发现这会导致问题,如:

  • 我应该为我的团队创建一个wiki还是一个空间?
  • 我应该在我的主页上放置哪个导航:空间列表或页面树视图?
  • 我可以在一个空间下的一个页面设置权限?

与此同时,很长一段时间也出现了关于XWiki的未来“新模式”的讨论,理想的情况包含嵌套空间,提供以下功能:

  • 统一处理分级导航(Page > Sub-page > Sub-sub-page >...) 
  • 导航体现在URL(.../PageA/PageB/PageC) 
  • 继承访问权限 (PageA权限应用到PageB和PageC, 除非另外定义。PageB权限取代PageA,同样应用到PageC) 

最后,我们借用此机会,在XWiki 7.2版本,把从以前的方式改为新的方式。

一个理想情况,从旧模式改为新模式,将意味着模型需要完全重写。替换页面和空间,你将需要有一个实体。这个实体可能称为节点,将有自己的内容,相关的属性,和孩子列表(类似于JCR模式)。

而在现实中,为了不破坏与现有的许多功能和应用程序的兼容性,我们必须保持“页面”和“空间”的概念来模拟嵌套页的功能。下面是我们所做的,来实现:

  • 我已经隐藏了parent-child功能
    尽管它是隐藏的,如果你需要,仍然可以重新启用:在配置文件 xwiki.properties设置 core.hierarchyMode属性 parentchild
  • 当创建一个新页面时,系统会自动创建Page.WebHome,同时创建了一个空间,尽管这是隐藏在URL(你只能看到.../Page/) 
  • 对于高级用户,可以创建“终端页面”,是页面不是空间。这主要为了应用程序创建者。

猜你喜欢

转载自blog.csdn.net/qq_33873431/article/details/80360864