ما تبحث عنه يتم تحديده بناءً على خاصية تُسمى isGrandParent في القالب هنا.
عندما يكون للتصنيف أحفاد، نقوم بعرض الترميز المناسب لتصنيفات الأحفاد. وإلا، فإننا نقوم بعرض التصنيفات الفرعية.
أسهل طريقة للتغلب على ذلك هي تجاوز هذه الخاصية في مكون Ember المسمى parent-category-row.
يمكنك تحقيق ذلك باستخدام طريقة modifyClass في واجهة برمجة التطبيقات (plugin-api).
Developing Discourse Themes & Theme Components
تسمح لك modifyClass بإعادة فتح فئة مكون parent-category-row في Ember وإضافة طرق جديدة.
لضمان تشغيل هذه الطرق وتوفر البيانات، ستحتاج إلى ربطها بخطاف didReceiveAttrs.
لعمل ذلك، يمكنك استخدام الزينة المدمجة @on.
بمجرد أن تكون كل شيء جاهزًا، يمكنك ببساطة تجاوز isGrandParent لجميع التصنيفات المعروضة عبر قالب هذا المكون وتعيين قيمها إلى false.
إليك كل ذلك مجتمعًا
<script type="text/discourse-plugin" version="0.8">
const { on } = require("discourse-common/utils/decorators");
api.modifyClass("component:parent-category-row", {
@on("didReceiveAttrs")
removeGrandchildCategories() {
this.category?.set("isGrandParent", false);
}
});</script>
تضيف هذا إلى علامة التبويب header في سمة الخاص بك تحت common.
سيؤدي ذلك إلى جعل القالب يعرض فقط التصنيفات الفرعية ويتجاهل تصنيفات الأحفاد.
يمكنك استخدام نفس النمط لتعديل أي خاصية في أي مكون.