User Tools

Site Tools


Sidebar

Translations of this page:
en

Index

en:wiki:namespaces

Namespaces

A namespace is similar to a directory or folder, while pages are similar to files. In DokuWiki you can use namespaces to categorize your pages. For names of namespaces the same restrictions hold as for pagenames.

A default DokuWiki installation comes with the built-in namespaces: wiki and playground.

Creating Namespaces

You don't need to create namespaces separately; simply create pages with colons in the pagename. The token after the last colon will be the name of the page itself, while all other tokens are namespaces. All namespaces used in your pagename that don't exist already will be created by DokuWiki automatically.

A namespace can be created in the media manager after having selected a file on the local computer and adding a name: (of namespace wanted) just before the media file name and then clicking upload. This will create on the fly the namespace (folder) for the file media, visible after a refresh of the windows.

In DokuWiki pages are created as in every other wiki. Simply create a link to a non existing page, follow this link, and click on Create this page. See also Adding pages.

Examples:
example
.example
.:example
refers to the page “example” in the current namespace.
:examplerefers to the page “example” in the root namespace.
..example
..:example
.:..:example
refers to the page “example” in the parent namespace
wiki:examplerefers to the page “example” in the namespace “wiki”. The namespace “wiki” is located beneath the root namespace.
ns1:ns2:example
:ns1:ns2:example
refers to the page “example” in the namespace ns2. The namespace ns2 is located beneath the namespace ns1; the namespace ns1 is located beneath the root namespace.
.ns1:ns2:example
.:ns1:ns2:example
refers to the page “example” in the namespace ns2. The namespace ns2 is located beneath the namespace ns1; the namespace ns1 is located beneath the current namespace.
..ns1:ns2:example
..:ns1:ns2:example
refers to the page “example” in the namespace ns2. The namespace ns2 is located beneath the namespace ns1; the namespace ns1 is located beside the current namespace (i.e. both ns1 and the current namespace are beneath the same parent namespace, wherever according to the root namespace this parent may be located itself).
.ns1:ns2:
.:ns1:ns2:
refers to the page “start” in the namespace ns2. The namespace ns2 is located beneath the namespace ns1; the namespace ns1 is located beneath the current namespace.

(The default page can be named something other than “start” by adjusting the startpage configuration setting.)

In order to avoid possible malfunctions, which may possibly arise from the hierarchy with multiple languages, we should always always specify the entire path, for example:

[[de:traffic:timetable|timetable]]

:!: Gotcha: The syntax for relative and absolute internal links is non-unique and complex relative to directory and filename conventions.

Paths are absolute if and only if they begin with “/”.

Links are absolute if and only if they have a “:” prefix or have no prefix but do have intermediate (or suffix) “:”

Links relative to the current namespace may also begin with either “.” or “.:” (“..” or “..:” for parent namespace).

Deleting namespaces

When all pages inside a namespace are removed (see delete a page) the namespace logically doesn’t exist anymore. DokuWiki usually deletes the now empty directory as well.

How to rename namespaces?

Manual way

In order to rename a namespace manually you will have to:

  • Rename the folders that represent the namespace in:
    • data/pages
    • data/media (if this exists)
  • Remove metadata for the namespace under data/meta
  • Remove attic data for the namespace under data/attic (or move that over as well, if you want to preserve old versions)

For example, on a Unix host, you could:

  • 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
  • move: mv /dokuwiki_base/data/attic/old_namespace /dokuwiki_base/data/attic/new_namespace
    or remove: rm -Rf /dokuwiki_base/data/attic/old_namespace

Note that the old_namespace and/or new_namespace words may need to be encoded if they are on a non-Latin character set (i.e. Greek, Russian, etc).

  • Correct (by editing them) all the links to the pages under the moved namespace (you can discover those before moving the namespace by reviewing each page's backlinks).
  • Browse each and every page under the new namespace. This will create the missing indexing information and metadata for the pages under the moved namespace.

However, you will still have lots of junk left around. For example in data/changes.log, various files under cache (including the .idx files etc). If possible you could just start from a blank state as follows (again under Unix) but be warned that this will mean losing all your historical information (i.e. recent changes):

  • 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
  • Browse each and every page of your Wiki.

DISCLAIMER: I understand this is convoluted (and maybe I missed/messed a couple of things you should also do). All in all this is a PITA. You may also use a couple of plugins that are available for (re)building the searchindex for the complete wiki, erasing entire cache and/or old wiki revisions thus avoiding having to do this manually.

Namespace Default Linking

It is possible to link to the default file of a namespace by ending the linkid with a colon: [[foo:bar:]]. Which page the link links to is dependent on the existence of certain named files. For [[foo:bar:]] the following pages are checked:

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

The pages are checked in that order and whatever page is found first will be linked to. Autoplural linking is not done for those links.

DokuWiki supports Interwiki links. These are quick links to other Wikis. For example: Wiki is a link to Wikipedia's page about Wikis. → Main article: Interwiki

This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.
More information
en/wiki/namespaces.txt · Last modified: 2018/09/23 15:45 by bahnfrank65