トータルWEB トップ > ちょっとテクニカル > PHPでMovable Typeの更新を高速化する

PHPでMovable Typeの更新を高速化する

Movable Typeでエントリーの追加や更新を行うとトップページやその記事の含まれるカテゴリーや前後のエントリーなど関連性のあるページも自動で更新が行われます。

しかし、最近のエントリー、トラックバック、コメントやカテゴリー別のエントリー一覧などをサイドメニューなどに表示している場合、エントリーの登録だけでは全てのページは更新されないため、ページごとに内容がことなってしまいます。

そのような場合、ページを追加・更新する度に「サイトの再構築」で、全てのページを再構築することで、対応できるのですが、手間や更新速度の面からページが増えてくると厳しいものがあります。

そのような時にPHPを使用すると簡単に解決することができるのです。

簡単に説明すると、サイドメニューなどに表示している「最近のエントリー」や「トラックバック」など全体で表示したい共通の部分を、エントリーの更新処理で、個別のHTMLファイルとして作成します。

ページを表示するときに、PHPの読み込み機能を使って、そのHTMLファイルを読み込んでページの一部として表示することで、常に同じ内容が全てのページで表示されるようになります。

PHPとMovable Typeを組み合わせることで、ページ数が増えてもストレス無く、コンテンツの追加や更新が行えるようになります。

PHPの読み込み機能を使うためのMovable Type設定方法

メニューに表示したい部分、たとえば最新のエントリーリストやトラックバック一覧などをHTMLとして書き出すインデックス・テンプレートを用意します。そして、表示したいアーカイブテンプレートの中で、書き出したHTMLファイルをPHPのインクルードを使用して読み込むことで表示します。

もう少し具体的な例をカテゴリー別のメニューを作成する方法で説明します。

カテゴリー別のメニューを作成するには、アーカイブテンプレートを使用します。
内容は、カテゴリーのエントリーしストを出力するような単純なものです。

MovableTypeのアーカイブテンプレート設定画面


その追加したテンプレートを「設定」>「アーカイブの設定」で、カテゴリー別アーカイブと関連付けます。

MovableTypeのアーカイブ設定画面


カテゴリー別メニューの出力ファイル名を
「category_menu_<$MTArchiveCategory dirify="1" $>.inc」として、カテゴリーごとのメニューを別々のHTMLファイルとして書き出します。

カテゴリー別メニューの出力ファイル名を設定する画面


カテゴリーごとのメニューを表示するには、個別アーカイブのテンプレートから、PHPのインクルードを使用して読み込むだけです。

<?php include "<MTBlogArchiveURL>category_menu_<$MTEntryCategory$>.inc";?>

カテゴリーアーカイブから読み込むには

<?php include "<MTBlogArchiveURL>category_menu_<$MTArchiveCategory$>.inc";?>

JavaScriptを利用しても同様なことを実現は出来ますが、検索エンジンがJavaScriptを読まないためSEOの面で不利となります。また、ユーザーの環境によってはメニューが表示されなくなるため、あまりお勧めはできません。

これだけで、再構築を行うことなく、エントリーを追加するだけで、全てのページのメニューが更新されます。

注)カテゴリー名に日本語を使用している場合、カテゴリー名の代わりにカテゴリーIDを使用することで対応できますが、カテゴリーアーカイブからMTCategoryIDを直接呼び出せないので、MTCategoryなどのプラグインを使用するとよいでしょう。

インクルードファイルのパス指定に<$MTBlogSitePath$>でローカルパスを指定する方が、サーバーの負荷は軽減できるようです。しかし、アーカイブをサイト・パスとは別に設定している場合には注意が必要です。

ちょっとテクニカル」の一覧

最新の記事