هل توجد طريقة لإعادة فتح فئة (class) واستبدال دالة؟
الدالة التي أحتاج إلى استبدالها هي function categoryStripe(color, classes) {} الموجودة في السطر 15 من هنا: javascripts/discourse/helpers/category-link.js.es6.
هل توجد طريقة لإعادة فتح فئة (class) واستبدال دالة؟
الدالة التي أحتاج إلى استبدالها هي function categoryStripe(color, classes) {} الموجودة في السطر 15 من هنا: javascripts/discourse/helpers/category-link.js.es6.
أعتقد ذلك. هل رأيت Developing Discourse Themes & Theme Components
هناك عدة طرق للقيام بما تطلبه. ما هو هدفك في استبدال categoryStripe؟
أود تغييره من:
function categoryStripe(color, classes) {
var style = color ? "style='background-color: #" + color + ";'" : "";
return "<span class='" + classes + "' " + style + "></span>";
}
إلى:
function categoryStripe(color, classes) {
var style = color ? "style='border: 1px solid #" + color + ";'" : "";
return "<span class='" + "my-class" + classes + "' " + style + "></span>";
}
أي تغيير لون الخلفية إلى حدود وإضافة فئة (class).
ما هي أفضل طريقة لتحقيق ذلك يا جاستن؟
لقد قرأت ذلك، لكن حسب ما أذكره، يغطي فقط القدرة على استبدال القوالب (والأدوات) دون ذكر المساعدين (helpers)، أظن ذلك؟
لم يكن أي من ذلك واضحًا من منشورك الأول. أعتقد أنك ستحصل الآن على إجابة مفيدة وأنا مهتم برؤيتها!
هل فكرت في إضافة الكلاس عبر JavaScript أو تجاوز النمط المضمن باستخدام !important في ورقة الأنماط؟ بينما يمكنك العمل على تجاوز هذه الطريقة، إلا أنها ستتعطل في نهاية المطاف. يُعد إضافة العنصر إلى DOM عبر JavaScript الطريقة الأكثر استقرارًا على الأرجح.
ما كنت أحاول فهمه في اليوم الآخر كان إلى حد كبير ذلك. أردت إضافة كلاس مخصص للمشاركات في جميع المواضيع (ولكن ليس موضوع/المشاركة الأصلية). كنت أرغب في تمكين أو تعطيل هذا الكلاس المخصص بناءً على مجموعة المستخدمين وتاريخ إنشاء الموضوع، لكنني اعتقدت أنني قد أتمكن من حل ذلك بمجرد أن أفهم كيفية إضافة الكلاس المخصص إلى المشاركات. لم أرَ المثال الذي كنت أبحث عنه تمامًا، لكن بعض الأمور الأخرى قد تكون شغلت انتباهي قبل أن أجد المثال.
لا أعتقد أن ذلك سيعمل، لأنني بحاجة إلى جلب اللون من إعدادات الفئة — وبالتالي سيتغير لون الحدود لكل فئة. (لقد قمت بتحديث منشوري أعلاه ليعكس ذلك.)
إلا إذا كان بالإمكان جلبه عبر JavaScript (/إضافته إلى DOM)؟ (إذا كان الأمر كذلك، هل يمكنك إعطائي مثالًا من فضلك؟)
سأحتاج إلى البحث في التفاصيل لمعرفة ما إذا كان ما تفعله ممكنًا باستخدام تحديد JS فقط (للأسف لا أملك الوقت الآن).
لكن يمكنك رؤية إضافة فئة هنا: discourse-knowledge-base-theme/javascripts/discourse/components/knowledge-base.js.es6 at 4694d4a8ad788f8884e3341c852d3f77b2c1d103 · discourse/discourse-knowledge-base-theme · GitHub
يمكنك أيضًا تعديل الأنماط المضمنة باستخدام JS: Setting CSS Styles using JavaScript | KIRUPA
شكرًا لك يا جاستن، سأقوم بمراجعة الأمر.
أو هل هناك طريقة لكتابة مساندين (helpers) بديلة (discourse/app/assets/javascripts/discourse/helpers/category-link.js.es6 at b25d9e96c1414bf78b44221da4d385675843991e · discourse/discourse · GitHub) كما يمكننا فعله مع القوالب/المكونات/الأدوات إلخ؟
لا مانع لدي من متابعة هذا الملف للتأكد من عدم وجود تغييرات مستقبلية إذا لزم الأمر ![]()
يمكنك محاولة إنشاء ملف في قالبك في javascripts/discourse/helpers/category-link.js.es6 وإضافة نسخة معدلة من تلك الدالة هناك. لقد مرّ وقت طويل منذ أن اضطررت إلى التلاعب في هذا المستوى، لذا لا يمكنني ضمان نجاح ذلك! ![]()
أجل، يجب أن ينجح ذلك.
شكرًا لكما!
آخر سؤال (أتمنى!) كيف يمكنني إنشاء ملف هناك؟ ![]()
في إضافة سهلة، أنشئ المجلد وانسخ والصق ببساطة!
آه!!! شكرًا لك يا روبرت!
يجب أن أغادر الآن، لكن سأجرب ذلك فور عودتي ![]()
شكرًا لك يا روبرت!
لكن الأمر لا يعمل ![]()
إليك ما قمت به:
rails g plugin CategoryAlternative
ثم أضفت هذا:
في مجلد helpers كان عليّ إنشاؤه:
ثم:
rm -rf tmp
rails s
يظهر في لوحة تحكم المسؤول (AdminCP)، لكن لا تنعكس أي تغييرات على الصفحة الفعلية (تظهر التغييرات إذا قمت بتعديل نسخة الملف غير التابعة للإضافة مع نفس التعديلات تمامًا)
هل فاتني شيء؟ هل أحتاج إلى تكوين أي شيء آخر؟
هل تواجه أي أخطاء في وحدة تحكم JavaScript؟
هل قمت بتضمين الملف بالكامل؟
ملاحظة: لم أستخدم مولد الإضافة، بل قمت بإنشاء كل ذلك يدويًا.
لم أقدمه وقت الكتابة (لأنني اعتقدت أن جاستن يقصد تضمين تلك الدالة فقط)، ومع ذلك، على الرغم من أن تضمين الملف بأكمله جعله يعمل، إلا أنه لم يكن نفس الشيء كما عندما قمت بتعديل الملف مباشرة.
على سبيل المثال، عمل في صفحة latest، لكن ليس في القائمة المنسدلة all categories… والتي عملت عندما عدلت الملف مباشرة!
لذا، انتهيت بإجراء التغييرات التي أحتاجها عبر بعض CSS غير مرتب
واضطررت لتقديم بعض التنازلات أيضًا - فهو بالتأكيد أفضل من عدم القدرة على فعل ذلك، لكن مثاليًا كنت أفضل أن يكون شيئًا بسيطًا مثل تغيير نمط فئة ما بسيطًا مثل تعديل قالب ![]()
أود فعل ذلك أيضًا.
إليك مسار الملف الذي أحاول استبداله في مكون السمة الخاص بي:
custom_loader\javascripts\discourse\helpers\loading-spinner.js
لكن ملف JS لم يتم تحميله. ما الذي فاتني؟