====== 名前空間テンプレート ====== 時には、ある名前空間内のすべてのページを、共通の雛形をベースにして書きたい場合があるかもしれません。例えば、「住所」という名前空間の中ではあらかじめ表を用意しておいて、あとはデータを入力するだけでいいようにしておくなどです。これは「名前空間テンプレート」と呼ばれる機能で簡単に実現できます。 ページが新規作成される際、[[:ja:dokuwiki|DokuWiki]] は名前空間テンプレートファイルが存在するかどうかを調査し、ある場合はその内容を編集画面の中に表示します。このため、名前空間テンプレートファイルは Wiki 記法のテキストを含む .txt ファイルとなります。 ===== テンプレートファイル ===== 以下の 2 種類のテンプレートファイルが利用可能です。 * ''_template.txt'' -- 現在の名前空間で使用されます。 * ''%%__%%template.txt'' -- (アンダースコアが 2 個) 通常の ''_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]] で利用可能なすべての置換文字列を使用することもできます。テンプレートファイルの中で ''%'' という文字そのものを使用したい場合は、2 つ並べて ''%%'' とする必要があります。 ===== テンプレートの編集 ===== ''_template.txt'' ファイルを DokuWiki 上から編集することはできません。DokuWiki のフォルダ内部のファイルを編集できる人物 (通常は FTP もしくは WebDAV を利用している管理者) だけがこのファイルを編集できます。実は DokuWiki 上からの編集を実現する 2 つの特殊な方法があります。しかしながら、1 つは一度シンボリックリンクを設定する必要があり、もう 1 つは DokuWiki のソースコードを変更する必要があります。 ==== シンボリックリンク経由で編集可能なテンプレート ==== この方法では、まず特別な名前空間にテンプレートを保存します。そしてそのファイルへのシンボリックリンクを作成することにより、テンプレートが使用できるようになります。シンボリックリンクを作成しないことにより、テンプレートを編集できないようにすることもできます。 - "templates" もしくは同じような名前の名前空間を作成します。 - この名前空間の中に、利用できるようにしたい名前空間テンプレート用のページをそれぞれ作成します。 - 上述の手順に従って ''_template.txt'' を設置しますが、これをテンプレート用の名前空間の中に作成したページへのハードリンク((シンボリックリンクでは動作しないようです。))とします。これで 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 オプションをそのディレクトリ (ツリー) に対して設定する必要があると思いますよ。 ==== すべてのユーザーが編集可能なテンプレート ==== この方法では、編集権限を持つユーザーであれば誰からでもテンプレートファイルを編集できるようになります。 - ''inc/common.php'' ファイルの 718 行目付近((DokuWiki 2008-05-05 の場合。DokuWiki 2009-02-14 では 811-812 行目となります。))で、デフォルトのテンプレート名を "''template.txt''" (もしくは ''aaa_template.txt'' など) に変更します。 - これで、その名前空間で編集権限を持つユーザーであれば誰でも、テンプレートとしての役割を持つ "template" というページをその名前空間の中に作成することができます。 * メモ: この方法には、新規のテンプレートが即座に認識されるという利点があります。これは他の方法 (ファイルの追加や DokuWiki フォルダへの手作業によるシンボリックリンク作成) では実現できません。