Disculpe mi falta de experiencia en el tema, pero ¿cómo maneja Discourse el clic en el enlace del menú de hamburguesa?
Contexto: Estoy utilizando el servicio prerender.io para servir una versión HTML del sitio principal (versión JS del sitio).
El enlace de hamburguesa de menú no funciona.
Puede probar ( el sitio ) utilizando las herramientas de desarrollador de Chrome y cambiando el agente a Googlebot smartphone. Cuando se utiliza el agente de usuario de Googlebot, en efecto, se obtiene la versión HTML prerenderizada.
Nota al margen: Según esta publicación de blog de prerender, podría tener problemas con código como
Todos los enlaces deben estar entre etiquetas <a></a> y definir una URL de destino en el atributo href para que Google pueda encontrarlo y seguirlo.
¿Quizás el enlace del menú principal se genera utilizando este método?
Agradecería cualquier idea para una solución.
Editar: He quitado el sitio de prerender por ahora (pero mantengo la versión JS servida a los bots). Sorprendentemente, Google bot parece renderizarlo correctamente de vez en cuando. Tampoco tengo problemas con el menú cuando uso Google bot como agente de usuario en Chrome. Voy a probar esto por un tiempo.
Mis disculpas, he hecho una pregunta simple bastante confusa…
Los enlaces dentro del menú parecen estar bien, mi problema es solo el enlace de la hamburguesa en sí; cuando se renderiza con prerender, simplemente no se abre.
El menú se anexa al documento con Javascript cuando se hace clic en el botón, por lo que no se convertirá fácilmente para funcionar en una versión del sitio solo con HTML.
Aquí es donde se agrega el botón, puedes ver que tiene una acción llamada toggleHamburger:
toggleHamburger cambia el estado de hamburgerVisible, por lo que el menú se agrega finalmente con panels.push(this.attach("hamburger-menu")); que puedes ver aquí:
Gran respuesta @awesomerobot, estoy seguro de que la comunidad lo aprecia.
Lo revisaré para ver si el trabajo personalizado vale la pena.
La respuesta que obtuve de prerender.io fue básicamente que si usa “JS complicado”, probablemente no funcionará. No estoy seguro de cuán bien estudiaron la situación.