Como o link/painel do menu principal (hambúrguer) é gerado?

Com licença pela minha falta de conhecimento no assunto, mas como o Discourse lida com o clique no link do menu hambúrguer?

Contexto: Estou usando o serviço prerender.io para servir uma versão HTML do site principal (versão JS do site)

O link do hambúrguer <s class="text-muted">menu</s> não funciona.

<s>Você pode testar ( [o site](https://discuss.flynumber.com/) ) usando as ferramentas de desenvolvedor do Chrome e alterando o agente para Googlebot smartphone. Ao usar o agente de usuário do Googlebot, você está efetivamente obtendo a versão HTML pré-renderizada.</s>

Nota: De acordo com este post do blog do prerender, ele pode ter problemas com código como

`<a>Anchor</a>`
`<a>Anchor</a>`
`<span>Anchor</span>`

Todos os links precisam estar entre tags <a></a> e definir um URL de destino no atributo href para que o Google possa encontrá-lo e segui-lo.

Talvez o link do menu principal seja gerado usando este método?

Qualquer ideia de solução seria muito apreciada.

Editar Removi o site do prerender por enquanto (mas mantendo a versão JS servida para bots) - Surpreendentemente, o Google bot parece renderizá-lo corretamente de vez em quando. Também não tenho problemas de menu ao usar o Google bot como agente de usuário no Chrome. Vou testar isso por um tempo.

Peço desculpas, eu tornei uma pergunta simples bastante confusa…

Os links dentro do menu parecem bons, meu problema é apenas o link do próprio hambúrguer - quando renderizado com prerender, ele simplesmente não abre.

Esta postagem de @Johani foi super útil para tentar diagnosticar

Estou no caminho certo olhando para este trecho de código (quanto à funcionalidade de quando você clica no menu hambúrguer)?

O menu é anexado ao documento com Javascript quando o botão é clicado, portanto, não será facilmente convertido para funcionar em uma versão do site apenas com HTML.

Aqui é onde o botão é adicionado, você pode ver que ele tem uma ação chamada toggleHamburger:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/widgets/header.js#L246

A ação toggleHamburger é definida posteriormente no mesmo arquivo, aqui:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/widgets/header.js#L483

toggleHamburger altera o estado hamburgerVisible, então o menu é finalmente adicionado com panels.push(this.attach("hamburger-menu")); que você pode ver aqui:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/widgets/header.js#L379

1 curtida

Resposta de qualidade @awesomerobot, tenho certeza que a comunidade aprecia.

Vou analisar isso para ver se o trabalho personalizado vale a pena.

A resposta que recebi do prerender.io foi basicamente que, se usar “JS complicado”, provavelmente não funcionará. Não tenho certeza de quão bem eles estudaram a situação.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.