ここ最近、ブログのカスタマイズをちょこちょことしていたわけですが、大きな壁にぶち当たりました。
その壁とは、「再構築」時のエラーです。
個別記事(indivisual archives)を再構築しようとすると、エラーがでて途中で終了してしまう状況です。
- 個別記事の再構築時エラーが出る原因としては、
- サーバーに高負荷がかかるため規制がかかり、強制終了される。
- サーバーのスペックが弱いため、耐えられなくなる。
などがありますが、これを強引に続けようとすると、サーバーダウンの可能性も出てくるので、要注意です。
今回、デザインをカスタマイズする前に過去ログなどを先にエントリーさせてしまったため、個別記事アーカイヴを一度にリビルドしようとするとエラーが頻発するようになってしまったのです。
※先にデザインを固めておけば、問題は起こらなかったのでは?という質問は却下。
そこでこれを機に、サイドメニューをテンプレート化してしまおうと思いつきました。
方法は色々あるようですが、今回はこちらを選びました。
あなたのmovabletype、重たくないですか?(テンプレートモジュール化):CROSSBREED
ではその手順を説明(というより覚え書き)しておきます。
1.ブログがphp化されているのが前提なので、各ページがphpで保存されるようカスタマイズします。
関連記事 > Category Archivesのページ分割(当サイト) リファレンス > MTのphp化とページ分割:CROSSBREED
2.次にphpを使用してテンプレート化する場所を「新しいインデックステンプレート」として作ります。

例として、サイドバーにあるデフォルトのlinks部分をテンプレート化します。
慣れたら色々と自分で出来ると思うので、まずは一番無難な部分と言うことでリンク部分を例にします。
テンプレート化したい場所を探し出してコピーし、テキストエディタなどに保存します。(下記参照)
ブログの編集画面にある「管理」の中の「テンプレート」から「新しいテンプレートを作る」で新しいインデクッステンプレートとして保存します。(左図参照)
例:リンクリストをテンプレート化する場合
<dl> <dd> <dt>Links</dt> ここにリンクを追加する場所 </dd> </dl>
テンプレートの編集画面では以下のように記入します。
テンプレートの名前→好きな名前(例:linklist) 出力ファイル名→好きな名前.php(例:linklist.php) 「インデックス・テンプレートを再構築するときに~省略~する」のチェックを外す テンプレートにリンクするファイル→空白 テンプレートの中身→上記でコピーした部分をペースト(貼付)
ここで1つ確認して下さい。
上記で「インデックス・テンプレートを再構築するときにこのテンプレートを自動的に再構築する」のチェックを外す、としているのは、新しいエントリーを投稿する際にこの「新しいテンプレート」を一緒に再構築しないようにするためです。
つまり、簡単に言えば別々に再構築するので、サーバー負荷が軽くなると言う事ですね。
逆に新しいエントリーを投稿する際に一緒に再構築した方が良いもの(例えばリーセントエントリーなど)をテンプレート化する場合はチェックを入れておいても良いと思います。
3.テンプレートにするphpファイル(先ほど作った新しいテンプレート)を挿入する個所に以下を入れます。
<? include(”******/linklist.php”); ?>
******の部分は各自のサーバーでのパスを指定します。
解らない場合はhttpから始まるパスでも大丈夫です。
例:http://www.******.com/blog/linklist.php
4.ここまで終了したら、変更したファイルを再構築します。
ワタクシの場合は、トップページと個別記事、カテゴリーアーカイヴ、データベースアーカイヴを全て統一したかったので、トップページにあるサイドメニューの全てをテンプレート化しました。
同じように、「記事部分のテンプレート化」もできるようですが、ワタクシのところではココまではやってません。
時間のあるときにやってみたいと思います。
説明不足があるかもしれませんが、発見次第追記していきたいと思います。
ご質問などはわかる範囲でお答えしたいと思います。
コメントお待ちしております。
お疲れ様でした。