Como posso visualizar categorias e "latest" no celular?

Como posso ver categorias e “mais recentes” no celular?

Assim?

Eu olhei e eles usaram um código JS personalizado para forçar a visualização de “categorias e tópicos mais recentes”.

Não verifiquei se havia uma maneira melhor; aqui está o que eles fazem (modernizei o código e adicionei alguns comentários):

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) => {
  // Força a visualização de Categorias e tópicos mais recentes.
  api.modifyClass(
    "component:discovery/categories-display",
    (Superclass) =>
      class extends Superclass {
        get categoriesComponent() {
          if (this.args.parentCategory) {
            return super.categoriesComponent;
          } else {
            return CategoriesAndLatestTopics;
          }
        }
      }
  );

  // O mesmo que o original, com a diferença de que remove a verificação "this.site.desktopView",
  // para que encontre os tópicos mais recentes também para dispositivos móveis.
  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;
        }
      }
  );
})

Você pode tentar colar o código em um novo componente → Editar código → aba JS.
Me diga se ajuda.

2 curtidas

Muito obrigado. Tentei, mas não mudou nada. :thinking:

Eu verificaria o seguinte, certifique-se de que:

  • O código está na aba JS (e não em outros lugares)
  • Seu código está habilitado (se você criou um TC, certifique-se de que ele está anexado ao tema)
  • Você tem a configuração do site desktop_category_page_style definida como categories_and_latest_topics
  • Se há erros no console do navegador

Vamos ver se conseguimos descobrir por que nada acontece.

Acho que fiz tudo desse jeito. Está copiado corretamente?

1 curtida

Você pode remover o duplicado. Essa é provavelmente a razão pela qual não funciona (estas 5 linhas):

1 curtida

Agora algo está chegando! Mas não quando uso o item “categoria e grupo modernos”.

:sweat_smile: