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」である。
|