MovableTypeのダイナミックパブリッシングにおいて、記事中でPHPインクルードが機能しない問題についてテストしてみました。
<MTInclude file="ファイル名">
これが記事のエントリー編集画面で直接入力出来れば、問題ないのだけれど、こういうプラグインは存在するのでしょうか?^^)
ちょっと検索してみると、WordPressでは標準で使える「カスタムフィールド」っていう機能をMovableTypeに実装するためのプラグインがあり、それを使えば出来そうな気もします。
しかし、
「小粋空間: Movable Type 3.3 追加タグ一覧」で紹介してあった、MTEntryIfTagged :エントリーにタグが入力されているときに実行する条件タグというのを使えば、タグを利用して、そのエントリー独自のコンテンツを表示するテンプレートを作れそうです。
MovableType3.3に期待するか、WordPressに完全移行するか。。。
【2006年6月19日追記】
ダイナミックパブリッシングの場合、PHPのインクルードをテンプレートで実施しても実行されないのは、MovableTypeのダイナミックパブリッシング用のテンプレートがSmartyで実行されるように書かれていることが原因のようです。PHPベースのダイナミック・パブリッシング・エンジンの2つの主要なコンポーネントは、Smarty テンプレート・パッケージ(http://smarty.php.net/)とJustin VincentのezSQLライブラリ(http://php.justinvincent.com/)です。 ※参照:Movable Typeユーザー・マニュアル: ダイナミック・パブリッシング
したがって、テンプレートの中にSmarty用のコードを書いてあげれば、簡単に解決できることがわかりました。
そのヒントは、Molto vivace: ページ分割に関する考察(ダイナミックパブリッシングの場合)で、頂戴いたしました。d^^)
なお、外部ファイルを読み込む場合は、「インクルード」ではなく、「フェッチ(fetch)」を使います。
※「インクルード」という「思い込み」が、問題の解決を遅らせてしまったのでした。初めてのSmartyにつき、解決まで3日間を要す。^^;
書式:{{fetch file=$url}}
このテストの目的
さて、話を元に戻して、このテストの目的は、このエントリーでやっているように「外部ファイルのRSSを読み込んで、自サイトに表示させる」という仕組みを作ることです。そもそもダイナミックパブリッシングに移行する前は、記事中にPHPでインクルードしてあげれば済んでた話ですが、ダイナミックに移行したばっかりに、よけいな手間が増えてしまったというわけ。^^;
fetchによる外部ファイルの取り込み方法は解決しましたが、個別エントリのテンプレートに書いてしまうと全記事に適用されるわけですから、それはちょっと困ります。
そこで、記事固有の値をカスタムフィールドとして入力して、そのカスタムフィールドに値が存在する場合のみ呼び出しを行なうという方法を調べる必要がありました。
これは、ダイナミックパブリッシングにも対応しているプラグイン「CustomFields」を使うことで、簡単に解決できました。
(続きは後日^^;)⇒書きました。「CustomFields プラグインについて」