مع تزايد طموح الثيمات، كنا نبحث عن طرق للسماح لها بالتلاعب بالسلوك الأساسي الخاص بالخادم. على الرغم من أنها لن تحصل أبدًا على نفس مستوى التحكم الذي تتمتع به الإضافات (plugins)، يمكننا توفير بعض نقاط الربط (hooks) المحددة مسبقًا لكي تتلاعب بها الثيمات.
نقدم لكم: مُعدِّلات الثيمات ![]()
يتم تحديدها باستخدام المفتاح modifiers في ملف about.json الخاص بالثيم الخاص بك.
للحصول على قائمة محدثة بنسبة 100% بالمُعدِّلات، تحقق من مخطط قاعدة البيانات في أسفل theme_modifier_set.rb، ولكن إليك ملخص سريع لما لدينا حتى الآن:
-
serialize_topic_excerptsقيمة منطقية (boolean) (الافتراضي خطأ) - قم دائمًا بتضمين المقتطفات عند تسلسل قوائم المواضيع. -
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.

