- 追加された行はこの色です。
- 削除された行はこの色です。
*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!)