かずLibrary

相対パスを得るスクリプト

以前のかずLibraryは、メニューを常に表示しておきたいという理由からフレームを使用していました。しかし、フレームを使用しているとサーチエンジンの登録に対して不利なので、どうにかフレームを使用せずにメニューを常に表示できないかと考え、このスクリプトを作りました。

大した物ではありませんが、ネットで探しても見つからなかったのでここに公開します。PHPが使えてフレームをやめたいと思っている方は、使ってみてください。

とりあえず、PHPを使えばメニューを書いたファイルをincludeすればメニューが表示されるのはわかったのですが、ひとつのメニューを異なるディレクトリから呼び出してしまうと、リンクを相対パスで書いている場合におかしくなってしまいます。

それならhttp://〜の絶対パスで書けばいいと思うかもしれませんが、そうしてしまうと新しいページを追加するときなど、ローカル環境で表示等を確認したいときに不便です。

ルートにmenu.phpを置いている場合、ルートから呼んだときは「./」となっていてほしく、サブディレクトリから呼んだ場合「../../」だったり「../../../../../」に自動的になってほしいと思うと思います。この相対パス指定を自動的に計算して出力します。

使い方は、ソースを使いたいファイルに貼り付けて呼び出せばOKです。ひとつだけ設定をしなくてはならないのですが、「$adjust = 1;」の部分の数値を、ドメイン名とルートとしたいファイルの間にいくつディレクトリ名が入っているかを指定します。

例えば、http://〜.com/~xxx/index.php(index.phpからmenu.phpをincludeしている場合)をルートとしたい場合、ドメイン名とindex.phpの間に「~xxx」が入っているので1を指定します。http://〜.com/index.phpから呼び出す場合は0となります。 一度設定すれば、上記以外のファイルからmenu.phpをincludeしても変更は必要ありません。

PHPは5.0.5と4.4.0で動作を確認してあります。4.4.0で動かす方は、設定ファイルの「cgi.fix_pathinfo」を有効にし、値に1を設定してください。

ダウンロード


Copyright (C) 2005 かず
かずLibrary