هل يجب إغلاق المواضيع الحالية القديمة عن X؟

مرحباً،

لقد قمت بترحيل منتدى من XenForo إلى Discourse، والآن هناك العديد من المشاركات القديمة التي أود إغلاقها. هل هناك طريقة لقول “إغلاق جميع المواضيع الأقدم من x أشهر”؟ لقد قمت بالفعل بتعيين هذا في الفئة، ولكنه يعمل فقط للمواضيع الجديدة.

إعجابَين (2)

يمكنك تجربة استخدام هذا الإعداد في إعدادات الفئة:

لست متأكدًا مما إذا كان سيغلق الأمور بأثر رجعي ولكنه يستحق المحاولة.

فكرتي الأخرى كانت إجراء تصفية متقدمة وتعيين تاريخ “قبل”:

من هناك يمكنك استخدام إجراءات جماعية على المواضيع التي تظهر.

4 إعجابات

يمكنك إغلاق المواضيع بشكل جماعي باستخدام Performing bulk actions as a moderator
ولكن اعتمادًا على عدد المواضيع التي تريد إغلاقها، قد يكون Administrative Bulk Operations خيارًا أفضل.

7 إعجابات

نعم، سيكون هناك شيء مشابه مرتبط، كيف يمكنني تضييق نطاقه إلى فئة واحدة؟

إعجابَين (2)

يمكنك العثور على معرّف الفئة، ثم استخدامه كشرط إضافي في الأمر. على سبيل المثال، أغلق جميع المواضيع المفتوحة في فئة “عامة” التي تم إنشاؤها قبل 24 سبتمبر:

cat_id = Category.find_by_slug('general').id
Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).find_each do |topic|
  topic.update_status('closed', true, Discourse.system_user)
end

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

Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).count
4 إعجابات

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