今更、Movable Type 3.37から5.0.4へのアップデートを行ったのでメモ。
今回アップデートしたのは、MT4リリース時に一度アップデートを試みたが、文字化けしたので面倒になってアップデートせずに今の今まで3.37のままで運用してきたブログ。サーバーの引っ越しに伴いそろそろ潮時を感じたのでアップデートすることにした。
文字化けの原因は、そもそものデータベーステーブルのエンコードが「latin1_swedish_ci」になっているからutf8で文字化けするというものだった。これは、PHP My Admin で編集(一度binaryにしてからutf8に変換)すればいいようなので手作業で行った。
- Php My Adminにログインして、表示タブで文字化けのテーブルを探して、構造タブの鉛筆アイコンから編集する。
- 照合順序をbinaryにして種別を覚えておく。
- もう一度鉛筆アイコンから、照合順序をutf8_general_ciにして、種別を元に戻す。
- 返り値が空、もしくは文字化けしていないテーブルはそのままにしておく。
- 文字化けが直ったら、そのデータベースをエクスポート。
- エディタで開いてlatin1をutf8で一括置換して上書き保存。
- データベースの中身を削除してから、それをインポート。
データベーステーブルがutf8になったので、いよいよMT5へアップデートする。
アップデートの前にデータベースのバックアップとファイルのバックアップを行い、現在使用している「mt」フォルダを「mt_3」等にリネームして、トラブル発生時にいつでも戻せるようにしておく。
エディターのオートセーブを無効にする為に、mt-config.cgi に以下のオプションを追加。
AutoSaveFrequency 0
エントリー数が多い時は、再構築を10エントリー毎に行うオプションも追加。
EntriesPerRebuild 10
キーワードからタグへのコンバート
エントリーのキーワードをMT 3.3以降のタグにコンバートするCGIスクリプトMTKeywords2Tagsを使って、キーワードをタグに一括変換する。
そして、これから投稿するエントリーのキーワードをタグに登録できるように、投稿時にエントリーのキーワードを「タグ」として登録するプラグインKeywordsAsTagsをインストールする。
プラグイン関係の更新
エントリーテンプレートで <MTMostRelatedEntries> は存在しませんエラー。タグでの関連エントリー表示はTagSupplementalsを使うことにする。エントリーテンプレートのMTタグを <MTRelatedEntries> に切り替え。
CatEntries3.0.plは <MTCatEntries> が再構築でエラーが出たのでやめた。
アーカイブページを分割するプラグインMT Extensions: MTPaginate 1.28はそのまま使用可能。だけど、静的ページ用ページ分割プラグイン:PageButeの方はトップページも分割できるしSEO的にもよさげなのでこちらに切り替えた。(参考:MT5 ブログ記事が増えてきたら、PageButeプラグインによりページ分割。 – むらごんの思い込みWeblog)
カテゴリー名の頭の3桁の数字(例:「010ハードウェア」)を切り取るcutfirstcharはそのまま使える。
Mailformをニューバージョンに更新したら、テンプレートが増えたりMTタグでエラーが出たので面倒になって、設置の簡単なPHPメールフォームAjaxMailを使用することにした。
同じカテゴリーのエントリー一覧に <MTTagInvoke> を使っていると再構築でエラーが出るので、MT4でMTタグのアトリビュート内で更にタグを使用する | スカイアークシステムで紹介されているタグに変更した。