Hamburger-categoriesウィジェットがマウントされませんか?

ドキュメントの Developing Discourse Themes & Theme Components に従っています。
ログを使用した例は正常に動作しますが、ウィジェットを次のように更新すると、
{{mount-widget widget="hamburger-categories"}}
何も表示されません… https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/widgets のリストを確認しましたが、一部のウィジェットは表示され、一部は表示されません。

最終的には、カスタムヘッダー内にカテゴリリストをボタンとして使用したいと考えています。このようになります…

新しいサイドバーは有効になりましたか?古いハンバーガーメニューは非表示になります。

サイトの設定が以下のようになっていることを確認してください。

「いいね!」 1

「ヘッダー ドロップダウン」に設定していましたが、「レガシー」に変更しても問題は同じでした

「いいね!」 1

ハンバーガーメニューは表示されますが、カテゴリのみが必要なのです。
{{mount-widget widget="hamburger-menu"}}

ウィジェット名に戸惑いました。どのプラグインのアウトレットを使用していますか?

ドキュメントと同じです

<script type="text/x-handlebars" data-template-name="/connectors/below-footer/fancy-footer">
  <div class="footer">
    <div class="wrap">
      <p>ウィジェットをマウントする前に</p>
        {{mount-widget widget="home-logo"}}
        {{mount-widget widget="hamburger-categories"}}
      <p>ウィジェットをマウントした後</p>
    </div>
  </div>
  </script>

テーマはこちら GitHub - tpximpact/bcn-discourse-theme です。https://discourse.theme-creator.io/ で試しましたが、問題は残ったままです。

ガイドを見ると、プラグインのアウトレットが showFooter 属性を受け取ることがわかります。これはおそらく false です。つまり、フッターもアタッチされたウィジェットも表示されません。

いずれにしても、ヘッダーアーティファクトにフッターアウトレットがあるのはなぜですか?

プラグインのアウトレットテーマコンポーネントを使用して、より良い場所を選択することをお勧めします。

It does show… it shows widget=“home-logo”
and it also shows widget=“hamburger-menu”

but it doesn’t show widget=“hamburger-categories”

Just testing it out, doesn’t really matter where it is right now
表示されています… widget=“home-logo” が表示されています
また、widget=“hamburger-menu” も表示されています

しかし、widget=“hamburger-categories” は表示されていません

テストしているだけなので、今のところどこにあるかはあまり重要ではありません

「いいね!」 1

コンソールにエラーはありますか?

インスペクターには何が表示されていますか?

「いいね!」 1

ここにカテゴリが表示されているので、確かに存在します。

私の推測では、これが問題です。

フッターのアウトレット経由でカテゴリ属性が渡されていません。

しかし、フッターのアウトレットで widget=“hamburger-menu” を使用すると、カテゴリが表示されます。
ページ内の他のアウトレットでも試しましたが、問題は解決しません。

最初にそのエラーメッセージを投稿していれば、多くの時間を節約できたはずです。

常にコンソールを確認してください。

Hamburgerメニューがやっているのと同じように、カテゴリのリストを取得したら、これをJavaScriptでアタッチする必要があるかもしれません。

「いいね!」 1

はい、確かに。ドキュメントに「ウィジェットの取り付けは非常に簡単で、必要なのはウィジェットの名前だけです。それだけです」と書かれていなければ、さらに時間がかかったでしょう。

「いいね!」 1

その勘は、そのガイドが古いということですか?

最新のガイドはどこにあるかご存知ですか?答えを探して飛び回っていますが、4年前の投稿にたどり着いてしまいます。どこかに実際のガイド文書はありますか?

ええ、それが誤解を招く可能性があることは理解できます…技術的にはウィジェットをマウントしますが、ウィジェットが必要とするデータが自動的に利用可能になるという意味ではありません。

次のように、カテゴリをウィジェットに渡してみてください。

{{mount-widget widget="hamburger-categories" args=(hash categories=this.site.categories)}}
「いいね!」 1

ありがとうございます。なるほど、表示されるようになりました。

コンソールへのログについて話しているのですが、
ドキュメント Developing Discourse Themes & Theme Components に従っているとき、

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

を実行しても、「グローバルオブジェクトがコンソールに表示される」のではなく、クラスが表示されます。

そして、次のようなことを試すと、

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

このエラーが表示されます。
THEME 6 'BCN Theme - watched locally'] Deprecation notice: use injected siteSettings instead of Discourse.SiteSettings

「いいね!」 1