2: 2009-05-05 (火) 11:41:51 なーお |
現: - no date - |
- | * 習作:Movable Type形式の d3blogインポート [#c0ca336c] | |
| | | |
- | Movable Type 形式のブログデータを、d3blogにインポートしようと考えました。 私の場合は、niftyの「ココログ」でエクスポートしたMT形式データのインポートになります。 | |
- | | |
- | ** 1、参考:[[ MovableTypeのデータをWordPressに移行したい。>http://www.kowa.org/modules/pukiwiki/306.html]](のぶのぶXOOPS) [#q7bae4ba] | |
- | | |
- | xoopsモジュールでこの手のインポートが出来るブログモジュールとしてはwordpressMEがありまして、上記参考サイトからphpソースをダウンロードしてテストサイトでインポートまで行ってみたところ、これは見事にできました。 | |
- | | |
- | また、既にインポート済みのデータは上書きしないようになっているなど、運用中のwordpressMEへの追加インポートを考慮しているのが、ユーザーに優しいところですね。 | |
- | | |
- | なお、今回のphpソースは上記参考サイトのソースを元に、d3blogのソースを参考に手を入れて書いたものです。インポート済み記事やコメント、ト ラックバックなどは同様にスキップするようにしています。 ただ、コードの中身は使用メソッドがSQL文だったり、xoops_objectだったり一環 性がありませんがご容赦を。 | |
- | | |
- | ** 2、d3blogインポートの制約 [#hbbf3038] | |
- | | |
- | MT形式(ver3)データをd3blogに取り込む場合、以下の制約があります。 | |
- | | |
- | + MT形式(ver3)のコメントがタイトル無くスレッド構造でない制約 元々のMT形式テキストデータが、タイトルもスレッド構造を持ちません。 xoopsコメントにインポートする際には、最初のコメントのタイトルを (Re:投稿タイトル)として親コメントと扱い、以降のコメントをその親コメントへ繋げ、(Re^2)、(Re^3)・・ とすることとしています。 | |
- | + xoopsコメントを使う制約 d3blogでは、標準コメントシステムの「xoopsコメント」を使っています。 それ自体はOKなのですが、このコメントシステムにはゲスト投稿者の 「名前」入力欄が無く、元を辿るとDBに「cname」などというフィールドさえ無い、という最大の問題を抱えています。 | |
- | WordPressMEの場合は、モジュール側でコメント用のDBテーブルを持っていたため、問題ありませんでした。~ | |
- | この問題をクリアする方法として、以下の2つの方法が考えられます。 | |
- | ++ d3forumのコメント統合を使う | |
- | スクリプト中の以下の部分を編集し、d3blogのコメント統合設定を正しく行います。 | |
- | $use_d3forum_comment = false; // コメントをd3forumに直接取り込む場合、true | |
- | ++ xoopsコメントのままで、何とかする | |
- | 要は、MTデータの投稿者名を何とか表示すればよいのです。 今回は、本文の冒頭に、「名前 wrote:」 と追加する安直な方法にしました。 | |
- | + d3blogで記事カテゴリを複数選択できない制約 | |
- | ちょっと困ったことに、d3blogでは記事カテゴリを複数選択できません。 つまり、Movable Type形式の記事ではいくつか列挙されているカテゴリの一つしか保持できないことになります。 | |
- | 今回は、これまた安直に、成り行きで一つだけを生かす方式にしました。 多分、MT形式データの各記事の一番最後に書かれているカテゴリが有効になると思いますが、もしかしたらそうならないかも知れません。 | |
- | | |
- | ** 3、インポートの準備 [#v451ce5a] | |
- | | |
- | *** (1)xoops_trust_path/modules/d3blog/import.php [#y3555236] | |
- | | |
- | |&ref(import_0.4.zip); ver 0.4(EUC-JP)| | |
- | 解凍したファイルの5行目にMT形式ファイルのフルパスを加筆し、6行目にMT形式ファイルの文字コードを(2008-7-13修正)xoopsのデータベースの文字コードが EUC-JP以外なら変更して、 ファイル名「import.php」で&font(#ff0000){trust側の};d3blogフォルダに保存します。(本ファイルはEUC-JPで保存されていますが、運用サイトの文字コードに合せて変換保存して下さい。) | |
- | なお、セキュリティの関係上、ファイル名は変更することをお勧めします。 | |
- | | |
- | (2009/5/22追記) | |
- | 元のブログやMT形式データによっては、改行がHTMLの場合やただの改行の場合など、様々なようです。 | |
- | この場合、インポート後の各記事のオプション設定が、スクリプト280行目付近にありますので、必要に応じて編集します。 | |
- | | |
- | デフォルトでは、HTMLが有効としてあり、通常の改行コードでは改行が入りません。 | |
- | #code(php,280-){{ | |
- | $entry->setVar('cid', 1); | |
- | $entry->setVar('dohtml', 1); | |
- | $entry->setVar('dobr', 0); | |
- | $entry->setVar('doxcode', 1); | |
- | $entry->setVar('doimage', 1); | |
- | $entry->setVar('groups', '|0|'); | |
- | }} | |
- | | |
- | その場合はこの「dobr」オプションを「1」にします。 | |
- | | |
- | #code(php,280-){{ | |
- | $entry->setVar('cid', 1); | |
- | $entry->setVar('dohtml', 1); | |
- | $entry->setVar('dobr', 1); | |
- | $entry->setVar('doxcode', 1); | |
- | $entry->setVar('doimage', 1); | |
- | $entry->setVar('groups', '|0|'); | |
- | }} | |
- | | |
- | にしてやってみてください。 | |
- | なお、HTMLを無効にする場合は、上記 'dohtml' を「0」に変更すします。 | |
- | | |
- | *** (2)xoops_trust_path/modules/d3blog/xxxx.txt [#bc1adae7] | |
- | | |
- | MT形式のテキストデータを、d3blog フォルダに置きます。 テキストデータ内の記事の投稿者名と、インポートするxoopsのユーザー名が合致する場合のみ、インポートされます。 もし、 ユーザー名が変わる場合は、テキストデータの投稿者名部分(AUTHOR: ○○)を予めすべて置き換えておく必要があります。 | |
- | | |
- | *** (3)xoops_root_path/modules/d3blog/import.php [#if48335f] | |
- | | |
- | 次のコードを書いて、ファイル名「import.php」で&font(#ff0000){html側の};d3blogフォルダに保存します。 なお、セキュリティの関係上、ファイル名は変更することをお勧めします。変更した場合は、(1)の50行目付近「form」タグ内の記述も変更してください。 | |
- | | |
- | #code(php,1-){{ | |
- | <?php | |
- | require '../../mainfile.php' ; | |
- | if( ! defined( 'XOOPS_TRUST_PATH' ) ) die( 'set XOOPS_TRUST_PATH in mainfile.php' ) ; | |
- | | |
- | $mydirname = basename( dirname( __FILE__ ) ) ; | |
- | $mydirpath = dirname( __FILE__ ) ; | |
- | $mydirurl = XOOPS_URL.'/modules/'.$mydirname; | |
- | | |
- | require $mydirpath.'/mytrustdirname.php' ; // set $mytrustdirname | |
- | require XOOPS_TRUST_PATH.'/modules/'.$mytrustdirname.'/import.php' ; | |
- | ?> | |
- | }} | |
- | | |
- | #br | |
- | ** 4、インポートの実行 [#y38a8c01] | |
- | | |
- | + 管理者でログインする | |
- | + xoops_root_path/modules/d3blog/import.phpにアクセスする | |
- | + 「実行」ボタンを押して、処理を行う。 | |
- | 記事数にもよりますが、かなりの時間がかかる場合があります。 | |
- | + 結果を確認する | |
- | d3blogの各記事のカテゴリーは1つしか選べないため、記事毎にカテゴリを選択しなおす必要があります。 | |
- | + ファイルを削除する | |
- | | |
- | ** 5、開発環境 [#o0aba4ab] | |
- | | |
- | 以下の環境で確認しました。 他の環境では動作しない場合もあるかもしれません、ご容赦下さい。 | |
- | - Vine Linux 4.2-Apache1.3.37 | |
- | - php 5.2.3 | |
- | - mysql 5.0.27 | |
- | - Xoops Cube Legacy 2.1.4 および HD1.0.0 | |
- | - d3blog 1.02.3 | |
- | - エクスポート元ブログ:ココログ | |
- | | |
- | ** 6、改変履歴 [#n780257d] | |
- | | |
- | - 09年5月 4日 スクリプトの配布を、zip形式に変更。 | |
- | - 09年4月13日 ver0.4 コメントのd3forum統合コメントへの直接インポートに対応。 | |
- | - 08年7月13日 ver0.3 文字コード指定部分が間違っていたので、修正した。 | |
- | - 08年7月 5日 ver0.2 インポートファイルの文字コード指定部分を冒頭に変更した。 | |
- | - 08年6月29日 ver0.1 公開 | |
- | | |
- | ** 7、ライセンス [#d590ffde] | |
- | | |
- | ライセンス:GPL | |
- | | |
- | ** 8、バグレポート [#b237326b] | |
- | | |
- | バグを発見した方は、コメントでお知らせください。 また、自分でも目をそむけたくなるくらいの汚いソースです。 セキュリティーホールなど、発見された方もどうぞお知らせいただくか、改善案をご教示いただければ幸いです。 | |