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

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

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

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)