كيف يمكنني عرض الفئات و"الأحدث" على الهاتف المحمول؟
هل هكذا؟
لقد نظرت، وقد استخدموا بعض أكواد جافاسكريبت المخصصة لفرض عرض “الفئات والمواضيع الأخيرة”.
لم أتحقق مما إذا كانت هناك طريقة أفضل؛ إليك ما يفعلونه (لقد قمت بتحديث الكود وإضافة بعض التعليقات):
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.
أخبرني إذا كان يساعد.
شكراً جزيلاً. لقد حاولت، لكن لم يتغير شيء. ![]()
سأتحقق من التالي، تأكد من:
desktop_category_page_style مضبوطًا على categories_and_latest_topicsدعنا نرى ما إذا كان بإمكاننا معرفة سبب عدم حدوث أي شيء.