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

