Hamburger-categories Widget wird nicht gemountet?

Folge der Dokumentation hier Developing Discourse Themes & Theme Components
Das Beispiel mit dem Log funktioniert einwandfrei, aber wenn ich das Widget aktualisiere auf
{{mount-widget widget="hamburger-categories"}}
Kommt nichts heraus… Ich habe die Liste unter https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/widgets durchgesehen, und einige Widgets werden angezeigt, andere nicht?

Schließlich möchte ich nur die Kategorienliste als Schaltflächen in einer benutzerdefinierten Kopfzeile verwenden, so wie hier…

Haben Sie die neue Seitenleiste aktiviert? Das wird das alte Hamburger-Menü ausblenden.

Bestätigen Sie, dass Ihre Website-Einstellung wie folgt lautet:

1 „Gefällt mir“

Ich hatte es auf „Header Dropdown“ eingestellt. Ich habe es auf „Legacy“ geändert, aber das Problem besteht weiterhin.

1 „Gefällt mir“

Das Hamburger-Menü wird angezeigt, aber ich möchte nur die Kategorien
{{mount-widget widget="hamburger-menu"}}

Entschuldigung, ich war vom Widget-Namen verwirrt. Welchen Plugin-Outlet verwenden Sie?

wie in den Dokumenten


<script type="text/x-handlebars" data-template-name="/connectors/below-footer/fancy-footer">
  <div class="footer">
    <div class="wrap">
      <p>vor dem Einbinden eines Widgets</p>
        {{mount-widget widget="home-logo"}}
        {{mount-widget widget="hamburger-categories"}}
      <p>nach dem Einbinden eines Widgets</p>
    </div>
  </div>
  </script>

Das Theme ist hier GitHub - tpximpact/bcn-discourse-theme Ich habe es auf https://discourse.theme-creator.io/ ausprobiert und das Problem besteht weiterhin

Wenn Sie sich den Leitfaden ansehen, können Sie sehen, dass der Plugin-Outlet ein Attribut showFooter hat. Das ist wahrscheinlich falsch. Das bedeutet, dass weder der Footer noch das angehängte Widget angezeigt werden.

Warum überhaupt ein Footer-Outlet für ein Header-Artefakt?

Verwenden Sie die Plugin-Outlets-Theme-Komponente, um meiner Meinung nach einen besseren Ort zu wählen.

Es zeigt… es zeigt widget=“home-logo”
und es zeigt auch widget=“hamburger-menu”

aber es zeigt nicht widget=“hamburger-categories”

Nur ein Test, es spielt im Moment keine Rolle, wo es ist

1 „Gefällt mir“

Gibt es Fehler in der Konsole?

Was wird im Inspektor angezeigt?

1 „Gefällt mir“

Ich kann hier Kategorien sehen, also existieren sie..

Meine Vermutung ist, dass dies das Problem ist:

Es wird kein Attribut categories über den Footer-Outlet übergeben.

aber wenn ich widget=„hamburger-menu“ im Footer-Outlet verwende, werden die Kategorien angezeigt
Ich habe andere Outlets auf der Seite ausprobiert und das Problem bleibt bestehen

Wenn Sie diese Fehlermeldung ursprünglich gepostet hätten, hätte das viel Zeit gespart.

Schauen Sie immer in die Konsole.

Sie müssen dies möglicherweise mit JavaScript anhängen, sobald Sie die Liste der Kategorien abgerufen haben, auf die gleiche Weise, wie es das Hamburger-Menü tut.

1 „Gefällt mir“

ja, auf jeden Fall und sogar noch mehr Zeit, wenn die Dokumentation nicht sagen würde: „Jetzt ist das Einbinden eines Widgets ziemlich einfach, alles, was Sie wissen müssen, ist der Name des Widgets. Das ist alles.“

1 „Gefällt mir“

Ja, ich vermute, dass dieser Leitfaden veraltet ist?

Kennen Sie die aktuellste Anleitung, ich fliege hier herum und versuche, Antworten zu finden, lande aber auf Beiträgen, die 4 Jahre alt sind. Gibt es irgendwo ein tatsächliches Anleitungsdokument?

Ja, ich kann sehen, wie das irreführend sein könnte … technisch gesehen bindet es das Widget ein, aber das bedeutet nicht, dass die vom Widget benötigten Daten automatisch verfügbar sind.

Sie können versuchen, die Kategorien auf diese Weise an das Widget zu übergeben:

{{mount-widget widget="hamburger-categories" args=(hash categories=this.site.categories)}}
1 „Gefällt mir“

Vielen Dank.. ja, das ergibt Sinn und wird jetzt angezeigt

Da wir gerade über das Logging in der Konsole sprechen
Wenn man der Dokumentation folgt Developing Discourse Themes & Theme Components
Wenn ich versuche

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

Ich bin mir nicht sicher, ob ich ein „globales Objekt für die Konsole“ erhalte, ich erhalte eine Klasse

Und wenn ich etwas versuche wie

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

Ich erhalte diese Fehlermeldung
THEME 6 'BCN Theme - watched locally'] Deprecation notice: use injected siteSettings instead of Discourse.SiteSettings

1 „Gefällt mir“