مدخل الموضوع مثل إضافة للوسوم

مرحباً، أنا أعمل على إضافة Discourse الأولى لي.

الفكرة

نريد تعديل سلوك روابط الوسوم قليلاً، بحيث عند النقر على وسم في أي مكان داخل Discourse، بدلاً من الانتقال مباشرة إليه، تظهر خياران: رابط الوسم العادي (forum.com/tag/tag-name) أو صفحة خارجية ذات صلة نختارها (something.site.com/some-name). سيظهر هذا الخيار فقط للوسوم الموجودة في القائمة.

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

# مصفوفة Ruby من الكائنات
array = [
  {forum_tag: "discourse", external_slug: "discourse"},
  {forum_tag: "dc", external_slug: "discourse"},
  {forum_tag: "xenforo", external_slug: "xenforo"},
  {forum_tag: "xf", external_slug: "xenforo"}
]

# أو

array.to_json
=> "[{\"forum_tag\":\"discourse\",\"external_slug\":\"discourse\"},{\"forum_tag\":\"dc\",\"external_slug\":\"discourse\"},{\"forum_tag\":\"xenforo\",\"external_slug\":\"xenforo\"},{\"forum_tag\":\"xf\",\"external_slug\":\"xenforo\"}]"

نريد بشكل أساسي خيار العرض كما يحدث عند النقر على عدد replies في صفحة المنتدى الرئيسية:

أفكاري

وجدت طريقتين في واجهة برمجة تطبيقات Discourse تتعلق بالوسوم:

  1. addTagsHtmlCallback - في هذه الحالة، سأحتاج إلى تعيين topic.tags إلى مصفوفة فارغة مباشرة بعد تعيين قيمتها لمتغير آخر. بهذه الطريقة سأمنع عرض tags وأتمكن من كتابة كودي المخصص.

  2. replaceTagRenderer - الثانية تسمح لي بتغيير عرض tag، وهو ما لا يبدو خادعاً مثل الطريقة الأولى.

ومع ذلك، لاحظ أنه في كلتا الحالتين يجب أن أرجع نصًا raw. بناءً على ما وجدته، لا يمكنني كتابة وتجميع قالب Ember يدوياً. بالتأكيد يمكنني مجرد عرض روابط مخصصة وكتابة دالة بسيطة باستخدام jQuery ووضعها في جذر app/assets/javascripts، لكن هذا حل مختلف تماماً مقارنة بكود Discourse.

هل أنا على المسار الصحيح؟ أي مساعدة ستكون محل تقدير كبير.

5 إعجابات

لأي شخص مهتم، يسعدني الإعلان عن الإصدار الأول من ملحقي!

أتطلع إلى ملاحظاتكم!

3 إعجابات

لجميع المهتمين، أنصحكم بمراجعة آخر التغييرات، ولا سيما:

يومٌ جيد … للجميع؟!

:smiling_imp:

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

أحسنت يا @Eiji!


نأمل في استخدام هذا الملحق على Devtalk… إذا كان أي شخص خبيرًا في ملحقات Discourse، هل يمكنك إلقاء نظرة لمعرفة ما إذا كان يمكن إجراء أي تحسينات، من فضلك؟ سنقدر ذلك كثيرًا :blush:

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