Le widget Hamburger-categories ne se monte pas ?

En suivant la documentation ici Developing Discourse Themes & Theme Components
L’exemple utilisant le log fonctionne bien mais quand je mets à jour le widget avec
{{mount-widget widget=\"hamburger-categories\"}}
Rien ne sort… J’ai parcouru la liste sur https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/widgets. et certains widgets s’affichent, d’autres non ?

Finalement, je veux utiliser juste la liste des catégories comme boutons dans un en-tête personnalisé, comme ceci…

Avez-vous activé la nouvelle barre latérale ? Cela masquera l’ancien menu hamburger.

Confirmez que le paramètre de votre site est le suivant :

1 « J'aime »

Je l’avais réglé sur « Menu déroulant de l’en-tête », je l’ai changé en « Hérité », mais le problème persiste.

1 « J'aime »

Le menu hamburger s’affiche, mais je veux juste les catégories
{{mount-widget widget="hamburger-menu"}}

Désolé, le nom du widget m’a dérouté. Quel point de terminaison de plugin utilisez-vous ?

identique à celui de la documentation

<script type="text/x-handlebars" data-template-name="/connectors/below-footer/fancy-footer">
  <div class="footer">
    <div class="wrap">
      <p>avant de monter un widget</p>
        {{mount-widget widget="home-logo"}}
        {{mount-widget widget="hamburger-categories"}}
      <p>après avoir monté un widget</p>
    </div>
  </div>
  </script>

le thème est ici GitHub - tpximpact/bcn-discourse-theme Je l’ai essayé sur https://discourse.theme-creator.io/. et le problème persiste

Si vous regardez le guide, vous pouvez voir que la sortie du plugin prend un attribut showFooter. C’est probablement faux. Ce qui signifie que ni le pied de page ni le widget attaché ne s’afficheront.

Dans tous les cas, pourquoi une sortie de pied de page pour un artefact d’en-tête ?

Utilisez le composant de thème des sorties de plugin pour choisir un meilleur emplacement, à mon avis.

Il affiche… il affiche widget=“home-logo”
et il affiche aussi widget=“hamburger-menu”

mais il n’affiche pas widget=“hamburger-categories”

Juste pour tester, peu importe où il se trouve pour le moment

1 « J'aime »

Des erreurs dans la console ?

Qu’est-ce qui s’affiche dans l’inspecteur ?

1 « J'aime »

Je peux voir des catégories ici, donc elles existent…

Mon hypothèse est que le problème est le suivant :

Il n’y a pas d’attribut categories passé via la sortie footer.

mais quand j’utilise widget=“hamburger-menu” dans le footer outlet, il affiche les catégories
J’ai essayé d’autres outlets sur la page et le problème persiste

Si vous aviez publié ce message d’erreur initialement, cela aurait fait gagner beaucoup de temps.

Regardez toujours la console.

Vous devrez peut-être attacher celui-ci avec JavaScript une fois que vous aurez récupéré la liste des catégories de la même manière que le menu Hamburger.

1 « J'aime »

oui absolument et encore plus de temps si la documentation ne disait pas « Désormais, l’installation d’un widget est très simple, tout ce que vous avez à savoir est le nom du widget. C’est tout »

1 « J'aime »

Mon intuition est que ce guide n’est plus à jour ?

Savez-vous où je peux trouver le guide le plus récent ? Je vole dans tous les sens en essayant de trouver des réponses, mais j’atterris sur des publications vieilles de 4 ans. Existe-t-il un document de guide réel quelque part ?

Oui, je vois comment cela pourrait être trompeur… techniquement, cela monte le widget, mais cela ne signifie pas que les données requises par le widget sont automatiquement disponibles.

Vous pouvez essayer de passer les catégories dans le widget de cette façon :

{{mount-widget widget="hamburger-categories" args=(hash categories=this.site.categories)}}
1 « J'aime »

Merci beaucoup.. oui, cela a du sens et s’affiche maintenant

Puisque nous parlons de la journalisation dans la console

Lorsque vous suivez la documentation Developing Discourse Themes & Theme Components
Lorsque j’essaie

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

Je ne suis pas sûr d’obtenir un « objet global dans la console », j’obtiens une classe

Et si j’essaie quelque chose comme

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

J’obtiens cette erreur
THEME 6 'BCN Theme - watched locally'] Avis de dépréciation : utilisez siteSettings injecté au lieu de Discourse.SiteSettings

1 « J'aime »