مرحباً،
لقد قمت بترحيل منتدى من XenForo إلى Discourse، والآن هناك العديد من المشاركات القديمة التي أود إغلاقها. هل هناك طريقة لقول “إغلاق جميع المواضيع الأقدم من x أشهر”؟ لقد قمت بالفعل بتعيين هذا في الفئة، ولكنه يعمل فقط للمواضيع الجديدة.
مرحباً،
لقد قمت بترحيل منتدى من XenForo إلى Discourse، والآن هناك العديد من المشاركات القديمة التي أود إغلاقها. هل هناك طريقة لقول “إغلاق جميع المواضيع الأقدم من x أشهر”؟ لقد قمت بالفعل بتعيين هذا في الفئة، ولكنه يعمل فقط للمواضيع الجديدة.
يمكنك تجربة استخدام هذا الإعداد في إعدادات الفئة:
لست متأكدًا مما إذا كان سيغلق الأمور بأثر رجعي ولكنه يستحق المحاولة.
فكرتي الأخرى كانت إجراء تصفية متقدمة وتعيين تاريخ “قبل”:
من هناك يمكنك استخدام إجراءات جماعية على المواضيع التي تظهر.
يمكنك إغلاق المواضيع بشكل جماعي باستخدام Performing bulk actions as a moderator
ولكن اعتمادًا على عدد المواضيع التي تريد إغلاقها، قد يكون Administrative Bulk Operations خيارًا أفضل.
نعم، سيكون هناك شيء مشابه مرتبط، كيف يمكنني تضييق نطاقه إلى فئة واحدة؟
يمكنك العثور على معرّف الفئة، ثم استخدامه كشرط إضافي في الأمر. على سبيل المثال، أغلق جميع المواضيع المفتوحة في فئة “عامة” التي تم إنشاؤها قبل 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
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.