Movable Type検索結果画面のMTIncludeタグでファイルを読み込む方法
Movable Type検索結果画面のMTIncludeタグでファイルを読み込む方法を紹介します。
1.はじめに
MTで再構築するファイルの拡張子を".php"にして、そのページの中で頻繁に更新される部分を、
<?php include('foo.html'); ?>
で読み込むことで、ページ全体の再構築不要で情報を更新することができます。
ただ、検索結果ページはPerlのCGIで動作するため、PHPの方法を利用することができません。
ということで、検索結果画面のMTIncludeタグでファイルを読み込む方法を紹介します。
2.検索結果画面のMTIncludeタグでファイルを読み込む
1項のfoo.phpのパスを、仮に「/var/www/html/foo.html」とします。
このファイルを検索結果画面のMTIncludeタグで読み込むには、下記の手順が必要です。
まず、mt-config.cgiに
AllowFileInclude 1
を設定します(注:4項参照)。
次に、ファイル読み込み部分を次のようにします。
<$mt:Include file="/var/www/html/foo.html"$>
これで、検索結果画面でも情報を更新する部品を利用することができます。
3.サイトパスにテンプレートタグを使用する
2項ではファイルパスに「/var/www/html」を直接記述しましたが、テンプレートタグでサイトパスを取得するには次のように記述します。
<mt:Setvarblock name="foo"><$mt:SitePath$>/foo.html</mt:setvarblock>
<$mt:Include file="$foo"$>
1行目のMTSetVarBlockタグで、サイトパスとファイル名を文字列結合したものを、変数fooに設定します。
2行目のMTIncludeタグで、fileモディファイアに「$foo」と書くことで、変数fooの内容が展開され、
<$mt:Include file="/var/www/html/foo.html"$>
と同じ結果となります。
4.注意事項
AllowFileIncludeはセキュリティ対策として、デフォルトで無効(=0)となっています。
理由は「テンプレート編集の権限だけをもつユーザーが、ファイルシステム上の任意のファイルを読み出せるのは問題であるため」のようです。
このカスタマイズを利用する場合は、上記のセキュリティに十分配慮してください。
- Movable Typeの月別コンテンツアーカイブリスト用テンプレート
- コンテンツデータでMTEntriesWithSubCategoriesの代替テンプレートタグ
- MTContentFieldタグの使い方
- Movable Typeでブログ記事一覧をカスタムフィールドでソートする方法
- MTの本文フィールドからimg要素のURLを取得する方法
- MTEntriesタグで指定した数の記事を除外して表示する方法
- Movable Typeのテンプレートタグの中でテンプレートタグを使う方法
- Movable Typeのテンプレートタグをテンプレートで生成する方法
- Movable TypeのMTEntriesタグで特定の複数ブログ記事を出力する方法
- Movable TypeでCSVデータからtable要素を作る方法
- MTIncludeタグのnameモディファイア
- Movable Type(MT)の特殊変数の入れ子
- ブロックタグにelseタグを組み込んで判定する
- Movable Type 5 におけるウェブサイトとブログの複数指定方法
- ウェブサイトとブログでグローバルナビゲーションを共有する