習作:MT形式のd3diaryインポート
Movable Type形式の d3diaryインポート-ver0.2
Movable Type 形式のブログデータを、d3diaryにインポートしようと考えました。 私の場合は、niftyの「ココログ」でエクスポートしたMT形式データのインポートになります。
いきなり本番環境で実行せず、必ずテスト環境で試してから実行してください。
1、参考: MovableTypeのデータをWordPressに移行したい。(のぶのぶXOOPS)
xoopsモジュールでこの手のインポートが出来るブログモジュールとしてはwordpressMEがありまして、上記参考サイトからphpソースをダウンロードしてテストサイトでインポートまで行ってみたところ、これは見事にできました。
また、既にインポート済みのデータは上書きしないようになっているなど、運用中のwordpressMEへの追加インポートを考慮しているのが、ユーザーに優しいところですね。
なお、今回のphpソースは上記参考サイトのソースを元に、d3diaryのソースをに手を入れて書いたものです。インポート済み記事やコメントは同様にスキップするようにしています。 d3diaryにはトラックバック機能が無いので、トラックバックは無視します。
2、d3diaryインポートの制約
MT形式(ver3)データをd3diaryに取り込む場合、以下の制約があります。
- d3diaryにトラックバック機能が無いので、トラックバックはインポートできません。
- MT形式(ver3)のコメントがタイトル無くスレッド構造でない制約 元々のMT形式テキストデータが、タイトルもスレッド構造を持ちません。 xoopsコメントにインポートする際には、最初のコメントのタイトルを (Re:投稿タイトル)として親コメントと扱い、以降のコメントをその親コメントへ繋げ、(Re^2)、(Re^3)・・ とすることとしています。
- xoopsコメントを使う制約 d3diaryでは、標準コメントシステムの「xoopsコメント」を使っています。 それ自体はOKなのですが、このコメントシステムにはゲスト投稿者の 「名前」入力欄が無く、元を辿るとDBに「cname」などというフィールドさえ無い、という最大の問題を抱えています。
WordPressMEの場合は、モジュール側でコメント用のDBテーブルを持っていたため、問題ありませんでした。
この問題をクリアする方法として、以下の2つの方法が考えられます。
- d3forumのコメント統合を使う
スクリプト中の以下の部分を編集し、d3diaryのコメント統合設定を正しく行います。
$use_d3forum_comment = false; // コメントをd3forumに直接取り込む場合、true
- xoopsコメントのままで、何とかする
要は、MTデータの投稿者名を何とか表示すればよいのです。 今回は、本文の冒頭に、「名前 wrote:」 と追加する安直な方法にしました。
- d3diaryで記事カテゴリを複数選択できない制約
diaryでは記事カテゴリを複数選択できません。 つまり、Movable Type形式の記事ではいくつか列挙されているカテゴリの一つしか保持できないことになります。
今回は、これまた安直に、成り行きで一つだけを生かす方式にしました。 多分、MT形式データの各記事の一番最後に書かれているカテゴリが有効になると思いますが、もしかしたらそうならないかも知れません。
(1)xoops_trust_path/modules/d3diary/main/import_mt.php
解凍したファイルの
- 3行目にMT形式ファイルのフルパスを加筆し、
- 4行目にMT形式ファイルの文字コードを記載。
- 5行目にxoopsのデータベースの文字コードを記載。
- Biglobeの場合は、7行目を$biglobemode = true;に変更。
ファイル名「import-mt.php」でtrust側のd3diary/mainフォルダに保存します。(本ファイルはEUC-JPで保存されていますが、運用サイトの文字コードに合せて変換保存して下さい。)
なお、セキュリティの関係上、ファイル名は変更することをお勧めします。
}}
(2)xoops_trust_path/modules/d3diary/xxxx.txt
MT形式のテキストデータを、d3diary フォルダに置きます。 テキストデータ内の記事の投稿者名と、インポートするxoopsのユーザー名が合致する場合のみ、インポートされます。 もし、 ユーザー名が変わる場合は、テキストデータの投稿者名部分(AUTHOR: ○○)を予めすべて置き換えておく必要があります。
既知の不具合として、ファイル最初の1件目のデータを読み取れません。 お手数ですが、テキストファイルの1件目のデータをコピーし、2件目に挿入したテキストファイルを作ってください。 記事選択の際には、2件目のほうを選択してください。
(3)テンプレート _custom_mt2_d3diary.html
Altsysの「テンプレート管理」-「カスタムテンプレート」で、以下のコードを「_custom_mt2_d3diary.html」として作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | |
4、インポートの実行
- 管理者でログインする
- STEP0:xoops_root_path/modules/(d3diary)/index.php?page=import_mtにアクセスする。
(d3diary)の部分はインストールフォルダ名に変更します。
- 「一度にインポートする記事件数」を選択します。
大量の記事を一度にインポートすると、メモリ不足になったりサーバーに負荷をかけてしまいます。通常は50~100件程度に抑えて実行してゆくことをお勧めします。
- コメントにd3forumコメント統合が選択されている場合は、フォーラム名称とforum_idを確認します。
- 「送信」ボタンを押します。
- STEP1:取り込む記事にチェックを入れて「送信」ボタンを押す。
- 全記事一度に取り込む場合は、全選択/解除チェックを活用してください。
記事数にもよりますが、かなりの時間がかかる場合があります。
- STEP2:結果を確認する。
- インポートした記事群のbid値、タイトルが表示されます。
- 「送信」を押すと、STEP0に戻り、選択した記事数の次回分のインポートに進みます。
- 別ウインドウを開くなどして、インポート状態を確認します。
d3diaryの各記事のカテゴリーは1つしか選べないため、後で記事毎にカテゴリを選択しなおす必要があります。
- ファイルを削除する
5、開発環境
以下の環境で確認しました。 他の環境では動作しない場合もあるかもしれません、ご容赦下さい。
- CentOS-5.4 + Apache-2.2.3
- php 5.1.6
- mysql 5.0.77
- Xoops Cube Legacy 2.1.6 および HD1.0.3
- d3diary ver-0.10 / ver-0.12
- エクスポート元ブログ:ココログ、Biglobe(ウエブリブログ)
実体ページ:inc/import_mt2d3diary





