Wie kann ich Kategorien und „Neueste“ auf Mobilgeräten anzeigen?
So?
Ich habe nachgesehen, und sie haben benutzerdefinierten JS-Code verwendet, um die Ansicht „Kategorien und neueste Themen“ zu erzwingen.
Ich habe nicht geprüft, ob es einen besseren Weg gibt; hier ist, was sie tun (ich habe den Code modernisiert und einige Kommentare hinzugefügt):
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) => {
// Erzwingt die Ansicht "Kategorien und neueste Themen".
api.modifyClass(
"component:discovery/categories-display",
(Superclass) =>
class extends Superclass {
get categoriesComponent() {
if (this.args.parentCategory) {
return super.categoriesComponent;
} else {
return CategoriesAndLatestTopics;
}
}
}
);
// Dasselbe wie das Original, mit der Ausnahme der Prüfung "this.site.desktopView",
// damit auch die neuesten Themen für Mobilgeräte gefunden werden.
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;
}
}
);
})
Sie können versuchen, den Code in eine neue Komponente einzufügen → Code bearbeiten → Tab JS.
Lassen Sie mich wissen, ob es hilft.
Vielen Dank. Ich habe es versucht, aber es hat nichts geändert. ![]()
Ich würde Folgendes überprüfen, stellen Sie sicher:\n* Code befindet sich im JS-Tab (und nicht an anderen Stellen)\n* Ihr Code ist aktiviert (wenn Sie einen TC erstellt haben, stellen Sie sicher, dass er dem Thema zugeordnet ist)\n* Sie haben die desktop_category_page_style-Site-Einstellung auf categories_and_latest_topics gesetzt\n* Wenn Sie Fehler in der Browserkonsole haben\n\nMal sehen, ob wir herausfinden können, warum nichts passiert.
Du kannst das Duplikat entfernen. Das ist wahrscheinlich der Grund, warum es nicht funktioniert (diese 5 Zeilen):