文書操作
COREBlog1からCOREBlog2へ移行する
COREBlog2のアーカイブには、移行のためのスクリプトやREADMEなどが同梱されています(「COREBlog2_09b/COREBlog2/mirgration」以下)。とりあえず一通りreadme-ja.txtに目を通しておきましょう。
エクスポートの下準備
エクスポート時に一番ひっかかるのはカテゴリ名ではないでしょうか。COREBlog1のカテゴリ名はそのままCOREBlog2でもカテゴリのidとして使うわけですが、このidにはルールがありますので、それに違反してしまうと移行に失敗してしまいます。COREBlog1の情報をエクスポートする前にまずはカテゴリ名をチェックしておくのがよいでしょう。
COREBlog2のカテゴリidは、すべて英数字の半角である必要があり、また空白や下線があってはいけませんし、大文字と小文字を混在させることも禁止されています。ですので以下のようなカテゴリ名は不適切です。
- 「HOGE はげ」…空白があり、しかも日本語が使われている
- 「Hoge」…大文字と小文字が混在している
- 「hoge_1」…アンダーバーが使われている(ハイフンならOK)
カテゴリチェックを終えたらエクスポートの作業に移ります。
COREBlog1のエントリ情報をエクスポートする
COREBlog1インスタンスのcontentsタブから「DTML Method」をaddします。
名前は何でもよいですが、ここでは「COREBlog_Export」としておきます。下図のように、参照ボタンからmigrationフォルダ内にある「coreblogexport.dtml.txt」を選びましょう。
COREBlog_ExportというidでDTMLメソッドを追加したら、「(COREBlogのURL)/COREBlog_Export」にアクセスします。例えばCOREBlogのURLが「http://www.example.com/core/」だったら「http://www.example.com/core/COREBlog_Export」にアクセスするわけです。アクセスするとローカルコンピュータに「COREBlog_Export.txt」というファイルがダウンロードされます。
ちょっと寄り道
当該URLにアクセスすると何故「COREBlog_Export.txt」というファイルがダウンロードされるのでしょうか。これは「coreblogexport.dtml.txt」の冒頭部に秘密があります。このファイルをちょっと見てみると次のような記述があります。
<dtml-comment>
### Set file name ###
</dtml-comment>
<dtml-unless fname>
<dtml-call "REQUEST.set('fname','COREBlog_Export.txt')">
</dtml-unless>
<dtml-comment>
### Set response headers for download ###
</dtml-comment>
<dtml-call "RESPONSE.setHeader('Content-type','application/data')">
<dtml-call "RESPONSE.setHeader('Content-Disposition','inline;filename='+fname)">
5行目のところで、「fname」という変数に「COREBlog_Export.txt」という値を設定しています。また最後の2行の部分ではこのCOREBlog_Exportのコンテンツタイプなどを設定しています。コンテンツタイプにapplication/dataを設定することでブラウザはこのファイルをダウンロードするようになりますし、コンテンツディスポジションを設定することでファイル名を指定しています(実際指定しているのは「fname」ですが、5行目のところで「fname」に「COREBlog_Export.txt」を設定しているため、結果的に「COREBlog_Export.txt」というファイル名を指定していることになります)。
この冒頭部より後にはひたすらにエントリ情報を出力するためのDTMLコードが続きます。
よって「(COREBlogのURL)/COREBlog_Export」にアクセスすると、エントリ情報が記述された「COREBlog_Export.txt」というファイルがダウンロードされることになります。
ダウンロードした後のチェック
ダウンロードしたらCOREBlog_Export.txtのエンコードと改行コードをチェックしておきます。エンコードは「utf-8」、改行コードは「LF(0x0A)」です。utf-8/LFでない場合はエディタなどで変更しておきましょう。例えばWindowsで秀丸エディタならば、「ファイル」メニューから「名前を付けて保存」をすればエンコードも改行コードも指定して保存することができます。
「COREBlog_Export.txt」をCOREBlog2にインポートする
いよいよCOREBlog2にエントリ情報をインポートします。ただし事前にPlone上にCOREBlog2を作成しておく必要があります。COREBlog2を作成したら以下のようにします。
- ZMIから「Ploneインスタンス/portal_skins/custom」に行く
- 右上のプルダウンメニューから「Script(Python)」をファイル名「port」として追加する。なおこのときに参照ボタンからmigrationフォルダ内にある「port.py」を選んでおくこと。ファイル名に「.py」を付けないように注意する
- 同じようにプルダウンメニューから「File」をファイル名「COREBlog_Export」として追加する。参照ボタンから、先ほどローカルコンピュータにダウンロードした「COREBlog_Export.txt」を選んでおくこと
- 「(Plone上に作ったCOREBlog2のURL)/port」にアクセスする。例えばCOREBlog2のURLが「http://www.example.com/plone/core2」だとすると、「http://www.example.com/plone/core2/port」にアクセスする
これでインポートができるハズです。
インポートが成功すると
start!
----------------------------------------
category ['1']
...
...
以下続く
のような感じのものがブラウザに表示されます。
失敗した場合には
start!
{}
というような感じになりますので、カテゴリ名や、COREBlog_Export.txtのエンコード・改行コードなどが適切だったかどうかもう一度確認してみましょう。
インポート成功、その後
- 画像や自分でカスタマイズしたモジュールなどは手動で移行する必要があります。
- 移行したエントリの作成日を変更できます。たかのりさんの「移行したCOREBlog2のエントリの作成日を変更」というエントリを参考にしてください。
- COREBlog2のエントリのidは、何も設定していない場合にはタイトルから任意のidが割り振られます。これをCOREBlog1と同じように数値のidを設定できます。同じくたかのりさんの「COREBlog2のエントリのidに数値をセット」というエントリを参考にしてください。
- このエントリを書いている現時点では、エントリが表示されないという不具合が報告されています。不具合が起きたときの特徴として、パンくずリストの最後に「comments」が付くということがあげられていますので、port.pyのコメントを扱う部分などに問題があるのかもしれません。
追記:エントリが表示されない不具合は解決されています。
- 固定リンク
- ¦
- コメント (0)
- ¦
- トラックバック (0)
- トラックバック用URL:
- http://nagosui.org:8080/Nagosui/COREBlog2/migrate-to-coreblog2/tbping

