هذا رائع، @angus. شكرًا جزيلاً لك.
فيديو دائمًا أمر لطيف—أنا مؤيد تمامًا لجعل الأمور بسيطة قدر الإمكان، لكنني لا أعتقد أنه ضروري للحصول على القيمة الأساسية من هذه الموارد التي جهزها @angus. هذه الموارد تمنحك الكود اللازم لتحقيق الهدف المحدد الذي تتناوله كل مورد (مثل إنشاء حقل مخصص للموضوع أو حقل مخصص للفئة). الفيديو على الأرجح سيكون مجرد @angus أو شخص آخر يشرح كيفية تنفيذ المورد، لكن هذا الأمر مباشر، ويمكننا بالتأكيد توضيحه هنا.
وللتوضيح، هذه الموارد ليست إضافات (plugins) تضيفها إلى موقعك ببساطة لتعمل فورًا وتخصّص المنتدى. بل إنها تمنحك بكفاءة الفهم اللازم لبرمجة حقولك المخصصة الخاصة بك ضمن إضافتك.
إليك كيف استخدمت هذه الموارد:
ستحتاج إلى إضافة اسم ونوع الحقل الذي تريده في config/settings. الكود في هذه الموارد يستخدم متغيرات مُعرَّفة هناك. لذا، في الواقع، لن تحتاج إلى تخصيص كبير للكود لجعله يعمل في إضافتك الخاصة بعد ذلك—المتغيرات في plugin.rb وفي أماكن أخرى تشير إلى config/settings، وعندها سيعمل كل شيء.
بعد تحديث config/settings، يمكنك ببساطة اتباع الكود وإضافته إلى إضافتك:
-
ابدأ بالكود الموجود في plugin.rb، وأضفه إلى ملف plugin.rb الخاص بإضافتك لإنشاء الحقل المخصص.
-
ثم انتقل إلى initializer (في assets/javascripts/discourse/[custom-field-initiliazer]) للحصول على الكود الذي سيقوم بتهيئة الحقل المخصص ويسمح بحفظه على الخادم.
-
ثم أنشئ النموذج في طبقة العرض (view layer) الذي سيكون المكان الذي يدخل فيه المستخدم (أو تطبيقك، إذا كان التطبيق يضيف الحقل تلقائيًا) قيمة الحقل المخصص، هنا (assets/discourse/connectors/[plugin-outlet-name]/[your special template].hbs).
-
لقد قام @angus بإعداد هذه العناصر بحيث يمكنك إضافة نماذج الحقول المخصصة في منفذ إضافي (plugin outlet) سيتم إدراجه في قالب Discourse. إعدادات هذا النموذج موجودة هنا (assets/javascripts/discourse/lib/[custom-field-name].js.es6)، لذا من المرجح أنك تريد تخصيصها أيضًا لجعل النموذج يعمل.
@angus، لا تتردد في تصحيح أي شيء قلته هنا.
بمجرد أن اكتسبت فهمًا جيدًا لإعداد الحقل المخصص باتباع الخطوات أعلاه، بدأت في تخصيص الأمور بشكل أكبر قليلًا (على سبيل المثال، الإبداع أكثر في طريقة عمل النموذج)، لكن هذا كان نقطة انطلاق مفيدة للغاية أنقذتني ساعات من العمل.
بعد الانتهاء من ذلك، كانت لدي بعض الأسئلة (كما سألته سابقًا)، لكن الحصول على ردود في Development يبدو الطريقة الأكثر فائدة للمضي قدمًا في الأمور من هناك.