¿El widget Hamburger-categories no se monta?

Siguiendo la documentación aquí Developing Discourse Themes & Theme Components
El ejemplo que usa el log funciona bien, pero cuando actualizo el widget a
{{mount-widget widget="hamburger-categories"}}
No sale nada… He revisado la lista en https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/widgets. y algunos widgets aparecen y otros no.

Eventualmente, quiero usar solo la lista de categorías como botones dentro de un encabezado personalizado, así…

¿Tienes activada la nueva barra lateral? Eso ocultará el antiguo menú hamburguesa.

Confirma que la configuración de tu sitio es la siguiente:

1 me gusta

Lo tenía configurado en “Menú desplegable de encabezado”, lo cambié a “Legado”, pero el problema persiste.

1 me gusta

El menú hamburguesa se muestra, pero solo quiero las categorías
{{mount-widget widget="hamburger-menu"}}

Disculpas, me confundió el nombre del widget. ¿Qué outlet de plugin estás usando?

lo mismo que en la documentación

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

el tema está aquí GitHub - tpximpact/bcn-discourse-theme lo probé en https://discourse.theme-creator.io/. y el problema persiste

Si miras la guía, puedes ver que el outlet del plugin toma un atributo showFooter. Probablemente sea falso. Lo que significa que ni el pie de página ni el widget adjunto se mostrarán.

En cualquier caso, ¿por qué un outlet de pie de página para un artefacto de encabezado?

Usa el componente temático de outlets de plugin para elegir una mejor ubicación, en mi humilde opinión.

Sí que lo muestra… muestra widget=“home-logo”
y también muestra widget=“hamburger-menu”

pero no muestra widget=“hamburger-categories”

Solo lo estoy probando, realmente no importa dónde esté ahora mismo.

1 me gusta

¿Hay algún error en la consola?

¿Qué se muestra en el inspector?

1 me gusta

Puedo ver categorías aquí, así que existen..

Mi suposición es que este es el problema:

No se está pasando ningún atributo categories a través de la salida del pie de página.

pero cuando uso widget=“hamburger-menu” en el outlet del pie de página, muestra las categorías
He probado otros outlets en la página y el problema persiste

Si hubiera publicado ese mensaje de error inicialmente, habría ahorrado mucho tiempo.

Siempre mira la consola.

Es posible que necesites adjuntar este con JavaScript una vez que hayas recuperado la lista de Categorías de la misma manera que lo hace el menú Hamburguesa.

1 me gusta

sí, definitivamente, y aún más tiempo si la documentación no dijera “Ahora, montar un widget es muy simple, todo lo que necesitas saber es el nombre del widget. Eso es todo”.

1 me gusta

Mi presentimiento es que esa guía está desactualizada.

¿Sabes dónde puedo encontrar la guía más actualizada? He estado volando por aquí intentando encontrar respuestas, pero aterrizo en publicaciones de hace 4 años. ¿Hay algún documento de guía real en alguna parte?

Sí, puedo ver cómo eso podría ser engañoso… técnicamente monta el widget, pero eso no significa que los datos requeridos por el widget estén automáticamente disponibles.

Puedes intentar pasar las categorías al widget de esta manera:

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

Genial, gracias… sí, tiene sentido y ahora se muestra

Ya que estamos hablando de registrar en la consola

Al seguir la documentación Developing Discourse Themes & Theme Components
Cuando intento

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

No estoy seguro de obtener un “objeto global en la consola”, obtengo una clase

Y si intento algo como

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

Obtengo este error
THEME 6 'BCN Theme - watched locally'] Notice de depreciación: usa siteSettings inyectado en lugar de Discourse.SiteSettings

1 me gusta