*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!) |