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

مرحباً بالجميع،

أخطط لهجرة مجتمع قائم (macscripter.net - مناقشات أتمتة نظام التشغيل Mac) مستضاف حالياً على FluxBB إلى Discourse. هذا المقال يبدو واعداً من حيث هجرة البيانات. ستكون المهمة كبيرة لأن لدي أكثر من 30,000 مستخدم و120 ألف منشور، لكنها تبدو قابلة للتنفيذ.

ومع ذلك، أريد الحفاظ على جميع الروابط الواردة. يُعد موقع macscripter.net مرجعاً هاماً لمجتمع أتمتة Apple. لدينا ما يقرب من 20 عاماً من المنشورات مع العديد من الإشارات إلى الموقع تظهر على مواقع أخرى وفي أرشيفات قوائم البريد الإلكتروني، ولا أريد أن أتسبب في تعطيلها.

أبحث عن طريقة لترجمة روابط منشورات FluxBB الواردة إلى منشورات Discourse المقابلة؟ لا أرى أي طريقة لتحقيق ذلك باستخدام Discourse الافتراضي، لذا أفترض أنني سأحتاج إلى إنشاء نوع من الإضافات التي تستجيب لروابط FluxBB /viewtopic.php?id=##### وتعيد التوجيه إلى رابط Discourse المناسب. إذا كان لدى أي شخص آخر خبرة في حل مثل هذه المشكلة، فسأكون سعيداً جداً لسماع كيف تعاملت معها.

أقدر أي اقتراحات.

تحياتي،
-مارك

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

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

إعجابَين (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)