Movable Type CMSプラットフォーム Movable Type
ドキュメントサイト

Movable Type 8 ManualMovable Type 8 マニュアル

テンプレートモジュールでサーバーサイドインクルードを利用する

最終更新日: 2023.10.25

複数のテンプレートで同じウィジェットを共有して利用しているとき、サーバーサイドインクルード (SSI) を利用して、一つの出力結果を共有して読み込むことで、再構築の負荷を減らせます。

サーバーサイドインクルードで読み込む内容は、どのテンプレートでのも同じ内容のものでなければなりません。
モジュール内で条件分岐などを行い読み込む内容を変えるようにしていたとしても、
最初に再構築された内容で読み込まれます。

サーバサイドインクルードは、これまでと同じようにテンプレートで MTInclude ファンクションタグでテンプレートモジュール、もしくはウィジェットを読み込むように記述すれば、再構築時に適切なサーバーサイドインクルードの記述に変換して読み込みます。

<$MTInclude widget="最近のブログ記事"$>

例えばサーバーサイドインクルードを行う方法を PHP とした場合、次のような PHP コードに書きかえてテンプレートを処理します (出力結果ではありません)。

<?php include("/path/to/where/mt/wrote/your/recent/entries/ssi.php"); ?>

Movable Type は自動的にファイル出力や置き換えなどの処理を行いますので、テンプレート上ではこれまでと同じように MTInclude ファンクションタグで、テンプレートモジュールや、ウィジェットの名前を指定して読み込むだけでかまいません。(ファイルの拡張子は SSI を行う方法に合わせて変更する必要があります)

サポートされる SSI 形式

SSI はウェブサーバーで特別なコマンドを実行して行います。Movable Type では次の形式の SSI をサポートしています。サーバーで利用可能な形式を選択してください。

  • PHP
  • Apache の SSI (SHTML)
  • Active Server Pages (ASP)
  • Java Server Pages (JSP)

サーバーサイドインクルードを使用する

テンプレートモジュール、ウィジェットでサーバーサイドインクルードを使用するには、まず、モジュールオプションの設定を行います。

  1. ナビゲーション』からサイトを選択する
  2. サイドバー』から [設定] - [全般] を選択する
  3. [モジュール設定] 項目の [サーバーサイドインクルード] セレクトメニューからサーバーサイドインクルードを行う方法を選択する
  4. [変更を保存] ボタンをクリックする

上記設定で、各テンプレートモジュール、ウィジェットの編集画面の [テンプレートの設定] の中に、サーバーサイドインクルードに関する設定項目が追加されます。

出力ファイルの拡張子を変更する

選択した SSI の形式に合わせて、出力ファイルの拡張子を変更します。例えば [Apache の SSI] を選択したなら拡張子を shtml に、[PHP] を選択したなら、拡張子を php に変更します。 インデックステンプレートで出力するファイルの拡張子変更は、各テンプレートの編集画面 [テンプレートの設定] にある [出力ファイル名] の項目で行います。 アーカイブテンプレートで出力するページの拡張子変更は、以下の手順で行います。

  1. ナビゲーション』からサイトを選択する
  2. サイドバー』から [設定] - [全般] を選択する
  3. [アーカイブ設定] 項目の [ファイルの拡張子] の内容を変更する(. ドットは入力しなくてかまいません)
  4. [変更を保存] ボタンをクリックする

テンプレートごとの設定

テンプレートモジュール、ウィジェットごとに、サーバーサイドインクルードを行うか設定できます。各テンプレートの編集画面にある [テンプレートの設定] をクリックし、メニューを展開すると、ブログの公開設定で選択した方法で、サーバーサイドインクルードを行うかどうかを設定する、チェックボックスを確認できます。編集画面を表示中のテンプレートを、サーバーサイドインクルードで読み込ませたいときは、チェックボックスをチェックします。

テンプレート単位ではなく、読み込み先で個別に設定したいときは、MTInclude ブロックタグに ssi モディファイアを付与します。

ssi="1 | 0"

値に 1 を設定すると、読み込むテンプレートモジュール、ウィジェットを SSI を利用して構築します。
SSI を利用した構築を行わない場合は、値に 0 を設定します。初期値は 0 です。

注意点

検索用CGI用のシステムテンプレートなどでは、PHPをはじめとするスクリプトによるサーバサイドインクルードは動作しません。多くのサーバー環境で、セキュリティ面から実行を禁止しているためです。

目次