إنشاء حقول مخصصة متعددة لموضوع

مرحباً،

كنت أتساءل عما إذا كان أي شخص قد أنشأ حقولاً مخصصة متعددة لموضوع؟ لقد تمكنت من استخدام هذا المكون الإضافي بنجاح لإنشاء حقل مخصص واحد: GitHub - pavilionedu/discourse-topic-custom-fields: Discourse plugin showing how to add custom fields to Discourse topics

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

شكراً!

مرحباً،
يسعدني مساعدتك. لقد قمت مؤخرًا بإنشاء إضافة استخدمت فيها حقل موضوع مخصص (Discourse Chain Topics Plugin).

في إضافتي، قمت بإنشاء حقلين إضافيين لكل موضوع من نوع عدد صحيح. وبالمثل، يمكنك إضافة أكبر عدد تريده من الحقول. في النهاية، حقول الموضوع/المستخدم المخصصة هي كائن JSON حيث سيكون كل حقل تضيفه مفتاحًا/قيمة في كائن JSON. حيث المفتاح هو اسم الحقل والقيمة هي القيمة.

المثال الذي ذكرته أعلاه (والذي ساعدني أيضًا) تم بناؤه بحيث تضيف حقلًا إضافيًا في لوحة الإدارة، حيث تختار نوعه واسمه. ومع ذلك، لا يلزم بالضرورة ربط الحقول الإضافية بلوحة الإدارة. وبالمثل، يمكنك إضافة أكبر عدد تريده من الحقول (لست متأكدًا من كيفية تأثير ذلك على الأداء).

أخيرًا، لا تتردد في الاتصال بي/مراسلتي للحصول على أي دعم تحتاجه. يمكنك أيضًا العثور على تفاصيل الاتصال الخاصة بي على https://ghassan.blog
أتمنى لك كل التوفيق.

3 إعجابات

مرحباً، كنت أواجه نفس المشكلة.. الآن اكتشفت كيفية تحقيق ذلك باستخدام حقول مخصصة متعددة!
بالإضافة إلى إعداد plugin.rb، ستحتاج أيضًا إلى ملفات فردية (مُهيئ JavaScript والقوالب .hbs و .hbr) لكل حقل!

يحتوي المكون الإضافي discourse-topic-custom-fields على مجلد يسمى
plugins/discourse-topic-custom-fields/assets/javascripts/discourse/initializers
في هذا المجلد لديك ملف يسمى: topic-custom-field-initializer.js.es6
لحقل واحد، يمكنك فقط تعديل هذا الملف، ولكن للحقول المتعددة، يجب أن يكون لديك ملفات أخرى مثل هذه،
topic-custom-field-url-initializer.js.es6 و topic-custom-field-price-initializer.js.es6
داخل كل ملف سيكون لديك 3 أسطر مع متغير api يستدعي طريقة registerConnectorClass، تحتاج إلى تغيير المعلمة الثانية وإضافة لاحقة للحصول على اسم حصري لكل فئة حقل في كل من الأسطر الثلاثة
لا تنس تغيير اسم التصدير في كل ملف (مباشرة بعد “exports default {…}”).

أيضًا، بالنسبة لملفات hbs و hbr، ستحتاج إلى إنشاء ملفات منفصلة لكل حقل أيضًا، ما عليك سوى نسخ ولصق نفس الملفات وإضافة لاحقة لكل اسم ملف، على سبيل المثال:

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