PukiWikiのテンプレート機能

PukiWikiのテンプレート機能には何種類かある。

Templateプラグイン

pukiwiki:PukiWiki/1.4/マニュアル/テンプレート」で説明されているが、何がなんだかという方へ(私)。

Templateプラグインによるテンプレート機能は、指定したページの一部を選択して、新しいページを作るというもの。(具体例は下にあり。)

?plugin=template&refer=テンプレートとする(URLエンコードされた)ページ名

というコマンドを実行する。「URLエンコードされた」というのがミソ。だから、「自由区」というページをテンプレートとする場合は、

?plugin=template&refer=%BC%AB%CD%B3%B6%E8

とする。

このようなコマンドを実行するリンクを実際に作成すると、次のようになる。

テンプレートの呼び出し

オートテンプレート機能

これも「pukiwiki:PukiWiki/1.4/マニュアル/テンプレート」に説明があるが、私にはあまりに分かり辛い。

デフォルトで、pukiwiki.ini.phpは

$auto_template_func = 1;

となっており、オートテンプレート機能が有効である。さらに、

auto_template_rules = array(
 '((.+)\/([^\/]+))' => '\2/template'
;

となっている。これが何を意味しているかというと、新規に作成するページ名が正規表現のパターン「((.+)\/([^\/]+))」にマッチし、さらに「\2/template」に相当するページがあれば、そのページをテンプレートとするという意味だ。「\2」は2番目の括弧、つまり、ページ名の「/」までの文字列を意味する。

具体的な例をあげよう。まずテンプレートとなるページを作成する。ページ名は、「○○○/template」のように、末尾を「/template」とする。

このテンプレートを使う場合は、ページ名を「○○○/(ページ名)」とする。これでテンプレート「○○○/template」が使われる。

このようなテンプレートでは、$1、$2、$3などの文字列を記事内に記述しておくと、それが先の正規表現パターンで括弧に一致した文字列に置換される。具体的には、上記の例のように、「○○○/(ページ名)」というページを作ると、「○○○/template」ページ内の「$1」が「○○○/(ページ名)」に、「$2」が「○○○」に、「$3」が「(ページ名)」に置換される。

オートテンプレート機能ですべてのページにテンプレートを使う

$auto_template_rulesを例えば次のように変更する。

$auto_template_rules = array(
 '((.+)\/([^\/]+))' => '\2/template',
 '(()(.+))'         => 'template'
);

これで一番目の定義にマッチしないページでは、「template」というページがテンプレートとなる。

より高度なテンプレート機能

PukiWikiのテンプレート機能では、テンプレートの編集が、そのテンプレートを使ったページに反映されない。ということで、テンプレートを変更するとそのテンプレートを使ったページに反映されるプラグインを作ってみた。それが、「PukiWiki/自作プラグイン/mtemplate.inc.php」である。


ページ情報
[ トップ ]   [ 編集 | 凍結 | 差分 | バックアップ | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]