top

3.3から4.0へのバージョンアップ方法

ダイナミック・パブリッシングサイトを3.3から4.0へバージョンアップする場合の方法や注意点などを覚え書きしておきます。MT4ではエクスポートデータでタグがサポートされるようになったので、4.0のデフォルトテンプレートで新規に構築してみたい場合でもいったん3.3→4.0へのバージョンアップを行ってからデータのエクスポートを行うと良いと思います(私は逆に中途半端にタグ付けされていた状態をリセットしたかったので3.35のエクスポートデータでバージョンアップしましたが^^;)

■下準備
念のためバックアップは忘れずに。エクスポートデータだけでなく、MySQLのバックアップもできるならしておいた方がいいでしょう。

●ダイナミック用ページ分割
Smartyによるダイナミック専用頁分割を行っている場合は、3.35用のままでは上手く動作しませんので4.0用に一部のタグの書き換えを行っておきます。<MTEntries>~</MTEntries>の部分を以下のように変更して下さい。4.0ではアトリビュートに変数が使えるようになったため、lastn="$epp"のままではSmartyの変数として認識されなくなったためです。

{{assign var="epp" value=5}}
<MTEntries lastn="$epp" offset="`$smarty.request.offset`">
       ↓
{{assign var="epp" value=5}}
<MTEntries lastn="5" offset="`$smarty.request.offset`">

分割部分のコードはそのままで問題なく動きますので、修正するのはここだけでいいです。

●アトリビュートにSmarty変数を使っている場合
頁分割と同じ理由で$nameという記述が使えなくなったため、{{capture assign="name"}}を使っている場合は{{capture name="name"}}に変更して下さい。以下の例ではエントリーに同一カテゴリーの記事を表示するケースについて説明しています。

{{capture assign="name"}}<$MTEntryCategory$>{{/capture}}
<MTEntries lastn="10" category="$name">
       ↓
{{capture name="name"}}<$MTEntryCategory$>{{/capture}}
<MTEntries lastn="10" category="`$smarty.capture.name`">

●カレンダーでリンク先を日別にしてツールチップに複数タイトルを出している場合
4.0でしょうもないバグが発生していて、当サイトで紹介していた以下のタグでは静的ではOKでもダイナミックだとSmartyエラーになります(^^;。sixapartには報告済みでバグ認定もされているのですが、簡単に回避できるバグのため現状では据え置き状態になってます。エラーの原因になっている赤字の部分を削除して<$MTEntryTitle$>を[]などで囲ってやれば実用上は十分です。

      省略 
      ・・・・
<MTDateHeader>
<a href="<$MTBlogURL$><$MTArchiveDate format="%Y/%m/%d/"$>" title="</MTDateHeader><$MTEntryTitle$><MTDateFooter>">
<$MTCalendarDay$></a>
<MTElse>&nbsp;|&nbsp;</MTElse></MTDateFooter>
      ・・・・
      省略

       ↓

      省略 
      ・・・・
<MTDateHeader>
<a href="<$MTBlogURL$><$MTArchiveDate format="%Y/%m/%d/"$>" title="</MTDateHeader>[<$MTEntryTitle$>]<MTDateFooter>">
<$MTCalendarDay$></a>
</MTDateFooter>
      ・・・・
      省略

なお、当サイトのダイナミック用カレンダー記事は4.0対応版に修正済みです。

●カテゴリーアーカイブで全件出力させる
MT4では再構築の負担を少なくするためにカテゴリーアーカイブは設定で決めた件数しか出力されないよう仕様変更されました。今後仕様が再検討される可能性もありますが、少なくとも現状4.0のダイナミックではそうなっています。ダイナミックでカテゴリーアーカイブに全件出力させる必要がある場合はMTEntriesに以下のアトリビュートを追加しておきます。どれを使うかはお好みで。

<MTEntries lastn="9999">
<MTEntries lastn="0">
<MTEntries lastn="-1">

lastn="-1"はsixapartに教えてもらいました。ただしあくまでもハック的なもので正式サポートではないのでご了承をとのことでした。lastn="0"も似たようなもんですけどね。ちなみに管理画面の設定値を0にしても全件出力されます。

●ダイナミック用プラグイン
ダイナミック用プラグインは3.3以前用のものは4.0では使えません。これはMTタグが大文字・小文字どちらでも使えるようになったための影響で、3.3以前用ダイナミックプラグインを4.0で使うためにはファイル名を小文字に変更するなどの修正を行う必要があります。急ぐ場合はあんちもん2.Labさんのダイナミック・パブリッシング対応プラグインの MT4 における仕様変更についてを参考に修正を行って下さい。なおMT4正式対応版は随時公開されていくと思いますので、急がない場合は配布サイトが正式対応するまで待ってもいいでしょう(AutoIncrementalVarプラグインはもう4.0に正式対応されてますね)。

●その他のプラグイン
4.0では使えなくなったプラグインもありますが、各配布サイトも4.0対応版を順次発表しつつあるので、自分が使っているプラグインに関しては状況をよく調べて対応を。なお、4.0でデフォルトで組み込まれたプラグイン(MultiBlogやMarkdownなど)は入れないように。エラーの原因になることがありますので。

■バージョンアップ
4.0はメジャーバージョンアップだけあってファイルの構成なども3.35から変わっているところがあります。なので上書きではなくクリーンストールを推奨します。

  1. 今MTが入っているディレクトリがmtだとしたらmt2などの別名で新たにディレクトリを作り、そこへ4.0のファイルを全部アップロードします。
  2. mt-comments.cgi、mt-tb.cgiをリネームしている場合は、ここでリネームしておきます。
  3. mtディレクトリからmt-config.cgiをダウンロードし、mt2ディレクトリにアップします。
  4. 4.0用に用意したプラグインをそれぞれの説明に従ってアップします。
  5. mtディレクトリをmt-oldなどにリネームし、mt2ディレクトリをmtにリネームします。
  6. mt/mt.cgiにアクセスします。アップロード画面になるのでそのまま入ります。データベースのアップロードが始まり、終了します。これにてアップロードは完了です。簡単です。^^
  7. 各ブログを再構築します。メジャーバージョンアップなので、ダイナミックでも最初の1回は全頁に再構築をかけておいた方がよいです。
  8. アップグレードの場合は既存の環境がそのまま引き継がれます。4.0デフォテンプレに変えるかそのままで行くかはお好みでどうぞ~。

【補足~3.3と4.0の差分】
3.3と4.0では基本的な機能は変わっていませんが、コメントまわりだけは4.0仕様にしないとキャプチャなどの新機能が使えません。<MTEntryIfCommentsOpen>~</MTEntryIfCommentsOpen>の部分を4.0のモジュールの「コメント入力フォーム」にまるっと差し変えて*、mt-site.jsの中身を4.0デフォルトのmt.jsに入れ替えれば3.3のテンプレのままで4.0環境に移行出来ると思います。ただしそのままではデザインが崩れていると思うので、各自の環境に合わせてスタイルシートを適当に調整するといいでしょう。

* こちらにもう少し詳しい方法をエントリしました。(2007.8.23 追記)