Come posso visualizzare le categorie e la sezione "più recenti" su mobile?

Come posso visualizzare categorie e “ultimi” sul cellulare?

Come questo?

Ho guardato e hanno usato del codice JS personalizzato per forzare la visualizzazione “categorie e argomenti più recenti”.

Non ho controllato se ci fosse un modo migliore; ecco cosa fanno (ho modernizzato il codice e aggiunto alcuni commenti):

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) => {
  // Forza la visualizzazione di Categorie e argomenti più recenti.
  api.modifyClass(
    "component:discovery/categories-display",
    (Superclass) =>
      class extends Superclass {
        get categoriesComponent() {
          if (this.args.parentCategory) {
            return super.categoriesComponent;
          } else {
            return CategoriesAndLatestTopics;
          }
        }
      }
  );

  // Uguale all'originale, con la differenza che viene rimosso il controllo "this.site.desktopView",
  // in modo da trovare gli argomenti più recenti anche per dispositivi mobili.
  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;
        }
      }
  );
})

Puoi provare a incollare il codice in un nuovo componente → Modifica codice → Scheda JS.
Fammi sapere se aiuta.

2 Mi Piace

Grazie mille. Ci ho provato, ma non è cambiato nulla. :thinking:

Controllerei quanto segue, assicurati che:

  • Il codice si trovi nella scheda JS (e non in altri posti)
  • Il tuo codice sia abilitato (se hai creato un TC, assicurati che sia collegato al tema)
  • L’impostazione del sito desktop_category_page_style sia impostata su categories_and_latest_topics
  • Se ci sono errori nella console del browser

Vediamo se riusciamo a capire perché non succede nulla.

Penso di aver fatto tutto in quel modo. È copiato correttamente?

1 Mi Piace

Puoi rimuovere il duplicato. Questo è probabilmente il motivo per cui non funziona (queste 5 righe):

1 Mi Piace

Ora sta arrivando qualcosa! Ma non quando uso l’elemento “categoria e gruppo moderni”.

:sweat_smile: