差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

ja:namespaces [2016/05/16 23:46] (現在)
haikan 作成
ライン 1: ライン 1:
 +
 +====== 名前空間 ======
 +
 +名前空間はディレクトリやフォルダのようなもので、ページ名はファイルのようなものです。
 +
 +[[:​ja:​DokuWiki]] では、ページをカテゴリに分けるため、いわゆる "​名前空間"​ を使用します。名前空間の名前には、[[ja:​pagename|ページ名]]と同じ制約があります。
 +
 +デフォルト状態でインストールした DokuWiki には、//​wiki//​ と //​playground//​ という名前の名前空間が組み込まれています。
 +
 +===== 名前空間の作成 =====
 +
 +名前空間を特別に作成する必要はありません。単に、[[:​ja:​pagename|ページ名]]にコロンを付けてページを作成するだけです。最後のコロンの後ろのトークンがページ自身の名前になります。その前のトークンがすべて名前空間です。あなたのまだ存在しないページ名に使われている名前空間は、すべてDokuWikiによって自動的に作成されます。
 +
 +(DokuWikiでは、ページは、他のすべてのウィキと同じように作成されます。単に、まだ存在しないページへのリンクを作成し、そのリンクをたどり、「このページを作成」をクリックするだけです。) [[:​ja:​page#​ページの作成|ページの作成]].
 +
 +^例:^^
 +|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 は現在の名前空間の直下にあります。\\ \\ (デフォルトページは、[[ja:​config:​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''​ の語は、ラテン文字以外の文字(ギリシヤ語やロシア語)があればエンコードする必要がありうることに注意してください。
 +
 +  * //​移動した//​名前空間以下のページへのリンクを(編集により)修正する(このようなリンクは、名前空間の移動前に各ページの [[:​ja:​backlinks|バックリンク]] を見ることで発見できます)。
 +
 +  * 新しい名前空間以下のすべてのページをそれぞれ表示させる。これにより移動した名前空間以下にあるページのインデックス情報とメタデータが作成されます。
 +
 +しかし、まだ、たくさんのゴミがあちこちに残ります。例えば、 ''​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 (やっかいごと)です。ウィキを完全にするために検索インデックスを(再)構築し、キャッシュ全体やウィキの以前のリビジョンを消去するための[[:​ja:​plugins|プラグイン]]を使うことで、これらを手動でやるのを回避することもできます。
 +
 +==== プラグインによる方法 ====
 +
 +各ページを旧名前空間から新名前空間へ移動させるのに、サードパーティー製の [[plugin:​PageMove]] プラグインを用いることができます。これがあなたの目的にかなうかどうかは、ドキュメントを調べてください。
 +
 +===== 名前空間のデフォルトリンク =====
 +
 +リンクIDの末尾をコロンにすることで、名前空間のデフォルトファイルにリンクすることが可能です:​ %%[[foo:​bar:​]]%%。このリンクのリンク先ページは、特定の名前のファイルが存在するかどうかに依存します。%%[[foo:​bar:​]]%% については、次のページがチェックされます:​
 +
 +<​code>​
 +foo:​bar:​$conf['​start'​]
 +foo:bar:bar
 +foo:bar
 +</​code>​
 +
 +ページのチェックはこの順序で行われ、最初に見つかったページにリンクされます。このリンクには、自動複数形リンクは行われません。
 +
 +:!: **この機能は 2006-09-28 RC1 バージョン以降でのみ有効です。**