Widget de categorias de hambúrguer não monta?

Seguindo a documentação aqui Developing Discourse Themes & Theme Components
O exemplo usando o log funciona bem, mas quando atualizo o widget para
{{mount-widget widget=\"hamburger-categories\"}}
Nada aparece… Já percorri a lista em https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/widgets. e alguns widgets aparecem, outros não?

Eventualmente, quero usar apenas a lista de categorias como botões dentro de um cabeçalho personalizado, assim…

Você ativou a nova barra lateral? Isso ocultará o antigo menu hambúrguer.

Confirme se a configuração do seu site está assim:

1 curtida

Eu o configurei como "Menu suspenso do cabeçalho", alterei para "Legado", mas o mesmo problema persiste

1 curtida

O menu hambúrguer é exibido, mas eu quero apenas as categorias
{{mount-widget widget="hamburger-menu"}}

Desculpe, fui pego de surpresa pelo nome do widget. Qual tomada de plugin você está usando?

o mesmo que na documentação

<script type="text/x-handlebars" data-template-name="/connectors/below-footer/fancy-footer">
  <div class="footer">
    <div class="wrap">
      <p>antes de montar um widget</p>
        {{mount-widget widget="home-logo"}}
        {{mount-widget widget="hamburger-categories"}}
      <p>depois de montar um widget</p>
    </div>
  </div>
  </script>

o tema está aqui GitHub - tpximpact/bcn-discourse-theme tentei em https://discourse.theme-creator.io/. e o problema persiste

Se você olhar o guia, poderá ver que o plugin outlet recebe um atributo showFooter. Provavelmente é falso. O que significa que nem o rodapé nem o widget anexado serão exibidos.

Em qualquer caso, por que um footer outlet para um artefato de cabeçalho?

Use o componente plugin outlets theme para escolher um local melhor, na minha opinião.

Ele mostra… ele mostra widget=“home-logo”
e também mostra widget=“hamburger-menu”

mas não mostra widget=“hamburger-categories”

Apenas testando, não importa muito onde esteja agora

1 curtida

Algum erro no console?

O que aparece no inspetor?

1 curtida

Eu consigo ver categorias aqui, então elas existem..

Minha suposição é que este é o problema:

Não há nenhum atributo categories sendo passado através do footer outlet.

mas quando uso widget=“hamburger-menu” no footer outlet ele mostra as categorias
Tentei outros outlets pela página e o problema persiste

Se você tivesse postado essa mensagem de erro inicialmente, teria economizado muito tempo.

Sempre olhe o console.

Talvez você precise anexar este com JavaScript depois de recuperar a lista de Categorias da mesma forma que o menu Hamburger faz.

1 curtida

sim, definitivamente, e ainda mais tempo se a documentação não dissesse “Agora, montar um widget é muito simples, tudo o que você precisa saber é o nome do widget. É só isso”

1 curtida

Minha intuição é que esse guia está desatualizado?

Você sabe onde posso encontrar o guia mais atualizado? Estou voando por aqui tentando encontrar respostas, mas caindo em posts com 4 anos de idade. Existe um documento de guia real em algum lugar?

Sim, consigo ver como isso seria enganoso… tecnicamente, ele monta o widget, mas isso não significa que os dados necessários para o widget estejam automaticamente disponíveis.

Você pode tentar passar as categorias para o widget desta forma:

{{mount-widget widget="hamburger-categories" args=(hash categories=this.site.categories)}}
1 curtida

Ótimo, obrigado… sim, isso faz sentido e está aparecendo agora

Já que estamos falando sobre logging no console

Ao seguir a documentação Developing Discourse Themes & Theme Components
Quando tento

<script type="text/discourse-plugin" version="0.8">
    console.log(Discourse)
</script>

Não tenho certeza se obtenho um “objeto global para o console”, eu obtenho uma classe

E se eu tentar algo como

<script type="text/discourse-plugin" version="0.8">
  const settings = Discourse.SiteSettings;
 console.log(settings)
</script>

Eu recebo este erro
THEME 6 'BCN Theme - watched locally'] Aviso de depreciação: use siteSettings injetado em vez de Discourse.SiteSettings

1 curtida