ترحيل من FluxBB مع الحفاظ على الروابط الواردة

Hello everyone,

I’m planning a migration of an existing community (macscripter.net - Mac OS Automation discussions) hosted with FluxBB to Discourse. This article looks promising in terms of migrating the data. Its going to be a big job as I have over 30,000 users, and 120K posts but it seems doable.

However, I want to preserve all the incoming links. macscripter.net is a significant reference for the Apple automation community. We’ve got almost 20 years of posts with a lot of references to the site appearing on other sites and in mailing list archives which I don’t want to break.

I’m looking for a way to translating incoming FluxBB post links to corresponding Discourse posts? I don’t see any way to accomplish this with stock Discourse so I’m presuming I’ll need to create some sort of plugin that responds to FluxBB’s /viewtopic.php?id=##### links and redirects to the appropriate Discourse link. If anyone else has experience solving this kind of problem, I would love to hear how you approached it.

I appreciate any suggestions.

Cheers
-Mark

إعجاب واحد (1)

Most import scripts create permalinks that handle the redirects. I don’t know offhand if they one does. If not, you can look at one of the others for example code.

إعجابَين (2)

لدي نفس السؤال، وأنا مرتبك بعض الشيء بشأن الإجابة. أنا أيضًا أتطلع إلى إجراء استيراد كبير لـ FluxBB.

أرى أن هناك ميزة في Discourse تسمى “Permalinks” (How to make a redirect URL in a Discourse install? - #4 by cpradio) ، لذا نقول إنه من خلال إنشاء هذه الأشياء، يمكن لـ Discourse أخذ عنوان URL بأسلوب FluxBB مثل “/viewtopic.php?id=((old topic id))” وإعادة توجيهه إلى “/t/((new topic slug))/((new topic id))”. ربما بالمثل بالنسبة للمشاركات الفردية في موضوع؟ وبالمثل لعناوين URL لملفات تعريف المستخدمين. (لذلك سنحتاج إلى العديد من الروابط الدائمة). أرى جدول قاعدة البيانات للروابط الدائمة.

يبدو هذا حلاً رائعًا، لكن مستورد FluxBB لا يقوم بإنشاء أي روابط دائمة. لا يمكنني رؤية أي رمز لذلك. في الواقع، لا يمكنني رؤية أي رمز في أي من نصوص الاستيراد البرمجية للقيام بذلك (لا يوجد ذكر لنموذج ActiveRecord “Permalink”).

سأكون سعيدًا بالعمل على تعديل مستورد FluxBB للقيام بذلك، ولكن هل هناك مثال في أحد المستوردات الأخرى؟

الشيء الوحيد الذي أراه في الكود في هذا الصدد هو تهيئة “LookupContainer” وتخزين جميع المعرفات القديمة والمعرفات الجديدة المقابلة لها. هل يمكن استخدام هذا لإنشاء العديد من كائنات Permalink؟

صحيح.

تحقق من مستورد vbulletin (ولكن أيضًا answerhub، vanilla، mylittleforum، bbpress، drupal لبعض الآخرين - ربما قمت بالبحث مع حساسية لحالة الأحرف أو شيء من هذا القبيل)، والذي يقوم بذلك في دالة import_topics (تجاهل دالة ملف الرابط الدائم). ستحتاج إلى كود يضيف الرابط الدائم و permalink_normalization الذي يربط عنوان URL الخاص بـ fluxbb بأي رابط دائم قمت بإنشائه.

بح! أنت على حق. كانت أداة البحث في بيئة التطوير المتكاملة الخاصة بي تخدعني. في الواقع، هناك الكثير من الأمثلة على إنشاء كائنات “Permalink”. لذا ربما سأنظر في إضافة هذا إلى استيراد FluxBB.

أنا فضولي لمعرفة كيف سار استيرادك الكبير يا @alldritt. حسنًا، يبدو أن macscيتر.net لا يزال على FluxBB، لذا لم يكن جيدًا جدًا؟ :slight_smile: إذا لاحظت أن مستورد FluxBB لا يحول bbcode بشكل جيد جدًا، فقد كنت أعمل على إصلاحات مختلفة لذلك: طلب سحب قيد التنفيذ.

هناك تداخل مثير للاهتمام (ومحرج) بين هذه المناقشات، لأن FluxBB يدعم bbcode بالشكل [post=123] للربط بمنشور آخر حسب المعرف (بالإشارة إلى معرفات المنشورات القديمة في نظام FluxBB المصدر). سيسهل التعامل مع ذلك إذا كان لدينا حل لإعادة توجيه هذه المعرفات.

إعجاب واحد (1)

لن يحدث ذلك. الروابط الدائمة تعمل فقط للروابط الواردة، وليس الداخلية. ستحتاج إلى كتابة شيء لإعادة كتابة تلك الروابط الداخلية كـ Discourse quotes. هناك أمثلة على ذلك أيضًا.

شكراً لإحياء هذا الموضوع!

لقد قمت ببعض المحاولات للتحويل واستسلمت. بمرور الوقت، ومع انتقالي إلى جهاز Mac M1، فقدت بيئة اختبار Discourse الخاصة بي ولم أقم بإعادة إنشائها أبدًا. آمل أن أعود إلى هذا المشروع بمجرد أن يتوفر لدي بعض الوقت. كان التعامل مع إعادة توجيه الروابط الموجودة جزءًا كنت أواجه صعوبة فيه. لم أقم بالتحقق من ترجمة كل BBCode بشكل صحيح. لدي أكثر من 130 ألف مشاركة للتحويل وهو أمر شاق للتحقق منه.

نأمل أن يكون هذا مفيدًا لك. بالأمس كنت أقوم ببعض العمل لإضافة وظيفة create_permlinks إلى مستورد FluxBB.

في الوقت الحالي، هذا موجود في طلب سحب العمل قيد التقدم الخاص بي. انظر التزام * “إضافة منطق إنشاء الروابط الدائمة إلى مستورد FluxBB” * في نهاية هذه القائمة. آمل أن يتم دمج كل ذلك في وقت ما، ربما بترتيب مختلف (أنا حاليًا أنتظر شخصًا لمراجعة طلب السحب الأساسي هذا كنقطة بداية)

لذلك، هذا ينشئ عمليات إعادة توجيه لأربعة أنواع مختلفة من عناوين URL الخاصة بـ FluxBB.

  • profile.php?id=<user id>
  • viewtopic.php?pid=<post id>
  • viewtopic.php?id=<topic id>
  • viewforum.php?id=<forum id>

أعتقد أن هذه الأربعة تغطي كل ما يرغب الأشخاص في الحفاظ على الروابط العاملة إليه. ما رأيك؟


بالعودة إلى موضوع الروابط الداخلية الخاصة بـ FluxBB

لم أكن أحاول الاحتفاظ بها كروابط داخلية داخل discourse الجديد. حل كسول: ستربط هذه الروابط بعناوين URL القديمة لمنتديات fluxbb (كعناوين URL كاملة، وبالتالي روابط خارجية) والتي، بفضل هذه الروابط الدائمة، ستعيد توجيه المستخدم مرة أخرى إلى المكان الصحيح في discourse الجديد.

أعتقد أن حلك الكسول قد ينجح. يمكنك العثور على أمثلة لإعادة كتابة الروابط الداخلية إذا أردت، ولكن الكسل يمكن أن يكون جيدًا.

إعجاب واحد (1)