テンプレートファイル
次の二種類のテンプレートファイルが利用できます。
_template.txt
:現在の名前空間で使用されます。__template.txt
(アンダースコアが二連続):通常の_template.txt
ファイルと同様ですが、その名前空間以下のすべての名前空間でも使用されます (継承されます)。
テンプレートファイルを作成する方法の一例を以下に示します。
- Wiki 上で、雛形として使用したい内容を持つページを適切な名前空間に保存します。
- FTP もしくは WebDAV を利用して、そのページのファイルのコピーを同じフォルダ内に作成し、
_template.txt
などにリネームします。 - Wiki 上で、最初に作成したページを削除します。1)
構文
テンプレートファイルの内容は、単純に標準の Wiki 記法で記述します。
置換パターン
テンプレートを多少動的にするために、ファイルの中で以下に示すようないくつかの置換パターンを使用できます。
@ID@ | 完全なページ ID |
---|---|
@NS@ | ページが所属する名前空間 |
@PAGE@ | ページ名 (ページ ID から名前空間を除き、アンダースコアをスペースに置換したもの) |
@!PAGE@ | @PAGE@ の最初の文字を大文字化したもの |
@!!PAGE@ | @PAGE@ に含まれるすべての単語の最初の文字を大文字化したもの |
@!PAGE!@ | @PAGE@ に含まれるすべての文字を大文字化したもの |
@FILE@ | ページ名 (ページ ID から名前空間を除くが、アンダースコアはそのままにしたもの) |
@!FILE@ | @FILE@ の最初の文字を大文字化したもの |
@!FILE!@ | @FILE@ に含まれるすべての文字を大文字化したもの |
@USER@ | ページを作成しようとしているユーザーのユーザー ID |
@NAME@ | ページを作成しようとしているユーザーの名前 |
@MAIL@ | ページを作成しようとしているユーザーのメールアドレス |
@DATE@ | 編集作業が開始された日付と時刻 |
さらに、ページの作成時刻を好きな形式で挿入するために、strftime で利用可能なすべての置換文字列を使用することもできます。
テンプレートファイルの中で %
という文字そのものを使用したい場合は、二連続で %%
とする必要があります。
ウィキ経由でテンプレートを編集する
_template.txt
ファイルを DokuWiki 上から編集することはできません。
(DokuWiki のフォルダ内部のファイルを編集できる人物 (通常は FTP もしくは WebDAV を利用している管理者) だけがこのファイルを編集できます。)
しかし DokuWiki 上からの編集を実現する三種類の方法があります。
- 最も簡単な方法はテンプレートページ名プラグインを使用しています。デフォルトのテンプレート名
_template.txt
を別の名前に変更できます。例:通常の編集可能な wiki ページとして許可されるテンプレート。 - シンボリックリンクとして設定することによる
シンボリックリンク経由で編集可能なテンプレート
この方法では、まず特別な名前空間にテンプレートを保存します。 そしてそのファイルへのシンボリックリンクを作成することにより、テンプレートが使用できるようになります。 シンボリックリンクを作成しないことにより、テンプレートを編集できないようにすることもできます。
- “templates” またはよく似た名前の名前空間を作成します。
- この名前空間の中に、編集可能にしたい名前空間テンプレート用のページをそれぞれ作成します。
- 上の手順に従って
_template.txt
を設置しますが、これをテンプレート用の名前空間の中に作成したページへのハードリンク2)とします。これで Wiki のインターフェースから簡単に編集できるテンプレートの完成となります。
もう一つの方法は、フォルダ内にシンボリックリンクを作成することです。
そのためには、自分の名前空間内の のtemplate.txt
を作成する
それ自身の名前空間内の _template.txt
へのシンボリックリンクである template.txt
を作成します。
cd /var/www/html/dokuwiki/data/pages/namespace/something ln -s _template.txt template.txt
これらのソフトリンクが機能するためには、Webサーバの設定でこのディレクトリに対して FollowSymLinks オプションを設定することが必要かもしれません。
プラグイン
追加のテンプレート機能はプラグインによって実装されています:
- テンプレートページ名プラグイン 設定管理を使って
_template
and__template
の名前を自分で決めた名前に変更できます。それぞれデフォルトとしてc_template
とi_template
になっています。通常の wiki ページをテンプレートとすることで、wiki 画面を使って編集できるようになります。
- templatebyname プラグイン 利用可能なテンプレートを拡張します:
~yourpagename.txt
:現在の名前空間内のyourpagename
という名前のページ用~yournamespace.txt
:yournamespace
という名前の名前空間内の全ページ用- 深い名前空間の変種、いくつかの他のテンプレート。例:
start
ページ用。
ファイルシステムを使ってのみ編集できます。
- newpagetemplate プラグイン ウィキからのどの既存のページをテンプレートとして読み込むかを定義する URL パラメータを追加します。ACL が許可した全ページが利用可能です。
- snippets プラグイン エディターのツールバーにページ編集中に簡単にテンプレートを挿入することができるボタンを追加します。テンプレートは、
snippets
というデフォルト名の一ページの一覧です。
@GROUPS@ 対応
ページを作成するユーザーのグループ一覧を拡張した、@GROUPS@
キーワード対応は面白いかもしれない。
(例:ユーザのホームページ上のタグの設定を指定)
以下のパッチが、それを実装します。
Index: dokuwiki-2009-02-14/inc/common.php =================================================================== --- dokuwiki-2009-02-14.orig/inc/common.php 2009-11-19 11:58:41.000000000 +0100 +++ dokuwiki-2009-02-14/inc/common.php 2010-01-05 10:17:35.000000000 +0100 @@ -840,6 +840,7 @@ '@USER@', '@NAME@', '@MAIL@', + '@GROUPS@', '@DATE@', ), array( @@ -855,6 +856,7 @@ $_SERVER['REMOTE_USER'], $INFO['userinfo']['name'], $INFO['userinfo']['mail'], + implode(" ", $INFO['userinfo']['grps']), $conf['dformat'], ), $tpl);
— Olivier Mehani 2010/01/05 10:19