coding Movable Type

【Movable Type】アップグレード時に発生したエラーとその解決

2018年5月15日

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」は小文字だとエラーになります。

以上で再構築時に発生するエラーは解決。

-coding, Movable Type