كيف يمكنني عرض الفئات وقسم "الأحدث" على الهاتف المحمول؟

كيف يمكنني عرض الفئات و"الأحدث" على الهاتف المحمول؟

هل هكذا؟

لقد نظرت، وقد استخدموا بعض أكواد جافاسكريبت المخصصة لفرض عرض “الفئات والمواضيع الأخيرة”.

لم أتحقق مما إذا كانت هناك طريقة أفضل؛ إليك ما يفعلونه (لقد قمت بتحديث الكود وإضافة بعض التعليقات):

import { apiInitializer } from "discourse/lib/api";
import CategoriesAndLatestTopics from "discourse/components/categories-and-latest-topics";
import CategoryList from "discourse/models/category-list";
import { MAX_UNOPTIMIZED_CATEGORIES } from "discourse/lib/constants";

export default apiInitializer((api) => {
  // يفرض عرض الفئات والمواضيع الأخيرة.
  api.modifyClass(
    "component:discovery/categories-display",
    (Superclass) =>
      class extends Superclass {
        get categoriesComponent() {
          if (this.args.parentCategory) {
            return super.categoriesComponent;
          } else {
            return CategoriesAndLatestTopics;
          }
        }
      }
  );

  // نفس الشيء الأصلي، مع تعديل بسيط لفحص "this.site.desktopView"،
  // بحيث يجد المواضيع الأخيرة للجوال أيضًا.
  api.modifyClass(
    "route:discovery-categories",
    (Superclass) =>
      class extends Superclass {
        async findCategories(parentCategory) {
          let model;

          let style = this.siteSettings.desktop_category_page_style;
          if (this.site.categories.length > MAX_UNOPTIMIZED_CATEGORIES) {
            style = "categories_only";
          }

          if (
            style === "categories_and_latest_topics" ||
            style === "categories_and_latest_topics_created_date"
          ) {
            model = await this._findCategoriesAndTopics(
              "latest",
              parentCategory
            );
          } else if (style === "categories_and_top_topics") {
            model = await this._findCategoriesAndTopics(
              "top",
              parentCategory
            );
          } else {
            PreloadStore.remove("topic_list");
            model = await CategoryList.list(this.store, parentCategory);
          }

          return model;
        }
      }
  );
});

يمكنك محاولة لصق الكود في مكون جديد → تحرير الكود → علامة تبويب JS.
أخبرني إذا كان يساعد.

إعجابَين (2)

شكراً جزيلاً. لقد حاولت، لكن لم يتغير شيء. :thinking:

سأتحقق من التالي، تأكد من:

  • أن الكود موجود في تبويب JS (وليس في أماكن أخرى)
  • أن الكود الخاص بك ممكّن (إذا أنشأت TC، فتأكد من أنه مرتبط بالسِمة)
  • أن لديك إعداد الموقع desktop_category_page_style مضبوطًا على categories_and_latest_topics
  • إذا كانت هناك أخطاء في وحدة تحكم المتصفح

دعنا نرى ما إذا كان بإمكاننا معرفة سبب عدم حدوث أي شيء.

أعتقد أنني فعلت كل شيء بهذه الطريقة. هل تم نسخه بشكل صحيح؟

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

يمكنك إزالة التكرار. هذا على الأرجح هو السبب في عدم عمله (هذه الأسطر الخمسة):

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

الآن هناك شيء قادم! ولكن ليس عندما أستخدم عنصر “الفئة والمجموعة الحديثة”.

:sweat_smile: