MT4.1→MT4.2へのバージョンアップでの不具合対処法・その1

2009年7月31日

MovableType4.1から4.261へのアップグレード(バージョンアップ)を行った際に発生した不具合に対する対処法。
FTPで最新版MT4.261(ライセンス版)のアップロードが完了。
管理URLへアクセス。
ログインを行うと、「アップグレード」ボタンが表示されるのでクリックで実行。
画面上でDBなどのアップグレードの経過が表示されて、バージョンアップが完了。
ここまでは、FTPでのアップロードミス(一部のファイルがアップされていないなど)がなければ、ほぼ問題なく行われる。
次に、各ブログ(複数ブログ)の再構築を行う。
運営ブログは、6ブログ。
今回のトラブルは、3件のブログに発生。
トラブルなしの3ブログは、MT4.1で新規作成したブログである。
これらは、問題なく再構築が行われ、ページの生成も問題ないことが確認された。
さて、トラブルブログの内訳
 ・2ブログ MT3.1で作成、下記のようなバージョンアップ遷移
   MT3.1→MT3.2→MT3.3→MT4.1→MT4.261
 ・1ブログ MT3.3で作成、下記のようなバージョンアップ遷移
   MT3.3→MT4.1→MT4.261


再構築時に、MTタグ複数のエラーが出力されて、その部分のテンプレートのタグを不具合原因として解析していた。
しかし、結果的には、アップグレード時にインデックステンプレートの各種テンプレートの”テンプレートの設定>テンプレートの種類”がうまく引継ぎされていなかったためだった。

MTテンプレートの設定

具体的には、管理メニューの
テンプレート>インデックステンプレート

各インデックステンプレート、たとえば「メインページ」を選択するとテンプレートタグフォームの下に
>テンプレートの設定 
このテキストリンクをクリックすると・・・
・出力ファイル名
・テンプレートの種類
・ファイルへのリンク
・公開
の内容が表示される。
問題の箇所は、テンプレートの種類の表示が、すべて「カスタムインデックステンプレート」になっている。
本来は、メインページであれば、「メインページ(main_index)」になっているはず。
ここがきちんと設定されていないので、再構築で生成するページが、メインページという認識ができない。
そのため、テンプレートの種類を判断するロジックのところでストップしてしまっていた。
具体的には、IF文でテンプレートを判断する文などでエラー
<mtInclude>タグでエラーがありました
<mtIf>タグでエラーがありました:
<mtElseIf>タグでエラーがありました:
<mtSetVarBlock>タグでエラーがありました:
などなど。
このことに気が付くまで、MT4.2では認識できない構文なのか、分岐の方法を変更したりしてなんとか対応し、改造を行ったりした。
が、結局、テンプレートの変更は必要なく、こんな簡単な原因であった。
確かにMT3では、各インデックステンプレートには、「テンプレートの種類」を設定するところはなかったので、MT4.1よりも前に作ったブログのテンプレートには、この情報が引き継がれていなかったようだ。
しかし、MT4.1のバージョンアップのときに「テンプレート初期化」(Movable Type 4.1 より前のバージョンからアップグレード後のテンプレート初期化:ページ下部参照)を行ったはずであるが、はて?
念のため、もう一度「テンプレート初期化」を行ったところ、「ブログに同名のテンプレートが存在します」のエラーメッセージが表示されて初期化できなかった。
かなり、バージョンアップを重ねた歴史があるので、もう記憶も定かでないのが正直なところ^^;
ここで、おさらい!
アップグレード後の再構築で、MTタグエラーが発生したときは、インデックステンプレートの各テンプレートの「テンプレート設定>テンプレートの種類」を確認しよう。
カスタムインデックステンプレートになっていた場合、プルダウン選択から該当する種類への変更を行い保存する。
基本的には、MT4.1で採用されたテンプレートセット機能が、きちんと設定されていれば問題はおこらないはず・・・だ。
その2に続く・・・MT4.1→MT4.2へのバージョンアップでの不具合対処法・その2