Xenforo 移行:既存のトピックおよび投稿 ID

皆さん、こんにちは。

約25万件の投稿がある既存の XenForo フォーラムを持っています。

数日前に、Discourse へのインポートを試みました。

まず、スクリプト開発に関わった皆さんにお祝い申し上げます。これまで行ったフォーラムソフトウェア間のインポートの中で、最もトラブルの少ないものの一つでした。

とは言え、いくつか質問があります。

まず断っておきますが、Ruby は私にとって全くの専門外ですので、翻訳上の問題があったり、明らかな見落としがあったりする可能性が非常に高いです。もしそうであればお詫び申し上げます。

インポート中(あるいはインポート後)に、以前のフォーラム(今回は XenForo)のトピックIDや投稿IDがどこかに保存されているか、新しい Discourse の ID と何らかの形でリンクされているかどうかを確認したいと考えています。

検索している中で、vBulletin についてはそのような記載をいくつか見かけました。XF(そして最終的には base)のインポートスクリプトを読んでみると、import_ids が頻繁に言及されていますが、それらはすべてインポート処理中に一時的に使用され、その後破棄される変数のように見えます(ただし、繰り返しになりますが、Ruby の専門家ではないので、この理解が全くの誤りである可能性もあります)。

私のフォーラムは長年存続しており、PunBB、IPS、VB、そして現在 XenForo と、いくつかのバージョンを経てきました。しかし、これまでのほとんどの移行では、いくつかのシンプルなカスタムスクリプトを通じて、古いスレッドなどへのリンクを有効に保つことができました(もちろん、その簡便さの代償として、それらの移行のほとんどは非常に苦痛でした)。今回は同じことをやりたいのですが、古いトピックから新しいトピックへのマッピング、または古いトピック ID を参照するデータベースフィールドが不足しているようです。

少なくとも私はそう思っていますが、もしかしたら存在するのかもしれませんが、見つけられませんでした :slight_smile:

もし何か見つけたら、広くコミュニティに還元する用意はあります。ただ、正しい方向へ導くための道しるべが必要です。

ありがとうございます。

古い ID は PostCustomFields にあり、インポーターの一部として作成されます。

Permalinks を作成する他のインポーターを参照してください。Vbulletin のインポーターがその例です。もう一つ注意すべき点は「パーマリンクの正規化」です。これはパーマリンクのマッチングを行う前に適用される正規表現です。これにより、‘/oldtopic/<topic_id>’ のようなパーマリンクを作成し、それを ‘/topic/blah.php?xdfj=<topic_id>#93m3lsdfj’ に正規表現でマッチさせるような処理が可能になります。