===== テンプレートファイル =====
次の二種類のテンプレートファイルが利用できます。
* ''_template.txt'':現在の名前空間で使用されます。
* ''%%__%%template.txt''(アンダースコアが二連続):通常の ''_template.txt'' ファイルと同様ですが、その名前空間以下のすべての名前空間でも使用されます (継承されます)。
テンプレートファイルを作成する方法の一例を以下に示します。
* Wiki 上で、雛形として使用したい内容を持つページを適切な名前空間に保存します。
* FTP もしくは WebDAV を利用して、そのページのファイルのコピーを同じフォルダ内に作成し、''_template.txt'' などにリネームします。
* Wiki 上で、最初に作成したページを削除します。((これらの変更は、あなたが名前空間に作成する新しいページにしか適用されません。))
===== 構文 =====
テンプレートファイルの内容は、単純に標準の [[ja:syntax|Wiki 記法]]で記述します。
==== 置換パターン ====
テンプレートを多少動的にするために、ファイルの中で以下に示すようないくつかの置換パターンを使用できます。
^ @ID@ | 完全なページ ID |
^ @NS@ | ページが所属する名前空間 |
^ @PAGE@ | ページ名 (ページ ID から名前空間を除き、アンダースコアをスペースに置換したもの) |
^ @!PAGE@ | @PAGE@ の最初の文字を大文字化したもの |
^ @!!PAGE@ | @PAGE@ に含まれるすべての単語の最初の文字を大文字化したもの |
^ @!PAGE!@ | @PAGE@ に含まれるすべての文字を大文字化したもの |
^ @FILE@ | ページ名 (ページ ID から名前空間を除くが、アンダースコアはそのままにしたもの) |
^ @!FILE@ | @FILE@ の最初の文字を大文字化したもの |
^ @!FILE!@ | @FILE@ に含まれるすべての文字を大文字化したもの |
^ @USER@ | ページを作成しようとしているユーザーのユーザー ID |
^ @NAME@ | ページを作成しようとしているユーザーの名前 |
^ @MAIL@ | ページを作成しようとしているユーザーのメールアドレス |
^ @DATE@ | 編集作業が開始された日付と時刻 |
さらに、ページの作成時刻を好きな形式で挿入するために、[[phpfn>strftime]] で利用可能なすべての置換文字列を使用することもできます。
テンプレートファイルの中で ''%'' という文字そのものを使用したい場合は、二連続で ''%%'' とする必要があります。
===== ウィキ経由でテンプレートを編集する =====
''_template.txt'' ファイルを DokuWiki 上から編集することはできません。
(DokuWiki のフォルダ内部のファイルを編集できる人物 (通常は FTP もしくは WebDAV を利用している管理者) だけがこのファイルを編集できます。)
しかし DokuWiki 上からの編集を実現する三種類の方法があります。
* 最も簡単な方法は[[ja:plugin:templatepagename|テンプレートページ名プラグイン]]を使用しています。デフォルトのテンプレート名 ''_template.txt'' を別の名前に変更できます。例:通常の編集可能な wiki ページとして許可されるテンプレート。
* シンボリックリンクとして設定することによる
==== シンボリックリンク経由で編集可能なテンプレート ====
この方法では、まず特別な名前空間にテンプレートを保存します。
そしてそのファイルへのシンボリックリンクを作成することにより、テンプレートが使用できるようになります。
シンボリックリンクを作成しないことにより、テンプレートを編集できないようにすることもできます。
- "templates" またはよく似た名前の名前空間を作成します。
- この名前空間の中に、編集可能にしたい[[#top|名前空間テンプレート]]用のページをそれぞれ作成します。
- 上の手順に従って ''_template.txt'' を設置しますが、これをテンプレート用の名前空間の中に作成したページへのハードリンク((ソフトリンクが機能しないようです。
以下の FollowSymLinks に関する注意を参照してください。))とします。これで Wiki のインターフェースから簡単に編集できるテンプレートの完成となります。
もう一つの方法は、フォルダ内にシンボリックリンクを作成することです。
そのためには、自分の名前空間内の ''のtemplate.txt''を作成する
それ自身の名前空間内の ''_template.txt'' へのシンボリックリンクである ''template.txt'' を作成します。
cd /var/www/html/dokuwiki/data/pages/namespace/something
ln -s _template.txt template.txt
これらのソフトリンクが機能するためには、Webサーバの設定でこのディレクトリに対して FollowSymLinks オプションを設定することが必要かもしれません。
===== プラグイン =====
追加のテンプレート機能はプラグインによって実装されています:
* [[ja:plugin:TemplatePagename|テンプレートページ名プラグイン]] 設定管理を使って ''_template'' and ''__template'' の名前を自分で決めた名前に変更できます。それぞれデフォルトとして ''c_template'' と ''i_template'' になっています。通常の wiki ページをテンプレートとすることで、wiki 画面を使って編集できるようになります。
* [[plugin:TemplateByName|templatebyname プラグイン]] 利用可能なテンプレートを拡張します:
* ''~yourpagename.txt'':現在の名前空間内の ''yourpagename'' という名前のページ用
* ''~yournamespace.txt'':''yournamespace'' という名前の名前空間内の全ページ用
* 深い名前空間の変種、いくつかの他のテンプレート。例:''start'' ページ用。\\ ファイルシステムを使ってのみ編集できます。
* [[plugin:NewPageTemplate|newpagetemplate プラグイン]] ウィキからのどの既存のページをテンプレートとして読み込むかを定義する URL パラメータを追加します。ACL が許可した全ページが利用可能です。
* [[plugin:Snippets|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);
--- //[[shtrom-doku@ssji.net|Olivier Mehani]] 2010/01/05 10:19//