يمكن أن يكون إنشاء ملحق (Plugin) في Discourse أمرًا بسيطًا للغاية بمجرد تعلم بعض التفاصيل الدقيقة. الهدف من هذا المنشور هو إنشاء هيكل أساسي للملحق وتعريفك بالأساسيات.
بيئة التطوير الخاصة بك
تأكد من تشغيل بيئة تطوير لـ Discourse على جهازك. أوصيك باستخدام دليل الإعداد المناسب والعودة إلى هنا عند الانتهاء.
plugin.rb
استخدم GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins · GitHub لإنشاء هيكل كامل لملحق Discourse في دليل الملحق الخاص بك
تم الآن تضمين الهيكل الأساسي في نواة Discourse، حيث سيؤدي الأمر
rake plugin:create[plugin-name]إلى إنشاء ملحق باستخدام الهيكل الأساسي.
عند بدء تشغيل Discourse، يبحث في دليل plugins عن مجلدات فرعية تحتوي على ملف plugin.rb. يتمتع ملف plugin.rb بغرضين: فهو يعمل كملف تعريف (Manifest) لملحقك يحتوي على المعلومات المطلوبة عنه، بما في ذلك: اسمه، ومعلومات الاتصال، ووصفه. والغرض الثاني هو تهيئة أي كود Ruby ضروري لتشغيل ملحقك.
في حالتنا، لن نضيف أي كود Ruby، لكننا نحتاج إلى ملف plugin.rb لا يزال. دعنا ننشئ الدليل basic-plugin مع الملف plugin.rb بداخله، بالمحتويات التالية:
basic-plugin/plugin.rb
# name: basic-plugin
# about: A super simple plugin to demonstrate how plugins work
# version: 0.0.1
# authors: Awesome Plugin Developer
# url: https://github.com/yourusername/basic-plugin
بمجرد إنشاء هذا الملف، يجب إعادة تشغيل الخادم المحلي الخاص بك، ويجب تحميل الملحق.
نقطة مهمة!
إذا كنت معتادًا على تطوير Rails العادي، فقد تلاحظ أن الملحق لا يكون بنفس السهولة عند إعادة التحميل. بشكل عام، عند إجراء تغييرات على ملحقك، يجب عليك Ctrl+c لإيقاف تشغيل الخادم، ثم تشغيله مرة أخرى باستخدام bin/dev.
لم يتم التقاط تغييراتي! 
أحيانًا لا يتم مسح ذاكرة التخزين المؤقت بالكامل، خاصة عند إنشاء ملفات جديدة أو حذف ملفات قديمة. للتغلب على هذه المشكلة، قم بإزالة مجلد tmp وقم بتشغيل Rails مرة أخرى. على جهاز Mac، يمكنك القيام بذلك بأمر واحد: rm -rf tmp; bin/dev.
التحقق من تحميل ملحقك
بمجرد إعادة تشغيل الخادم المحلي الخاص بك، قم بزيارة العنوان /admin/plugins (تأكد من تسجيل الدخول بحساب مشرف أولاً، حيث يمكن للمشرفين فقط رؤية سجل الملحق).
إذا نجح كل شيء، فيجب أن ترى ملحقك في القائمة:
تهانينا، لقد أنشأت ملحقك الأول!
دعنا نضيف بعض JavaScript
حاليًا، لا يقوم ملحقك بأي شيء. دعنا نضيف ملف JavaScript سيقوم بإظهار مربع تنبيه عندما يتم تحميل Discourse. سيكون هذا مزعجًا للغاية لأي مستخدم ولا يُنصح به كملحق فعلي، لكنه سيوضح كيفية إدراج JavaScript في تطبيقنا قيد التشغيل.
قم بإنشاء الملف التالي:
plugins/basic-plugin/assets/javascripts/discourse/initializers/alert.js
export default {
name: "alert",
initialize() {
alert("alert boxes are annoying!");
},
};
الآن إذا أعدت تشغيل الخادم المحلي الخاص بك، فيجب أن ترى عبارة “alert boxes are annoying!” تظهر على الشاشة. (إذا لم تفعل، انظر إلى العنوان “لم يتم التقاط تغييراتي” أعلاه).
دعنا نمر من خلال كيفية عمل هذا:
-
يتم تنفيذ ملفات JavaScript الموضوعة في
assets/javascripts/discourse/initializersتلقائيًا عند تحميل تطبيق Discourse. -
يصدر هذا الملف المحدد
exportكائنًا واحدًا، يحتوي علىnameووظيفةinitialize. -
يجب أن يكون
nameفريدًا، لذا قمت بتسميتهalert. -
يتم استدعاء وظيفة
initialize()عند تحميل التطبيق. في حالتنا، كل ما تفعله هو تنفيذ كودalert()الخاص بنا.
أنت الآن مطور ملحق رسمي لـ Discourse!
المزيد في السلسلة
الجزء 1: هذا الموضوع
الجزء 2: منافذ الملحق
الجزء 3: إعدادات الموقع
الجزء 4: إعداد git
الجزء 5: واجهات المشرف
الجزء 6: اختبارات القبول
الجزء 7: نشر ملحقك
هذا الملف خاضع للتحكم في الإصدارات - اقترح التغييرات على github.

