6年間ほったらかしだったMovable Typeで構築たブログをアップグレードした結果。
古すぎてもうアップグレード不能なんじゃないかと思っていたが、意外と予想よりあっさりアップグレードできた。
とはいえ、同時にサーバーの移転も行ったので時間はかかった。
格別大きなトラブルはなかったと言って良いと思うが、それでもいくつか発生したエラーについて、それをどう修復したかを記す。
非対応プラグインを外す
再構築の際に発生するエラー。
Can't locate object method "_hdlr_entry_body" via package "MT::Template::Context"
というエラー(冒頭の画像)の場合。
"Template"というテキストがあるので、テンプレートに問題があるんだろう。"package"という文字列もあるのでプラグインを疑う。
エラーのダイアログの「テンプレートの編集」(①)をクリックすると問題のテンプレートが開くので何が問題なのか探してみる。
プラグイン関連のタグを発見。
追加したプラグイン「MTTruncateURL」のタグがあったので外してみたらエラーは表示されなくなった。このプラグインは「http://」で始まるリンクを相対URLに変換してくれるというもの。アップデートを探したが見つからず、とりあえず困らないので外しておいた。
別のブログではそれでも同じエラーが発生。テンプレートを開くと追加した「randomentries」というプラグインを使っていたのでそのタグを外すと解決。このプラグインは、再構築の毎に指定したカテゴリーのなかからランダムにエントリーを出力するというもの。
テンプレートタグの修正
疑わしいプラグインを外した結果、上記のエラーは出なくなったが、代わりに表示されたエラーが
Can't call method "entry_based" on an undefined value
というエラー。これも「テンプレートの編集」(①)クリックしてみると問題があるテンプレートが開く。
テンプレートタグが正しく使われていないことが原因のようだ。
トップページでカテゴリー毎のエントリーの最新記事を出力するのに、「<MTCategories>」を使っていた(コード65行目73行目)が正しくないんだそうだ。「<MTArchivelist archive_type="Category">」を使う。
<!-- 修正前のコード --> <div id="catlist"> <MTCategories> <a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$> </a> [<$MTCategoryCount$>] <span class="topnavi"> <a href="#<$MTCategoryLabel$>">最新記事</a>| <a href="<$MTCategoryArchiveLink$>">一覧へ</a> </span> </MTCategories> </div>
<!-- 修正後のコード --> <div id="catlist"> <mt:archivelist archive_type="Category"> <a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$> </a> [<$MTCategoryCount$>] <span class="topnavi"> <a href="#<$MTCategoryLabel$>">最新記事</a>| <a href="<$MTCategoryArchiveLink$>">一覧へ</a> </span> </mt:archivelist> </div>
MTArchiveList のモディファイア archive_type「"Category"」の「C」は小文字だとエラーになります。
以上で再構築時に発生するエラーは解決。