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…
merefield
(Robert)
Fevereiro 20, 2023, 2:13pm
2
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"}}
merefield
(Robert)
Fevereiro 20, 2023, 2:27pm
5
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>
merefield
(Robert)
Fevereiro 20, 2023, 3:01pm
8
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
merefield
(Robert)
Fevereiro 20, 2023, 3:13pm
10
Algum erro no console?
O que aparece no inspetor?
Eu consigo ver categorias aqui, então elas existem..
merefield
(Robert)
Fevereiro 20, 2023, 3:19pm
13
Minha suposição é que este é o problema:
if (!siteSettings.allow_uncategorized_topics) {
categories = categories.filter(
(c) => c.id !== site.uncategorized_category_id
);
}
const moreCount = categories.length - maxCategoriesToDisplay;
categories = categories.slice(0, maxCategoriesToDisplay);
return this.attach("hamburger-categories", { categories, moreCount });
},
footerLinks(prioritizeFaq, faqUrl) {
const { attrs, capabilities, settings, site, siteSettings, state } = this;
const links = [];
if (settings.showAbout) {
links.push({
route: "about",
className: "about-link",
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
merefield
(Robert)
Fevereiro 20, 2023, 3:30pm
15
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
merefield
(Robert)
Fevereiro 20, 2023, 4:09pm
17
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