MT4.1以下で実現するサーバー・サイド・インクルード
MT4.15からサーバー・サイド・インクルードという機能が追加されますが、MT4.1以下でも似たような機能は実装可能です。
まず、サーバー・サイド・インクルードを利用することによるメリットはなにかというと、
サイドバーなどに常に最新の情報を表示することが出来る。
最新ニュースなどを表示する際に、サーバー・サイド・インクルードで表示しておけばインクルードファイルさえ更新してしまえば、すべてのページの情報を最新に変更することが可能です。
検索結果ページ、タグページの表示が高速化
表示の際にインクルード部分を生成する必要がなくなり、表示の高速化が図れます。
今回、実装してみたところ当サイトでは3~4倍の速度で表示されるようになりました。
再構築が高速化される
再構築の度にインクルード部分を生成する必要がなくなり、再構築のスピードがはやくなります。
ファイル容量を節約できる
共通部分をファイルとして管理する為、ファイル容量を節約することが可能です。
ページ数が非常に多い場合は効果があるかもしれません。
デメリットとしては、
インクルードの際にサーバーサーサイドでのプロセスが発生する為、若干サーバー負荷が発生します。
ただ、よほど低性能なサーバーを使っているか、アクセスが非常に多い場合以外、全く気にする必要はありません。
実装方法
まずはインクルードファイルの作成から。
ヘッダーメニューのデザインからテンプレートを選択。
インデックステンプレートを作成をクリックします。
適当なタイトル名を付けます。当サイトの場合サイドメニューをすべてインクルードファイルにしていますので、「サイドナビ」
内容は共通部分のMTの処理を記述します。
適当な出力ファイル名を付けます。当サイトの場合「navi.inc」
再構築オプションにはチェックを入れておきます。
これで、保存してから再構築を行えばサイドメニュー用のファイルnavi.incが生成されます。
次に各テンプレートでこのnavi.incを取り込む処理を記述していきます。
<?php print file_get_contents("/サイトパス/navi.inc") ?>
file_get_content内にはnavi.incまでのサーバーサイド絶対パスを記述します。
これでPHPでインクルードファイルを取り込む処理は終了です。
次にphpの実行環境を設定します。
拡張子がphpなどで運用されている場合は必要ないですが、.htmlなどで運用されている場合は、トップディレクトリに以下の一文を書いた.htaccessを設置します。
AddType application/x-httpd-php .html
これで.htmlでPHPを実行することが可能です。
このままですと、xml宣言を記述している場合はエラーが出てしまいます。
xml宣言は以下のように書き換えてください。
<?= "<?xml version=\"1.0\" encoding=\"utf-8\"?>" ?>
次にCGI実行環境のテンプレートを修正していきます。
検索結果やタグ表示、コメントプレビュー画面はcgiで出力されており、phpでインクルードすることが出来ません。
cgiで出力されるページはMTIncludeタグのfileモディファイアでインクルードを行います。
<$MTInclude file="/サイトパス/navi.inc"$>
これで作業は完了です。
全再構築を行えばサーバー・サイド・インクルードで処理されるはずです。
関連エントリー
Movable Typeの再構築 高速化いろいろ
MTのカテゴリー操作 色々
MTのテンプレート開発で再構築を不要にするfastDevelopmentプラグイン
MTでopモディファイアを利用して複雑なレイアウトを行う
Movable TypeでSEO対策-Feed編-