バージョン | 1.4.2 |
---|---|
投稿者 | reimy |
状態 | 完了 |
投稿日 | 2004-01-11 (SUN) 16:53:48 |
現在のincludeプラグインは
#include(./sample)
というように相対指定でページを指定できない。
このため、階層の深いページでインクルードする場合、
#include(&fpage;/sample)
と書かないといけない(&fpage;はページ保存時にカレントページ名に置き換わる)。
ページ移動やBracketNameで相対指定ができるのだから、includeプラグインでも相対指定ができるように。
試しに改造してみました。こんなのでいいでしょうか?
--- include.inc.php.oig 25 Nov 2003 01:38:42 -0000 +++ include.inc.php 11 Jan 2004 11:44:29 -0000 @@ -10,6 +10,26 @@ ページをインクルードする */ +function expand_relpath( $rpath) +{ + $path = explode('/', $rpath); + + for ( $i=0; $i<count($path); $i++ ) { + switch ( $path[$i]) { + case "..": + array_splice($path,$i-1,2); + $i-=2; + break; + case ".": + array_splice($path,$i,1); + $i--; + break; + } + } + + return implode('/', $path); +} + function plugin_include_convert() { global $script,$vars,$get,$post,$hr,$WikiName,$BracketName; @@ -25,6 +45,11 @@ list($page) = func_get_args(); $page = strip_bracket($page); + + if ( strstr($page, './')) { + $cwd = dirname($vars['page']); + $page = expand_relpath( $cwd ? $cwd."/".$page: $page); + } if (!is_page($page) or isset($include_list[$page])) {
make_link.php の get_fullnameを使うと良いのでは?
ああ、こんなものがあったんですね。私の「相対指定」の理解は間違っていたことも判明しました。一応、まとめて欲しいプラグイン/73にget_fullnameを使った版を書いておきます。
いただきましたm(__)m。相対指定可能のinclude.inc.phpをcvsに反映してほしいですね。