أصبحت السمات ومكونات السمات أكثر قوة بشكل مطرد، ويصبح المطورون أكثر طموحًا. لتسهيل الأمور على المطورين، يمكن للسمات الآن تقسيم ملفات SCSS الخاصة بها إلى ملفات متعددة.
عند إنشاء سمة جديدة باستخدام أداة سطر الأوامر للسمات (theme CLI)، أو مشاركة سمة على github، ما عليك سوى إنشاء مجلد جديد يسمى scss. املأه بملفات .scss الخاصة بك، باتباع أي هيكل مجلد، وستكون جميع الملفات متاحة لك للاستيراد في أقسام SCSS المشتركة / لسطح المكتب / للجوال في السمة الخاصة بك.
على سبيل المثال، إذا كنت تريد أن يكون متغير مشترك متاحًا لكل من SCSS للجوال وسطح المكتب، يمكنك القيام بشيء كهذا:
scss/my-folder/variables.scss
$favourite-color = red;
desktop/desktop.scss
@import "my-folder/variables";
body {
background-color: $favourite-color;
}
mobile/mobile.scss
@import "my-folder/variables";
body {
color: $favourite-color;
}
تمت إضافة هذه الميزة في الإصدار v2.3.0.beta8، لذا لا تستخدم هذه الميزات بعد إذا كنت بحاجة إلى الحفاظ على التوافق مع الإصدارات الأقدم من Discourse. يمكنك استخدام معلمة minimum_discourse_version في about.json لضمان عدم استخدام المكون الخاص بك على إصدار سابق.
يتم التحكم في إصدار هذه الوثيقة - اقترح تغييرات على github.
When converted to a stand-alone theme the background colour will be green, but when used as a component within another theme it doesn’t change the background colour at all.
يحتوي إعداد السمة على هيكل ملفات افتراضي، وأضفت scss/test.scss ثم حددت @import "test";.
على وحدة التحكم (باستخدام discourse_theme watch) أحصل على: ✘ خطأ في scss المشترك: خطأ: الملف المراد استيراده غير موجود أو غير قابل للقراءة: test. في السطر 1 من common.scss
لقد أعلنت متغيرًا واحدًا فقط (بالمناسبة، هناك خطأ مطبعي في كتلة الكود الأولى أعلاه، حيث تم الإعلان باستخدام علامة التساوي: $favourite-color = red;)
لكنني حللت المشكلة للتو. قمت بتعيين الإصدار الأدنى في ملف about.json كـ v2.3.0.beta8، وعندما أزيل ذلك، يعمل كل شيء على ما يرام. لم أستخدم هذا من قبل، لذا لست متأكدًا من ماهية المشكلة في الإعلان.
مثير للاهتمام! إذا قمت بإضافة الحد الأدنى من الإصدار مرة أخرى، هل يتعطل بشكل متكرر؟ إذا كان الأمر كذلك، هل تمانع في ضغط السماعة المعطلة ومشاركتها هنا؟ (أو إرسالها لي عبر الرسائل الخاصة)