時には、ある名前空間内のすべてのページを、共通の雛形をベースにして書きたい場合があるかもしれません。例えば、「住所」という名前空間の中ではあらかじめ表を用意しておいて、あとはデータを入力するだけでいいようにしておくなどです。これは「名前空間テンプレート」と呼ばれる機能で簡単に実現できます。
ページが新規作成される際、DokuWiki は名前空間テンプレートファイルが存在するかどうかを調査し、ある場合はその内容を編集画面の中に表示します。このため、名前空間テンプレートファイルは Wiki 記法のテキストを含む .txt ファイルとなります。
以下の 2 種類のテンプレートファイルが利用可能です。
_template.txt – 現在の名前空間で使用されます。__template.txt – (アンダースコアが 2 個) 通常の _template.txt ファイルと同様ですが、その名前空間以下のすべての名前空間でも使用されます (継承されます)。テンプレートファイルを作成する方法の一例を以下に示します。
_template.txt などにリネームします。テンプレートファイルの内容は、単純に標準の Wiki 記法で記述します。
ファイルの中では、テンプレートをほんの少し動的にするために、以下に示すようないくつかの置換パターンを使用することができます。
| @ID@ | 完全なページ ID |
|---|---|
| @NS@ | ページが所属する名前空間 |
| @PAGE@ | ページ名 (ページ ID から名前空間を除き、アンダースコアをスペースに置換したもの) |
| @!PAGE@ | @PAGE@ の最初の文字を大文字化したもの |
| @!!PAGE@ | @PAGE@ に含まれるすべての単語の最初の文字を大文字化したもの |
| @!PAGE!@ | @PAGE@ に含まれるすべての文字を大文字化したもの |
| @FILE@ | ページ名 (ページ ID から名前空間を除くが、アンダースコアはそのままにしたもの) |
| @!FILE@ | @FILE@ の最初の文字を大文字化したもの |
| @!FILE!@ | @FILE@ に含まれるすべての文字を大文字化したもの |
| @USER@ | ページを作成しようとしているユーザーのユーザー ID |
| @NAME@ | ページを作成しようとしているユーザーの名前 |
| @MAIL@ | ページを作成しようとしているユーザーのメールアドレス |
| @DATE@ | 編集作業が開始された日付と時刻 |
さらに、ページの作成時刻をお好みの形式で挿入するために、strftime で利用可能なすべての置換文字列を使用することもできます。テンプレートファイルの中で % という文字そのものを使用したい場合は、2 つ並べて %% とする必要があります。
_template.txt ファイルを DokuWiki 上から編集することはできません。DokuWiki のフォルダ内部のファイルを編集できる人物 (通常は FTP もしくは WebDAV を利用している管理者) だけがこのファイルを編集できます。実は DokuWiki 上からの編集を実現する 2 つの特殊な方法があります。しかしながら、1 つは一度シンボリックリンクを設定する必要があり、もう 1 つは DokuWiki のソースコードを変更する必要があります。
この方法では、まず特別な名前空間にテンプレートを保存します。そしてそのファイルへのシンボリックリンクを作成することにより、テンプレートが使用できるようになります。シンボリックリンクを作成しないことにより、テンプレートを編集できないようにすることもできます。
_template.txt を設置しますが、これをテンプレート用の名前空間の中に作成したページへのハードリンク1)とします。これで Wiki のインターフェースから簡単に編集できるテンプレートの完成となります。私はこれとはまた異なる方法を利用しています。template.txtを同じ名前空間内の_template.txtファイルへのシンボリックリンクとして作成します。
(cd /var/www/html/dokuwiki/data/pages/namespace/something; ln -s _template.txt template.txt)
この方法では、名前空間内の他のページにアクセスして、URL 内のページ名をtemplateという名前に書き換えればテンプレートを編集することができます。
(すなわちhttp://example.com/dokuwiki/doku.php?id=namespace:something:template)
この方法ではシンボリックリンクを使用できます。若干異なりますが。シンボリックリンクを使用するには、恐らく Web サーバで FollowSymLinks オプションをそのディレクトリ (ツリー) に対して設定する必要があると思いますよ。
この方法では、編集権限を持つユーザーであれば誰からでもテンプレートファイルを編集できるようになります。