alldritt
(Mark Alldritt)
1
みなさん、こんにちは。
現在、FluxBB でホストされている既存のコミュニティ(macscripter.net - Mac OS 自動化に関する議論)を Discourse へ移行する計画を立てています。データ移行に関しては、この記事 が有望そうです。ユーザー数が 3 万人以上、投稿数が 12 万件を超えるため大規模な作業にはなりますが、実現可能と思われます。
ただし、すべての外部からのリンクを維持したいと考えています。macscripter.net は Apple 自動化コミュニティにとって重要なリファレンスサイトです。約 20 年にわたる投稿があり、他のサイトやメーリングリストのアーカイブからもこのサイトへの言及が多数存在しており、それらを切断したくありません。
FluxBB の投稿リンクを対応する Discourse の投稿にマッピングする方法を探しています。標準の Discourse ではこれを達成する方法が見当たらないため、FluxBB の /viewtopic.php?id=##### リンクに応答し、適切な Discourse リンクへリダイレクトする何らかのプラグインを作成する必要があると考えています。もし同様の問題を解決した経験をお持ちの方がいれば、どのように対応したか教えていただければ幸いです。
ご提案をいただければ幸いです。
では、
-Mark
「いいね!」 1
pfaffman
(Jay Pfaffman)
2
ほとんどのインポートスクリプトは、リダイレクトを処理するパーマリンクを作成します。それがそうかどうかは、即座にはわかりません。もしそうでない場合は、他のスクリプトを参考にしてサンプルコードを確認してください。
「いいね!」 2
同じ質問があり、回答に少し困惑しています。私もかなりの量のFluxBBのインポートを検討しています。
実際、Discourseには「パーマリンク」という機能があります(https://meta.discourse.org/t/how-to-make-a-redirect-url-in-a-discourse-install/40973/4)。つまり、それらを作成することで、Discourseは「/viewtopic.php?id=((old topic id))」のようなFluxBBスタイルのURLを「/t/((new topic slug))/((new topic id))」にリダイレクトできるということでしょうか。トピック内の個々の投稿についても同様でしょうか。ユーザープロフィールのURLについても同様でしょうか。(そのため、多くのパーマリンクが必要になります)。パーマリンクのデータベーステーブルが見えます。
それは素晴らしい解決策のように思えますが、FluxBBインポーターはパーマリンクを作成していません。そのためのコードは見当たりません。実際、インポートスクリプトのいずれにも、それを行うためのコードは見当たりません(「Permalink」ActiveRecordモデルへの言及はありません)。
FluxBBインポーターをこれを行うように変更することに喜んで協力しますが、他のインポーターの例はありますか?
コードで見かける、これに類する唯一のものは、「LookupContainer」(https://github.com/discourse/discourse/blob/main/script/import_scripts/base/lookup_container.rb)が初期化され、古いIDとそれに対応する新しいIDをすべて保存していることです。これは、多数のPermalinkオブジェクトを作成するために使用できますか?
pfaffman
(Jay Pfaffman)
4
そうです。
vbulletinインポーター(また、answerhub、vanilla、mylittleforum、bbpress、drupalなども確認してください。おそらく大文字と小文字を区別してgrepしたか、何かあったのでしょう)を確認してください。これはimport_topics関数で実行されます(パーマリンクファイル関数は無視してください)。パーマリンクと、fluxbbのURLをあなたが作成したパーマリンクにマッピングするpermalink_normalizationを追加するコードが必要になります。
くそっ!君の言う通りだ。IDEの検索機能が私を騙していたようだ。実際には「Permalink」オブジェクトが大量に作成されている。だから、これをFluxBBインポートに追加することを検討するかもしれない。
@alldritt さん、あなたの大きなインポートはどうでしたか? macscripter.net はまだFluxBBを使っているようですが、うまくいかなかったようですね?
もしfluxbbインポーターがbbcodeをあまりうまく変換していないことに気づいたら、それに対する様々な修正に取り組んでいます。プルリクエスト進行中。
これらの議論の間には、興味深い(そして厄介な)重複がある。FluxBBは、別の投稿にIDでリンクするために [post=123] の形式のbbcodeをサポートしている(ソースのFluxBBシステムの古い投稿IDを参照)。これらのIDをリダイレクトするソリューションがあれば、それに対処しやすくなるだろう。
「いいね!」 1
pfaffman
(Jay Pfaffman)
6
そうはなりません。パーマリンクは外部からのリンクにのみ機能し、内部リンクには機能しません。これらの内部リンクをDiscourseの引用に書き換える何かを記述する必要があります。そのための例もいくつかあります。
alldritt
(Mark Alldritt)
7
このトピックを復活させてくれてありがとう!
数回インポートを試みましたが、諦めました。時が経ち、M1 Macに移行したことで、Discourseのテストベッドを失い、再作成する時間がありませんでした。時間があれば、このプロジェクトに戻るつもりです。既存のリンクのリダイレクトを処理することが、私が苦労していた点でした。BBCodeがすべて正しく変換されたか確認するところまで到達していませんでした。変換すべき投稿が13万件以上あり、確認するのは気が遠くなるような作業です。
それでは、お役に立てれば幸いです。昨日、FluxBBインポーターに create_permlinks 機能を実装する作業をしていました。
現在、これは私のWIP PRにあります。*「Add Permalink creation logic to FluxBB importer」*コミットを、このリストの最後に参照してください。すべてをいつかマージしたいと思っています。おそらく、異なる順序になるでしょう(現在、この基本的なPRのレビューを待っています。これは開始点となります)。
これにより、4種類のFluxBB URLに対するリダイレクトが作成されます。
profile.php?id=<user id>
viewtopic.php?pid=<post id>
viewtopic.php?id=<topic id>
viewforum.php?id=<forum id>
これら4つで、人々が維持したいと思っているリンクはすべてカバーできると思います。どう思いますか?
FluxBBの特別な内部リンクの話題に戻ります。
これらを新しいDiscourse内の内部リンクとして維持しようとは考えていませんでした。怠惰な解決策:古いFluxBBフォーラムのURL(完全なURL、つまり外部リンク)にリンクされ、これらのパーマリンクのおかげで、ユーザーは新しいDiscourseの正しい場所にリダイレクトされます。
pfaffman
(Jay Pfaffman)
9
あなたの怠惰な解決策はうまくいくかもしれません。内部リンクの書き換えの例を見つけることができますが、怠惰でも良いのです。
「いいね!」 1