*PukiWikiのテンプレート機能 [#y8740ece]

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

**Templateプラグイン [#h7d7f7dc]

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

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

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

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

 ?plugin=template&refer=%A5%C6%A5%B9%A5%C8_%A5%C6%A5%F3%A5%D7%A5%EC%A1%BC%A5%C8%B8%B5
 ?plugin=template&refer=%BC%AB%CD%B3%B6%E8

となる。
とする。

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

[[テンプレートを呼び出す:http://dobon.qp.land.to/wiki/index.php?plugin=template&refer=%A5%C6%A5%B9%A5%C8_%A5%C6%A5%F3%A5%D7%A5%EC%A1%BC%A5%C8%B8%B5]]
[./?plugin=template&refer=%BC%AB%CD%B3%B6%E8 テンプレートの呼び出し]

**オートテンプレート機能 [#d13f5ee4]

これも「[[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」が「(ページ名)」に置換される。

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

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

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

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

**より高度なテンプレート機能 [#af8aff2e]

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

//これより下は編集しないでください
#pageinfo([[:Category/PukiWiki]],2006-07-21 (金) 02:41:25,DOBON!,2006-07-21 (金) 02:41:25,DOBON!)
#pageinfo([[:Category/PukiWiki]],2006-07-21 (金) 02:41:25,DOBON!,2006-07-21 (金) 02:55:14,DOBON!)
[ トップ ]   [ 編集 | 差分 | バックアップ | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]