名前空間
名前空間はディレクトリやフォルダのようなもので、ページ名はファイルのようなものです。
DokuWiki では、ページをカテゴリに分けるため、いわゆる “名前空間” を使用します。名前空間の名前には、ページ名と同じ制約があります。
デフォルト状態でインストールした DokuWiki には、wiki と playground という名前の名前空間が組み込まれています。
名前空間の作成
名前空間を特別に作成する必要はありません。単に、ページ名にコロンを付けてページを作成するだけです。最後のコロンの後ろのトークンがページ自身の名前になります。その前のトークンがすべて名前空間です。あなたのまだ存在しないページ名に使われている名前空間は、すべてDokuWikiによって自動的に作成されます。
(DokuWikiでは、ページは、他のすべてのウィキと同じように作成されます。単に、まだ存在しないページへのリンクを作成し、そのリンクをたどり、「このページを作成」をクリックするだけです。) ページの作成.
例: | |
---|---|
example .example .:example | 現在の名前空間にある “example” ページを参照します。 |
:example | ルートの名前空間にある “example” ページを参照します。 |
..example ..:example .:..:example | 親の名前空間にある “example” ページを参照します。 |
wiki:example | 名前空間 “wiki” にある “example” ページを参照します。名前空間 “wiki” は、ルートの名前空間直下にあります。 |
ns1:ns2:example :ns1:ns2:example | 名前空間 ns2 にある “example” ページを参照します。名前空間 ns2 は、名前空間 ns1 の直下にあり、名前空間 ns1 は、ルートの名前空間直下にあります。 |
.ns1:ns2:example .:ns1:ns2:example | 名前空間 ns2 にある “example” ページを参照します。名前空間 ns2 は、名前空間 ns1 の直下にあり、名前空間 ns1 は、現在の名前空間の直下にあります。 |
..ns1:ns2:example ..:ns1:ns2:example | 名前空間 ns2 にある “example” ページを参照します。名前空間 ns2 は、名前空間 ns1 の直下にあり、名前空間 ns1 は、現在の名前空間の隣にあります(つまり、ns1 と現在の名前空間はどちらも同じ親名前空間の直下にあります)。 |
.ns1:ns2: | 名前空間 ns2 にある “start” ページを参照します。名前空間 ns2 は、名前空間 ns1 の直下にあり、名前空間 ns1 は現在の名前空間の直下にあります。 (デフォルトページは、startpage 構成設定を調整することで “start” 以外の名前をつけることができます。) |
落とし穴: 相対リンクおよび絶対内部リンク用の構文は、ディレクトリやファイル名の規約と比較して全く一意ではなく、とても複雑です。ファイルパスであれば “/” で始まる場合に限り絶対パスとなりますが、DokuWiki のリンクは “:” で始まる場合に限らず、“:” では始まらないものの途中に “:” を含むもの、そして “:” で終わるものも絶対リンクとなってしまいます。相対リンクについても同様で、現在の名前空間は “.” または “.:” で始めることができてしまいます (親の名前空間については “..” または “..:”)。
名前空間の削除
名前空間内のすべてのページが削除されたとき、名前空間は論理的に存在しなくなります。DokuWikiは通常、もやは空となったディレクトリも削除します。
名前空間のリネームの仕方
手動による方法
手動で名前空間をリネームするには、次の作業をする必要があります:
- 以下の場所にある名前空間を表すフォルダをリネームする:
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
の語は、ラテン文字以外の文字(ギリシヤ語やロシア語)があればエンコードする必要がありうることに注意してください。
- 移動した名前空間以下のページへのリンクを(編集により)修正する(このようなリンクは、名前空間の移動前に各ページの バックリンク を見ることで発見できます)。
- 新しい名前空間以下のすべてのページをそれぞれ表示させる。これにより移動した名前空間以下にあるページのインデックス情報とメタデータが作成されます。
しかし、まだ、たくさんのゴミがあちこちに残ります。例えば、 data/changes.log
や、キャシュ内の各種の(.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
- あなたのウィキのすべてのページをそれぞれ表示させる。
おことわり : これが非常に複雑であること(そしてもれがあるかもしれないこと)は理解しています。これらは全部が全部 PITA (やっかいごと)です。ウィキを完全にするために検索インデックスを(再)構築し、キャッシュ全体やウィキの以前のリビジョンを消去するためのプラグインを使うことで、これらを手動でやるのを回避することもできます。
プラグインによる方法
各ページを旧名前空間から新名前空間へ移動させるのに、サードパーティー製の PageMove プラグインを用いることができます。これがあなたの目的にかなうかどうかは、ドキュメントを調べてください。
名前空間のデフォルトリンク
リンクIDの末尾をコロンにすることで、名前空間のデフォルトファイルにリンクすることが可能です: [[foo:bar:]]。このリンクのリンク先ページは、特定の名前のファイルが存在するかどうかに依存します。[[foo:bar:]] については、次のページがチェックされます:
foo:bar:$conf['start'] foo:bar:bar foo:bar
ページのチェックはこの順序で行われ、最初に見つかったページにリンクされます。このリンクには、自動複数形リンクは行われません。
この機能は 2006-09-28 RC1 バージョン以降でのみ有効です。