مع تزايد طموح الثيمات، كنا نبحث عن طرق للسماح لها بالتلاعب بالسلوك الأساسي الخاص بالخادم. في حين أنه لن يُمنح أبدًا نفس مستوى التحكم الذي تتمتع به الإضافات (plugins)، يمكننا توفير بعض نقاط الربط المحددة مسبقًا ليتمكن الثيمات من التلاعب بها.
نقدم لكم: مُعدِّلات الثيمات ![]()
يتم تحديدها باستخدام المفتاح modifiers في ملف about.json الخاص بالثيم الخاص بك.
للحصول على قائمة مُحدَّثة بنسبة 100% من المُعدِّلات، تحقق من مخطط قاعدة البيانات في أسفل theme_modifier_set.rb، ولكن إليك ملخص سريع لما لدينا حتى الآن:
-
serialize_topic_excerptsقيمة منطقية (boolean) (الافتراضي false) - تضمين المقتطفات دائمًا عند تسلسل قوائم المواضيع -
csp_extensionsمصفوفة سلاسل نصية (string array) - إضافة توجيهات إلى CSP. يعمل بنفس طريقة طريقة إعداد الثيم القديمة “extend_content_security_policy”. ولكن تذكر، يتم السماح بوسوم\u003cscript src=\"\"\u003eالبسيطة تلقائيًا. -
svg_iconsمصفوفة سلاسل نصية (string array) - قائمة بالأيقونات التي يجب تضمينها في مجموعة الأيقونات الفرعية -
topic thumbnailsمصفوفة أبعاد (array of dimensions) - طلب دقة إضافية في مجموعة صور مصغرات المواضيع. لاحظ أنها تُنشأ بشكل غير متزامن، لذا يجب عليك الرجوع إلى الصورة الأصلية إذا لم يتم توفير الحجم الذي طلبته. مزيد من المعلومات في رسالة الالتزام (commit message) -
serialize_post_user_badgesمصفوفة سلاسل نصية (string array) - قائمة بأسماء الشارات (تطابق الإدخالات في جدول الشارات) لتسلسلها جنبًا إلى جنب مع بيانات المنشور. عند التكوين، يقوم النظام بتضمين شارات المستخدم المحددة مع كل منشور للعرض من جانب العميل.
أحد الثيمات التي تستخدم هذه النقاط الجديدة بكثافة هو Topic List Thumbnails - ألقِ نظرة على الكود لترى كيف يعمل.
المُعدِّلات المعتمدة على الإعدادات
يمكن أيضًا تكوين مُعدِّلات الثيم لسحب قيمتها من إعداد ثيم، مما يسمح لمشغلي الموقع بتجاوز سلوك المُعدِّل دون تعديل كود الثيم. لجعل مُعدِّل يعتمد على إعداد، استخدم هذا النحو في ملف about.json الخاص بك:
{
"modifiers": {
"modifier_name": {
"type": "setting",
"value": "setting_name"
}
}
}
على سبيل المثال، إذا كان لديك إعداد ثيم يسمى show_excerpts وتريد أن يتحكم في المُعدِّل serialize_topic_excerpts:
في settings.yml:
show_excerpts:
default: false
في about.json:
{
"modifiers": {
"serialize_topic_excerpts": {
"type": "setting",
"value": "show_excerpts"
}
}
}
عندما يتم تغيير إعداد show_excerpts، سيتم تحديث قيمة المُعدِّل تلقائيًا لتتطابق. يوفر هذا مرونة لمشغلي الموقع لتخصيص سلوك الثيم من خلال واجهة المشرف (admin UI).
يتم التحكم في إصدار هذه الوثيقة - اقترح التغييرات على github.

