إصلاح الروابط الدائمة للإشارة إلى عنوان الموضوع وليس إلى أول مشاركة في الموضوع

بعد ترحيل مخصص، أشارت العديد من الروابط الدائمة إلى المنشور الأول في موضوع بدلاً من عنوان URL الخاص بالموضوع نفسه.

على سبيل المثال، الروابط الدائمة تشير إلى
https://forum.example.com/t/example-topic/123/1

بدلاً من
https://forum.example.com/t/example-topic/123


تحقق

يتأثر منتدى Discourse إذا كانت هناك سجلات لهذا الاستعلام SQL:

SELECT permalinks.*,
       posts.id,
       posts.topic_id,
       posts.post_number
FROM permalinks
         LEFT JOIN posts
                   ON posts.id = permalinks.post_id
WHERE permalinks.post_id IS NOT NULL
  AND posts.post_number = 1
LIMIT 20;

إصلاح سريع

يغير هذا الروابط الدائمة لتشير مباشرة إلى الموضوع، إذا كانت تشير في الأصل إلى المنشور الأول في الموضوع.

UPDATE permalinks
SET topic_id = posts.topic_id,
    post_id  = NULL
FROM posts
WHERE permalinks.post_id = posts.id
  AND permalinks.post_id IS NOT NULL
  AND posts.post_number = 1;

قد يكون هذا روتين تنظيف جيدًا لتشغيله في نهاية نصوص الترحيل.

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

كيف قمت بإنشاء الروابط الدائمة؟

على سبيل المثال، هنا discourse/script/import_scripts/vanilla_mysql.rb at main · discourse/discourse · GitHub يتحققون تحديدًا من رقم المنشور، إذا كان 1، فلن يتم تمرير المنشور (يُترك كـ NULL) وبالتالي لا ينبغي أن يشير الرابط الدائم إلى المنشور الأول.

إعجابَين (2)

لقد اتبعت نهجًا يعتمد على SQL للروابط الدائمة بناءً على بعض التعليمات البرمجية المشابهة لـ

… ولكن مع فقدان AND post_number <> 1 - لذلك كان هذا هو السبب.

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

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.