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

مثل @codinghorror، أستخدم أيضًا تكامل Discourse هذا مع Ghost باستخدام الإعداد الافتراضي الذي يستخدم عنوان URL المطلق كـ discourseEmbedURL.

منذ أسبوع تقريبًا، قررت تغيير توجيه مدونة Ghost الخاصة بي بحيث يتم إعادة توجيه المنشورات بعناوين URL مثل https://engineerworkshop.com/2020/02/20/how-to-set-up-wireguard-on-a-raspberry-pi/ إلى https://engineerworkshop.com/blog/how-to-set-up-wireguard-on-a-raspberry-pi/, مع اعتبار https://engineerworkshop.com/blog/how-to-set-up-wireguard-on-a-raspberry-pi/ الرابط الدائم الجديد.

المشكلة

يمكنك على الأرجح توقع المشكلة التي يخلقها هذا: يتم تعيين discourseEmbedURL إلى عنوان URL القديم، وبالتالي عند استدعاء نص التضمين، الذي أصبح الآن يحتوي على عنوان URL مختلف، يتم إنشاء منشور تعليق جديد في Discourse.

محاولة الحل (التي فشلت)

الآن، قبل هذا، كنت قد توقعت هذه المشكلة، لذا اعتقدت أنني كنت ذكيًا باستخدام نمط regex مع remap لإصلاح عناوين URL: rake posts:remap["[0-9]{4}\/[0-9]{2}\/[0-9]{2}","blog",regex]

على الرغم من أن ذلك عمل “نوعًا ما”، إلا أنه في كل مكان تم استخدام عنوان URL فيه في منشور التعليق الأصلي في Discourse، للأسف، عند تحميل منشورات المدونة، تم إنشاء مواضيع تعليقات جديدة في Discourse.

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

سؤالي

أفترض أن سبب عدم عمل محاولة التصحيح باستخدام regex هو أن موضوع Discourse مرتبط somehow بعنوان URL في الخلفية. (أقر بسهولة بجهلي بهيكل بيانات Discourse). للحصول على معرفة مستقبلية، ولأي شخص آخر قد يحاول القيام بنفس الشيء في المستقبل، هل هناك طريقة لإعادة تعيين موضوع Discourse إلى عنوان URL جديد لمنشور مدونة؟

شكرًا مقدّمًا!

5 إعجابات