عند إضافة مستوى تداخل إضافي، يتم عرض جميع الفئات، بما في ذلك الفئات الفرعية، في صفحة الفئات

لقد أضفت مستوى آخر من التداخل في التصنيفات. ولكن عند إضافة تصنيفات فرعية لتصنيف فرعي، يتم عرض جميع هذه التصنيفات في الصفحة الرئيسية. أخطط لإنشاء حوالي 100 تصنيف يجب عرضها في الصفحة الرئيسية، مع وجود 30-50 تصنيفًا فرعيًا في كل تصنيف فرعي. حاليًا، يتم عرض جميع التصنيفات في صفحة واحدة. لم أجد أي إعدادات لإخفاء تصنيفات المستوى الثاني من التداخل في الصفحة الرئيسية.

يجب إضافة إعداد “إظهار التصنيفات الفرعية فقط” حتى لا يتم عرض شجرة التصنيفات بأكملها في الصفحة الرئيسية. وإلا، فستتم دائمًا عرض تصنيفات المستوى الثاني والثالث من التداخل في الصفحة الرئيسية. وماذا لو كان هناك الآلاف منها؟

3 إعجابات

يعتبر عمومًا فكرة سيئة أن يكون لديك أكثر من بضع مئات من الفئات. ربما تطلع على حان الوقت لننتقل إلى الوسوم. ميزة الفئات الفرعية الفرعية غير مدعومة إلى حد كبير حسب آخر ما علمت، ولكن ربما هناك طريقة لإخفائها كما تريد.

إعجابَين (2)

الوسوم ليست منظمة مثل تسلسل الفئات. لقد كانت وظيفة الفئة الفرعية مدعومة لفترة طويلة، ويجب تمكينها بشكل منفصل. لكن شجرة الفئات بأكملها مرئية. على سبيل المثال، يعمل كل شيء بشكل صحيح لـ nodebb. تعرض الصفحة الفئات الفرعية التابعة، لكنها لا تعرض الفئات ذات مستوى التضمين الأعمق.

3 إعجابات

هل حلّ أحد هذه المشكلة بعد؟ @Johani، هل يمكنك مساعدتي؟

إعجاب واحد (1)

ما تبحث عنه يتم تحديده بناءً على خاصية تُسمى isGrandParent في القالب هنا.

discourse/app/assets/javascripts/discourse/app/templates/components/parent-category-row.hbs at 1472e47aae5bfdfb6fd9abfe89beb186c751f514 · discourse/discourse · GitHub

عندما يكون للتصنيف أحفاد، نقوم بعرض الترميز المناسب لتصنيفات الأحفاد. وإلا، فإننا نقوم بعرض التصنيفات الفرعية.

أسهل طريقة للتغلب على ذلك هي تجاوز هذه الخاصية في مكون 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.

سيؤدي ذلك إلى جعل القالب يعرض فقط التصنيفات الفرعية ويتجاهل تصنيفات الأحفاد.

يمكنك استخدام نفس النمط لتعديل أي خاصية في أي مكون.

إعجابَين (2)