البرنامج التعليمي السابق: Developing Discourse Plugins - Part 2 - Connect to a plugin outlet
إعدادات الموقع
إذا قمت بزيارة /admin/site_settings في منصة Discourse لديك صلاحيات المسؤول عليها، سترى قائمة بإعدادات التكوين. بشكل افتراضي، نوفر ما نعتقد أنه أفضل الإعدادات لتثبيت Discourse، ولكننا نتفهم أيضًا أن الناس يريدون تعديل تثبيتاتهم لجعل منتداهم بالطريقة التي يريدونها تمامًا.
على الأرجح، ما لم يكن المكون الإضافي الخاص بك بسيطًا جدًا، ستحتاج إلى إضافة إعدادات يمكن لمستخدمي المكون الإضافي الخاص بك تغييرها واستخدامها لتكوين الوظائف. لحسن الحظ، هذا سهل جدًا للقيام به!
config/settings.yml
أول شيء ستحتاج إلى القيام به هو إنشاء config/settings.yml داخل مجلد المكون الإضافي الخاص بك. سيحدد هذا الملف جميع الإعدادات التي سيحتاجها المكون الإضافي الخاص بك. إليك ملف مثال:
plugins:
awesomeness_enabled:
default: true
client: true
awesomeness_max_volume:
default: 10
client: true
يجب أن يكون الملف بتنسيق YAML. يمكن أن يكون YAML صعبًا جدًا، لذا إذا واجه Discourse مشكلة في تحميل الإعدادات الخاصة بك، أقترح عليك محاولة التحقق من صحة ملف YAML الخاص بك باستخدام أداة مثل YAMLint.
سأشرح ملف المثال بالتفصيل. المستوى الأعلى هو plugins وهذا يخبر Discourse بأننا نريد أن تظهر هذه الإعدادات تحت “Plugins” (المكونات الإضافية) في إعدادات الموقع.
بعد ذلك، يتم تعريف إعدادين، awesomeness_enabled و awesomeness_max_volume. يستنتج Discourse نوع الإعدادات من القيمة الافتراضية، لذا فإن awesomeness_enabled هو قيمة منطقية (boolean) و awesomeness_max_volume هو رقم.
السطر client: true مهم لفهمه. يتكون Discourse من تطبيقين رئيسيين، واجهة برمجة التطبيقات (API) من جانب الخادم المكتوبة بلغة Ruby on Rails، وتطبيق جانب العميل المكتوب بلغة Ember.js. افتراضيًا، لا نعرض الإعدادات لتطبيق عميل Ember.js ما لم تقم بإضافة client: true. نقوم بذلك لأن بعض الإعدادات خاصة مثل مفاتيح واجهة برمجة التطبيقات (API keys) ويجب عدم إرسالها إلى المستخدمين النهائيين. بالإضافة إلى ذلك، إذا أرسلنا كل إعداد إلى العميل، فقد يكون ذلك عبئًا كبيرًا على المستخدمين النهائيين لتنزيله!
في مثالنا، نريد أن تكون كلتا الإعدادات متاحة في عالم JavaScript بالإضافة إلى عالم الخادم.
خطوة ثانية مهمة
قبل أن تتمكن من استخدام إعدادات الموقع المضافة حديثًا، تحتاج إلى إضافة ترجمات لها. نظرًا لأن Discourse يدعم العديد من اللغات، يجب أن يدعم أي نص تضيفه الترجمة إلى لغات أخرى.
لنقم بإنشاء ترجمات لإعداداتنا باللغة الإنجليزية:
config/locales/server.en.yml
en:
site_settings:
awesomeness_enabled: "Is this plugin awesome?"
awesomeness_max_volume: "What is the maximum volume possible?"
التسميات التي أضفناها في هذا الملف سيتم عرضها في قسم المسؤول. من الجيد أن تكون واضحًا قدر الإمكان بشأن ما ينجزه الإعداد.
الإعلان عن الإعداد كـ “الإعداد المُمكّن”
الآن بعد أن أصبح لدينا إعداد الموقع، يجب أن نخبر Discourse أنه هو الذي يقوم بتشغيل الميزات وإيقافها.
افتح ملف plugin.rb الخاص بك وأضف السطر التالي أسفل تعليقات البيانات الوصفية:
enabled_site_setting :awesomeness_enabled
تأكد من بدء جميع إعداداتك الأخرى بـ “awesomeness_” لكي يعمل زر الإعدادات في /admin/plugins بشكل صحيح.
الوصول إلى إعداداتك الجديدة
أولاً، ستحتاج إلى إعادة تشغيل خادم التطوير الخاص بك لكي تسري مفعول الإعدادات. بمجرد القيام بذلك، يجب أن تكون الإعدادات متاحة لكود الخادم والعميل.
نقوم تلقائيًا بحقن إعدادات الموقع في معظم كائنات JavaScript، لذا إذا كنت تُعرّف Component أو Controller أو Route أو View أو Model، فيجب أن تكون قادرًا على الوصول إلى إعداد الموقع ببساطة عن طريق استخدام this.siteSettings.awesomeness_enabled. في معظم قوالب handlebars، يجب أن تكون قادرًا أيضًا على قول {{siteSettings.awesomeness_enabled}} وسيتم عرض قيمة الإعداد.
لم نغطِ الكثير من محتوى Ruby في هذه السلسلة بعد، ولكن إذا كنت ترغب في الوصول إلى إعدادات الموقع في تطبيق Ruby، يمكنك القيام بذلك عبر: SiteSetting.awesomeness_enabled
الآن انطلق وأضف إعدادات مخصصة إلى المكونات الإضافية الخاصة بك!
المزيد في السلسلة
الجزء 1: أساسيات المكون الإضافي
الجزء 2: منافذ المكون الإضافي
الجزء 3: هذا الموضوع
الجزء 4: إعداد git
الجزء 5: واجهات المسؤول
الجزء 6: اختبارات القبول
الجزء 7: انشر المكون الإضافي الخاص بك
يتم التحكم في إصدار هذا المستند - اقترح تغييرات على github.




