wiki:syntax:命名空间

命名空间

命名空间是用于给页面分类的机制,当把一个页面比作文件时,一个命名空间就相当于一个目录或者文件夹。

DokuWiki中,您可以采用命名空间来将页面分类。命名空间的命名规则与页面命名规则相同,请参考页面名

你不需要独立地创建命名空间,只需简单地在页面名中使用冒号就可以创建。在最后一个冒号之后的内容就是页面本身的名字,其他的内容都算作是命名空间。DokuWiki会自动创建页面用到的、不存在的所有命名空间。

例子 含义
example 表示当前命名空间的example页面。1)
:example 表示根命名空间的example页面。
wiki:example 表示命名空间wiki中的页面example。命名空间wiki位于根部命名空间之下。
ns1:ns2:example 表示命名空间ns2中的example页面。命名空间ns2位于命名空间ns1下面;命名空间ns1位于根命名空间下。
:ns1:ns2:example 同上。
.ns1:ns2:example 表示名命名空间ns2下的example页面。命名空间ns2位于命名空间ns1下面;命名空间ns1位于当前命名空间下。
.ns1:ns2: 表示命名空间ns2的“开始”2)页面。命名空间ns2位于命名空间ns1下面;命名空间ns1位于当前命名空间下。
..ns: 表示上级命名空间下的ns命名空间。

命名空间内的所有页面都被移除之时,该命名空间会被自动删除。

你可以使用PageMove插件将每个页面从旧的命名空间移动到新的命名空间。请参考相关文档了解这是否满足你的需要。

手动的方式稍困难些:

  • 重命名表示命名空间的文件夹,这些文件夹在:
    • data/pages
    • data/media (如果存在)
  • 移除该命名空间在 data/meta下的元数据
  • 移除该命名空间在data/attic下的历史记录数据(或者将它们移走,如果你想保留旧版)

例如,在Unix主机上,你可以:

  • mv /dokuwiki_base/data/pages/old_namespace /dokuwiki_base/data/pages/new_namespace
  • mv /dokuwiki_base/data/media/old_namespace /dokuwiki_base/data/media/new_namespace
  • rm -Rf /dokuwiki_base/data/meta/old_namespace
  • rm -Rf /dokuwiki_base/data/attic/old_namespace

要注意,对于非拉丁字符设置(例如希腊语、俄语等),需要编码 old_namespace 和/或 new_namespace 等词语。

  • (通过编辑链接)纠正指向已移除命名空间下所有页面的链接(在移除命名空间之前,你可以通过反向链接(backlink)发现需要修改的链接)。
  • 浏览新命名空间下的每个页面,这会创建已经丢失的已移除的命名空间下的页面的索引信息和元数据。

但是,你依然留下大量无用信息,例如data/changes.log中、cache下的各种文件(包括.idx文件等)。如何困难,你可以按照下面的方法从空白状态开始(同样,在Unix下),要注意的时,这意味着丢失所有的历史信息(也就是最近修改):

  • cat /dev/null > /dokuwiki_base/data/changes.log
  • rm -Rf /dokuwiki_base/data/attic/*
  • rm -Rf /dokuwiki_base/data/cache/?
  • rm -Rf /dokuwiki_base/data/cache/*.idx
  • rm -Rf /dokuwiki_base/data/cache/purgefile
  • 浏览你wiki的每一个页面

我知道这很费解(可能我忘记/弄乱一些你认为应该做的事情)。所有的都是PITA。你可以使用一些可重建整个wiki的搜索索引、删除整个cache和/或旧版wiki从而避免手动操作的插件

对于以冒号结尾的链接ID(linked)[[foo:bar:]],可能指向命名空间下的默认文件。 链接指向哪个页面,取决于所存在的特定名字的文件。对于[[foo:bar:]],会检测以下页面:

foo:bar:$conf['start']
foo:bar:bar
foo:bar

系统按照上面的顺序检测页面,并会链接到最先找到的页面。对于这些链接,不会在链接中检查多种格式(autoplural linking)。

:!: 这个特征仅在2006-09-28 RC1版或更新版上可用。


1)
“当前命名空间”可以大致理解为在查看或编辑某个页面时,这个页面所在的命名空间。
2)
默认的“开始”页面名是start
请输入您的评论. 可以使用维基语法:
 
  • wiki/syntax/命名空间.txt
  • 最后更改: 2021/08/04 11:13
  • A135(2)