Wie kann ich Kategorien und "Neueste" auf Mobilgerät ansehen?

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. :thinking:

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.

Ich glaube, ich habe alles so gemacht. Ist es richtig kopiert?

Du kannst das Duplikat entfernen. Das ist wahrscheinlich der Grund, warum es nicht funktioniert (diese 5 Zeilen):

Now something is coming! But not when I use “modern category and group” Thing.

:sweat_smile: