こんにちは,ディレクターの八木です。
最近,Movable Type 4で稼働中のとあるサイトをMovable Type 6にバージョンアップしました。 その際,ブログ構成の再編成に関してちょっと苦労しました。どなたかの参考になるかと思いメモを残しておきます。
Movable Typeを長くお使いの方はご記憶かと思いますが,MT4の時代は「ウェブサイト」という概念はまだ登場しておらず,すべての「ブログ」がフラットに並ぶ構造でした。
従って,サイトストラクチャ上はHOMEページがあり配下にニュースだの製品紹介だのといった子コンテンツ群がぶら下がる階層型の構造の場合,CMS内では仮想的にそうなるように設計したものでした(相当な昔話ですね…)。
ところが…。
今回の場合,元のブログ構成は図1のようになっていました。
<図1: MT4時代>
HOME(ブログ)
blog_1(ブログ)
blog_2(ブログ)
blog_3(ブログ)
...
blog_N(ブログ)
MT6にアップデート後は,実際のサイトストラクチャに沿うようHOMEを親ウェブサイトとして,残りをこれの子ブログ化したいと考えました。
<図2: MT6後の理想形>
HOME(ウェブサイト)
├ blog_1(ブログ)
├ blog_2(ブログ)
├ blog_3(ブログ)
├ ...
└ blog_N(ブログ)
しかぁし,MT4 から MT6にダイレクトにバージョンアップすると,個々のブログがそれぞれ独立したウェブサイトに変換されて,図3のような構成になってしまいました。 現在の MT6 では、ブログのままバージョンアップすることや、ウェブサイトをブログに変換することはできません。いったんウェブサイトになってしまうと,後から別のウェブサイトの子ブログ化することもできません(T_T)。困った。。。
<図3: MT4から直接MT6へバージョンアップした結果>
HOME(ウェブサイト)
blog_1(ウェブサイト)
blog_2(ウェブサイト)
blog_3(ウェブサイト)
...
blog_N(ウェブサイト)
シックス・アパートさんに教えてもらった方法は, 一旦MT5を中継する2段階方式,つまり「MT4->MT5, MT5->MT6の2段階バージョンアップ」です。
つまり,一旦,MT4をMT5にバージョンアップします。すると,図4のように,ウェブサイトが一つ自動生成されてMT4時代のブログが子ブログとしてぶら下がります(※)。
<図4: MT4からMT5へバージョンアップした結果>
自動生成されたウェブサイト
├ HOME(ブログ)
├ blog_1(ブログ)
├ blog_2(ブログ)
├ blog_3(ブログ)
├ ...
└ blog_N(ブログ)
※簡単に書いてますが,実際にはブログのURLを判定してあーだのこーだのと再編成処理をするようです^^; 振る舞いの詳細については次の記事を参照してください。
これをさらに,MT6にバージョンアップすれば,一応ブログはブログのままバージョンアップというのが実現できるわけです。
なお,下位の各バージョンからMT6にダイレクトにバージョンアップした場合の ウェブサイト作成ルールについては次の記事に詳しい解説があります。
おおむねクリアできましたが,もう一つ残課題がありました。
MT4時代,HOME(ブログ) という親的存在のブログがあり,前述の図2にあるように,これをウェブサイトに格上げしたかったのです。
2段階バージョンアップだけだと,HOMEブログも他ブログと同様,MT5で自動生成されたウェブサイトの一子ブログとしてぶら下がっています。
HOME(ブログ)には多数のウェブページが入っているので,できればこのままウェブサイト化したいです。
再びシックス・アパートさんに教えてもらったのは次のような方法です。 実際には私はこの方法は使わなかったので,教えてもらった手順をママ書いておきます。
現在の Movable Type 6 では、ブログをウェブサイトに変換する機能や、 ウェブページを別のウェブサイトやブログに移動する機能は搭載されていません。ご了承ください。 もし、お知らせいただいたブログの構成を実現する場合は、以下の手順でおこなう必要があります。 1. Movable Type 5 を経由してアップグレードした Movable Type 6.1.2 で、「HOME」ブログを除く各ブログ(「blog_1」から「blog_N」)のバックアップを取得 2. 別途、Movable Type 4 の環境を用意 ※データベースのダンプデータもしくは Movable Type 4 のバックアップ機能で取得したバックアップファイルをお使いください。 3. 別途用意した Movable Type 4 を Movable Type 6.1.2 にアップグレード 4. 変換された「HOME」以外のウェブサイトを削除 5.「HOME」ウェブサイト配下にブログを復元 ※復元したブログは ID が変わります。ほかのブログやウェブサイトのテンプレート内で ブログ ID を直接記述している箇所がある場合は、変更後の ID に書き換えてください。
その1方式は,手間がかかるのと,ブログIDやエントリーIDが大幅にズレてしまうのが難点です。 MT4時代のテンプレートは,ブログIDを直書きしている箇所があり,元々弊社で開発を担当してないこともあって,ブログIDがズレる影響範囲が心配でした。
そこで,普通にMT4->MT5->MT6の2段階バージョンアップをした後で,スカイアークさんの「DuplicateEntry」という記事やウェブページを複製したり移動できるプラグインを使って,「HOME」ブログの記事・ウェブページをウェブサイトに移動する方法をとりました。 なお,テンプレートは大した数でもないので手動で移動しました。
ブログ記事を複製または移動するMovableTypeプラグイン:DuplicateEntry
<図5: MT4->MT5->MT6バージョンアップ直後>
自動生成されたウェブサイト -(A)
├ HOME(ブログ)
├ blog_1(ブログ)
├ blog_2(ブログ)
├ blog_3(ブログ)
├ ...
└ blog_N(ブログ)
<図6: 再編後>
HOME(ウェブサイト) (A)をリネーム。記事とテンプレを移動
├ 【削除】HOME(ブログ)
├ blog_1(ブログ)
├ blog_2(ブログ)
├ blog_3(ブログ)
├ ...
└ blog_N(ブログ)
ここで一つ注意があります。
DuplicateEntryは記事移動時に,公開ステータスを「下書き」に変える仕様になっています。このため,全記事を一気に移動してしまうと,どれが公開記事だったかわからなくなってしまいます(私はそこに気づかず,最初やらかしました^^;)。なので,まず公開記事だけを選択して移動し,移動先で「公開」ステータスに変更します。その後で残りの下書き記事を移動する,というのがよいです。