top

MTInclude内のファイルパス

<$MTInclude$>はアトリビュートfile="file_name"を使って外部ファイルを読み込むことができます。外部ファイルのパスにはhttp://~で始まるURLを指定することは出来ませんので、相対パス・絶対パスでファイルのアドレスを指定することになります。

ところで、この「相対パス・絶対パス」ってどのファイルから見た位置で書けばいいのでしょう?

実は今までちょっと勘違いしていたところもあったので、その辺を少しまとめてみたいと思います。

■インデックス・テンプレートでindex.htmlと同階層に作成したファイルの場合
ファイル名が include.html なら、以下の記述だけでOKです。

<$MTInclude file="include.html"$>

これはどんなに深い階層のファイルから読み込む場合でも無関係にこの書き方でかまいません。
というのも、<$MTInclude$>で指定されるファイルは「ブログのインデックスファイルの位置」から見た相対パスで読み込まれるからです。読み込む側のファイルの位置がindex.htmlと同階層であろうが、2007/02/09/であろうが、cat1/であろうが変わりません。

■index.htmlの一つ下の階層に作ったファイル
ディレクトリ名がhogeならば、以下のようになります。

<$MTInclude file="hoge/include.html"$>

どの階層からでも読み込まれるファイルは一律「インデックスファイルから見た位置」です。

■index.htmlの一つ上の階層にあるファイル

<$MTInclude file="../include.html"$>

■同じサーバー内にある他のドメインのファイル
同じサーバー内であれば絶対パスでファイルの位置を指定することで、読み込むことが出来ます。

<$MTInclude file="/サイトの絶対パス/include.html"$>

ということで、<$MTInclude$>が読み込むファイルは、読み込む側の各ファイルの位置からではなく、「ブログのindexファイルが置かれているところ」が起点になります。意外にシンプルな仕様になっていたんですね。

<注:MT4.38以上をお使いの方へ>
MT5.13、5.07、および4.38以降のバージョンではfileモディファイアが標準で無効化されています。fileモディファイアを使うにはmt-config.cgiに以下を追記します。

AllowFileInclude 1

参考:テンプレートタグ<$MTInclude$>の頁

 

トラックバックの一覧

トラックバック [MovableType]管理画面での「MTInclude」のファイルパスの基準点について  »» 2009年1月10日 13:27
インデックステンプレートでを使うと、指定されたファイルは「ブログのin...

コメント

お世話になります。
「MTIncludeの起点はブログのindexが置かれているディレクトリ」との解説ですが、以下のような場合ではどういったパスになりますか?
■ディレクトリ構造
-mt
-category-temp-head.html(テンプレートモジュール)
        -event-index.html(インデックステンプレート)
        -index.html(起点)
上記の場合、インデックステンプレートで作成した「event/index.html」から「temp/head.html」をMTIncludeで読み込むときのパスはどうなりますか?
「file="templ/head.html"」や「file="../templ/head.html"」など試してみましたがうまくいきません。ご教授ください!

こんにちは。
ええと、まずディレクトリ構造図で使われている「-」は「/」の意味でしょうか?
でしたら、category/temp/head.htmlを読み込む場合は
file="category/temp/head.html"
になると思います。
*templはtempのタイプミスでしょうか。

それとテンプレートモジュールと書かれてますが、モジュールではなくて、category/temp/以下に実際に存在する静的ファイルですよね? モジュールでしたら階層に関係なく、module="モジュール名"ですので…。

どうしても上手くいかない場合は絶対パスで読み込めば間違いないと思います(絶対パスは管理画面の設定>公開のサイトパスで分かります)。

☆追記です。
13日の朝から17日の夕方まで留守にします。その間はレスが出来ませんので、いろいろ試してみて下さいね。

返信ありがとうございます。
基本的なことが理解できていませんでした^^;

>ディレクトリ構造図で使われている「-」は「/」の意味でしょうか?
そのとおりです。

>*templはtempのタイプミスでしょうか。
これは他と区別するために設定しています。

>実際に存在する静的ファイルですよね?
静的ファイルではなく、モジュールでしたので「module="モジュール名"」でないといけませんね。申し訳ない。

無事、読み込みできました!ありがとうございました!

あ、モジュールだったんですね。
上手くいったようでよかったです。
返信遅れたりすることもありますが、これからもよろしくです~。