PukiWiki-1.4用ドキュメント素案
PukiWiki には、編集画面で「雛型とするページ」を選択して取り込む機能があります。この機能は大変便利なものですが、表示可能な全てのページがプルダウンボックスに表示されるため、ページ数が多くなると 編集開始までに時間がかかるようになってしまいます。そこで、この機能を無効にすることができます。
default.ini.php
///////////////////////////////////////////////// // 雛形とするページの読み込みを表示させる $load_template_func = 1;
PukiWiki には、新規ページを作成する際に自動 Template機能があります。 新規ページを作る際に自動的にtemplateというページを呼び出してから編集画面になります。
デフォルトの設定は以下のようになっています。
pukiwiki.ini.php
///////////////////////////////////////////////// // ページ名に従って自動で、雛形とするページの読み込み $auto_template_func = 1; $auto_template_rules = array( '((.+)\/([^\/]+))' => '\2/template' );
$auto_template_rules = array( '((.+)\/([^\/]+))' => '\2/template', // (1) '((test)\/([^\/]+))' => 'template', // (2) testの下位階層ページだけ別ルールで上書き '(()(.+))' => 'template' // (3) );
(1) : $1=hoge/fuga $2=hoge $3=fuga template=[[hoge/template]] (2) : $1=test/fuga $2=test $3=fuga template=[[template]] (3) : $1=fuga $2='' $3=fuga template=[[template]]
PukiWiki-1.4標準搭載のプラグインを使用すると既存のページをテンプレートとしてページを新規作成することができます。
コマンドですので以下のようにして使うと2つウィンドーが出てきます。
?plugin=template&refer=テンプレートとする(URLエンコードされた)ページ名
上のウィンドーでは、テンプレートとして使用する領域の開始行を選択し、下のウィンドーでは、最終行を選択します。そして、作りたいページの名前(デフォルトでは、テンプレートとするページの一つ下の階層の複製というページ名が入っています)を入力して&button{作成};を押せばページが作られます。
自動雛型機能(Auto Template)がONの時。($auto_template_rules=1の時)
ユーザ定義ルールによる置き換えの他に、テンプレート内に記述しておくとページ名を取得して置き換えることが可能です。
ほげ/ふがの作成時にほげ/templateを読み込む場合 $1→ほげ/ふが , $2→ほげ $3→ふが の 文字列置換が行われます。
以下のユーザ定義ルールは、ページを編集終了時に置き換えられますので、テンプレート内に記述しても、保存される時には置き換えられてしまいます。
pukiwiki.ini.php
///////////////////////////////////////////////// // ユーザ定義ルール // // 正規表現で記述してください。?(){}-*./+\$^|など // は \? のようにクォートしてください。 // 前後に必ず / を含めてください。行頭指定は ^ を頭に。 // 行末指定は $ を後ろに。 // ///////////////////////////////////////////////// // ユーザ定義ルール(直接ソースを置換) $str_rules = array( 'now\?' => format_date(UTIME), 'date\?' => get_date($date_format), 'time\?' => get_date($time_format), // '&now;' => format_date(UTIME), // '&date;' => get_date($date_format), // '&time;' => get_date($time_format), );
上のコメントを外したり、以下の設定をしておくと便利かも。
'&page;' => substr($page,strrpos('/'.$page,'/')), '&fpage;' => $page,
階層化されたページ「hogehoge/hoge」で&page;は「hoge」を、&fpage;は「hogehoge/hoge」に置換します。
テンプレートページに書いておいてうまく置換するアイデアがpukiwiki:質問箱/181に出ています。
ユーザー定義ルールは上から順番に適用され、再帰的には適用されませんので、例えば、 'now\?' => format_date(UTIME), 'date\?' => get_date($date_format), 'time\?' => get_date($time_format), '\x5cquestion' => '?', のようにユーザー定義ルール (pukiwiki.ini.php) に書いておき、 now\question として「ページの更新」をすると、 now? に書き換わります。但し、再度このページを編集すると、現在日時に書き換わってしまいます。