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.

2 „Gefällt mir“

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?

1 „Gefällt mir“

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

1 „Gefällt mir“

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

:sweat_smile: