تضمين تعليقات Discourse على موقع آخر عبر Javascript

حاولت تطبيق هذا اليوم ولكن هناك بعض المشاكل بالنسبة لي:

  • في منشور المنتدى، يتم تحويل عنوان URL المشتق (من discourseEmbedUrl؟) إلى أحرف صغيرة، مما يؤدي إلى كسر عناوين URL الحساسة لحالة الأحرف في الرابط الذي يلي النص “هذا موضوع مناقشة مصاحب للمدخل الأصلي على …”.
  • عند تحميل الصفحة لأول مرة، يعرض التضمين “جارٍ تحميل المناقشة…” ويتوقف. عند تحميل الصفحة للمرة الثانية، يعمل كل شيء.
  • تقليب الصفحات: عند تحميل الإطار المضمن (iframe)، سيكون له ارتفاع افتراضي، ولكن إذا لم يتم العثور على تعليقات، فإن الارتفاع يعود ليظهر سطرًا واحدًا فقط مع “بدء المناقشة”. هذا يجعل خطأ “تحميل المناقشة” أسوأ، لأنه يحتفظ بارتفاع عمودي كبير.
  • سيكون من الجيد لو فضلت البيانات التي تم كشطها من الوالد (parent) للتضمين علامة meta بدلاً من تحويل الصفحة بأكملها إلى نص، أفترض أن هذا سلوك عام لـ discourse.

كانت أكبر مفاجأة هي معرفة أنه في كل مرة تزور فيها عنوان URL مع تضمين، يتم إنشاء موضوع جديد. هذا في OP:

الحل الوحيد الذي يمكنني التفكير فيه هو حل غير أنيق، يعتمد على SSR/التخزين المؤقت قصير المدى لتنبيه نقطة نهاية التضمين:

لذا أعتقد أن المنطق سيكون:

  1. تحقق من $discourse/embed/info?embed_url=$link

  2. إذا كان الموضوع موجودًا، فاعرض التضمين كالمعتاد.

  3. إذا لم يكن كذلك، فاعرض زر “بدء محادثة” يربط بـ $discourse/new-topic?subject=$link.

هل سينجح ذلك، أم أن هناك ارتباطًا آخر يحتاج إلى إجرائه؟