- 2009-07-03 (金) 16:51
- MovableType


- スタティックページでのダイナミックパブリッシングページのインクルード
やっぱり"おーたむ"さんが正しい?
「[mixi] Movable Type | こんなことできますか? part2」でのおーたむさんの質問の中で、「スタティックページから、ダイナミックページのインクルードはできない。」との言葉に、条件反射的に「出来るよ」って返しちゃったけど、もしかして何か大きな勘違いしていたかもしれません。
MTIncludeではURL指定での読み込みは出来ない
スタティックのページの一部に、ダイナミックパブリッシングによるパーツを表示する事は可能です。ただしそのパーツはURLによって呼び出されなくてはなりません。
「インクルード」という言葉が、MT4.2から実装された、MTIncludeによるサーバーサイドの読み込みを指しているのなら、確かに「インクルード」は出来ないです。
例えば「サーバーサイドインクルード」を「PHPのインクルード」と指定している場合は、出力では
<?php
include("/var/httpd/www/archives/2005/tag200509.html");
?>
の様に、ローカル指定のファイル読み込みになり、結果として、ダイナミックパブリッシング対象のファイルとして処理されなくなります。
SSIによるインクルード処理にはURL指定も存在する
それで、脊髄反射で出来るって答えたけど、それは「PHPインクルードでURL指定する」という特殊なケースだったのでした。
そもそも、このURL指定は「URL fopenラッパー」ってのが有効になっていないと、使えない機能で、使えないサーバーが多いらしいというオマケもついてたりします。
PHPによるSSIの場合は「PHP.ini」の以下の部分をOnにする必要があります。
;;;;;;;;;;;;;;;;;; ; Fopen wrappers ; ;;;;;;;;;;;;;;;;;; ; Whether to allow the treatment of URLs (like http:// or ftp://) as files. allow_url_fopen = On ; Whether to allow include/require to open URLs (like http:// or ftp://) as files. allow_url_include = On
他のSSIでの指定方法はApache SSIなどを参考にしてください。ただし実際に検証している訳ではないので、動かない可能性もあります。
<$MTDate language="en"$>
<html>
<head>
<title>TEXT</title>
</head>
<body>
<?php include("http://localhost/my_first_blog/date.txt"); ?>
</body>
</html>
こんな感じでテンプレートを指定してみれば「date.txt」をダイナミックパブリッシング↓結果として読み込んで表示します。

消化不良・・・![]()
インクルードは様々なケースが存在します。PHPソースをTEXTで保存しておいて、インクルードするとPHPスクリプトが実行されたりと、工夫するといろんな事が出来ます。
- Newer >: なんか色々動作するようになってる
- < Older: trackword見て思ったコト
ping a Trackback
- TrackBack URL for this entry.(1)




スクリプトの読み込みが完了していません。
メールフォーム(Javascriptを使用していません)や、
Twitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。