تحديث: أعتقد أنني نجحت (معظمها) في جعل الأمر يعمل (!). الآن، سيظهر هذا “أحدث” المواضيع المطابقة لقيمة الحقل المخصص. (كانت طريقة #latest هي الأقرب التي استطعت العثور عليها والتي تبدو منطقية في ملف config/routes.rb).
من المهم، في الواقع، تحميل جميع المواضيع التي تحتوي على قيمة الحقل المخصص fun_level ذات الصلة إلى الصفحة. هل هناك شيء آخر أحتاج إلى فعله لجعل ذلك يحدث؟
إليك الكود لملاحظاتي الخاصة، ولعلّه يكون مفيدًا للآخرين:
–لقد أنشأت الحقل المخصص :fun_level. ثم:
plugin.rb
TopicQuery.add_custom_filter(:fun_level) do |topics, query|
if query.options[:fun_level]
topics.where("topics.id in (
SELECT topic_id FROM topic_custom_fields
WHERE (name = 'fun_level')
AND value = '#{query.options[:fun_level]}'
)")
else
topics
end
end
/connectors/my-plugin-outlet/fun-level.js.es6 (ملف جافا سكريبت يتم تفعيله عند الانتقال إلى الصفحة ذات الصلة. لذا يمكن وضع هذا الكود في ملف تهيئة أو في موصل يربط بمخرج إضافة. أنا أحب استخدام الكود الذي يرافق موصلًا، لذا سأستخدم مكون الإعداد هنا):
const ajax = require('discourse/lib/ajax')
export default {
setupComponent(args, component) {
let parsedResultArray = []
var endPoint = '/latest?fun_level=' + funLevel //funLevel = متغير يحتوي على القيمة من المعاملات
ajax(endPoint).then(function (result) {
console.log('topic list result for topics matching that fun level = ')
console.log(result.topic_list.topics)
//حلل النتائج، وأضفها إلى parsedResultArray
component.set('showTopics', parsedResultArray
})
}
}
الآن، سيتم تحميل المواضيع إلى {{topic-list topics=showTopics}} الموجود في المكون المقابل، والذي تم وضعه في القالب عبر my-plugin-outlet.
هذه خطوة كبيرة إلى الأمام. شكرًا جزيلاً، @angus.