命名空间(Namespace)的概念,你可以简单理解它就是一个“文件夹”。
在dokuwiki中,命名空间依靠 :
来分隔,不过你偶尔也可以使用 /
来代替冒号。
如果你有几个相同名称的页面(文件),它们都叫“start”,那么你可以通过不同的命名空间(文件夹)来存放和找到它们。
[[start|同级空间上的start]] [[:start|主页上的start]] [[:template:start|模板空间上的start]]
那么我们该如何确定它们的位置呢?
有下面的几种方法——
如果目标页面与当前页面处于同级空间(同文件夹),那么可以直接使用目标的名称来调用:
[[start|同级空间的start]]
同级空间的start
如果目标页面在根命名空间中,则必须使用定位符号来定位:
[[:start|主页上的start]]
主页上的start
如果目标页面在其他的命名空间(其他文件夹)中,那么就必须指定目标的空间及名称:
[[:template:start|模板页面中的start]]
模板页面中的start
[[/template/start|使用斜杠也可以解析]]
使用斜杠也可以解析
其实上面的代码 [[:template:start]]
,
你使用 [[template:start]]
时会发现一样有效,
这其中就涉及了相对路径的概念。
就如同文件夹一样,如果你未定义一个准确的路径,那么wiki脚本会在相对应的位置来搜寻目标页面。
首先它会搜索当前命名空间下是否有指定的命名空间或者页面,然后是同级的命名空间,最后是根命名空间。
所以,如果当前的命名空间下也有着一个名叫 template:
的命名空间的话,那么省略 :template:
就会造成定位错误。
请一定要小心这种错误的发生,尽量使用完整的定位符来指向命名空间及页面!
另外,你也可以使用如 ..:
来指向当前命名空间的父空间,不过除非必要,请尽量少用这种格式!
每个命名空间下还可以生成更多的命名空间,
比如我想在 playground 命名空间再创建一个 test 空间,并建立一个 temptest 页面,
就可以先创建:[[:playground:test:temptest]]
这个链接,点击后就可以创建文件了,
或者在浏览器中直接访问 /playground/test/temptest
这个地址。
效果 temptest