*テンプレート内に置換文字設定 -ページ: BugTrack -投稿者: [[aru]] -優先順位: 低 -状態: 提案 -カテゴリー: 本体新機能 -投稿日: 2003-04-15 (火) 14:34:46 -バージョン: **メッセージ テンプレート内に置換文字(例えば$$)を設定しておくと~ その文字にページ名を置換してくれる機能がほしい~ 例えば~ >ページ名がほげほげでテンプレートを使用して作成する場合 -テンプレート #lookup(Yahoo,検索,$$) [[Yahoo:$$]] http://aaa.bbb.com/ccc/$$ ↓ -新ページ、ほげほげ #lookup(Yahoo,検索,ほげほげ) [[Yahoo:ほげほげ]] http://aaa.bbb.com/ccc/ほげほげ とか色々と展開が出来ると思うのですが、どうですか? ---- -うん、これテンプレートだけじゃなく普通のページにも対応できるとおもしろいかも -- &new{2003-04-17 (木) 13:56:03}; -私はlookupプラグインで第3引数に$thispageを指定すると、現在表示中のページが出るように改造して満足していたのですが、テンプレートで置換するアプローチの方が広がりがあって面白いですね。 -- [[にぶんのに]] &new{2003-04-17 (木) 23:50:10}; -ソース書き換え型のユーザー定義で何とかならないかな? -- [[reimy]] &new{2003-04-18 (金) 00:33:38}; ~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;' => $page, ); ~これで &page; と記述すると、書き込み時にそのページ名に置換される。[[れいみぃ・ヘルプ:http://reimy.com/?%E3%83%98%E3%83%AB%E3%83%97#page]] -うちでテストしてみたところ、すんなりうまくいきました。以下の手順で行なえばOKです。-- [[reimy]] &new{2003-04-18 (金) 04:02:15}; ++上記のpukiwiki.ini.phpでの定義を行なう前にテンプレートを作成する。その中でページ名に置換したい部分に &page; を記述しておく。 ++テンプレートをすべて保存した後、pukiwiki.ini.phpに '&page;' => $page. を記述する。 --テンプレート作成前にpukiwiki.ini.phpで定義してしまうと、テンプレートの&page;までが置換されてしまうので、順番を間違えないように。 -- [[reimy]] &new{2003-04-18 (金) 04:03:27}; -[[pukiwiki:質問箱]]にあった[[編集:./]]で現在のページを編集できないという問題も、[[編集:&page;]]とすることで編集可能。-- [[reimy]] &new{2003-04-18 (金) 15:23:44}; -これって結果オーライ的な感じだな。$pageってグローバルな変数じゃないようなので、こういう使い方するのはかなりお行儀悪い使い方かも。あとは[[ぱんだ]]さんに任せよう(^^;; -- [[reimy]] &new{2003-04-18 (金) 15:49:21}; -pukiwiki.ini.phpに '&page;' => $pageを書いてしまった後でテンプレートを作ることができないのは痛いですね。 -- [[ぱんだ]] &new{2003-04-21 (月) 18:33:10}; -テンプレート展開時に置換するユーザ定義ルールを別に作って、pukiwiki.ini.phpで自由に設定できるようにする、というのは。 -- [[ぱんだ]] &new{2003-04-21 (月) 18:34:45};~ こんな感じ(テストしていません。) pukiwiki.ini.php +///////////////////////////////////////////////// +// ユーザ定義ルール(テンプレート展開時に置換する) +$template_rules = array( + '$$' => $post['page']; // 駄目 ? :-) +); edit.inc.php if (array_key_exists('template_page',$post) and is_page($post['template_page'])) { $post['msg'] = join('',get_source($post['template_page'])); + $post['msg'] = make_template_rules($post['msg']); } html.php +// ユーザ定義ルール(テンプレート展開時に置換する) +function make_template_rules($str) +{ + global $template_rules; + + foreach($template_rules as $rule => $replace) + { + $rule = preg_quote($rule,'/'); + $str = preg_replace("/$rule/",$replace,$str); + } + return $str; +} -エラーになったので下記のように変更 -- [[reimy]] pukiwiki.ini.php +///////////////////////////////////////////////// +// ユーザ定義ルール(テンプレート展開時に置換する) +$template_rules = array( + '$$' => $post['page'], +); -しかし、変換してくれませんでした。 -- [[reimy]] &new{2003-04-21 (月) 20:18:28}; #comment