| 概要 | どこにでもボタンやテキストを追加する機能 | |
| リポジトリ | https://github.com/literatecomputing/discourse-custom-components | |
| インストールガイド | テーマまたはテーマコンポーネントのインストール方法 | |
| Discourseテーマは初めてですか? | Discourseテーマ使用の初心者ガイド |
このテーマコンポーネントをインストール
プラグインアウトレットのどこにでもリンクボタンや任意のテキストを追加できます。(画像内の透かしは無視してください。ステージング/テストサイトでスクリーンショットを撮りました。)
プラグインアウトレットがどこにあるかを確認するには、https://meta.discourse.org/t/introducing-discourse-developer-toolbar/346215 を使用してください。プラグインアウトレットが何であるかわからない場合は、https://meta.discourse.org/t/using-plugin-outlet-connectors-from-a-theme-or-plugin/32727 を確認できますが、このコンポーネントを使用すると、プログラミングを行ったり、プラグインアウトレットについて真剣に理解したりすることなく、いくつかの制限付きでテキストを任意のプラグインアウトレットに挿入できます。
このプラグインは、ユーザープロファイルやユーザーカードに「購読するにはここをクリックしてください。そうすればプライベートメッセージを送信できます」というボタンを表示したい人のために開発を始めました。彼らは、プライベートメッセージを送信できないユーザーに対してボタンが表示されることを望んでいました。私が思うほど賢くないことがあるため、グループを使用してボタンが表示されるかどうかを判断するようにコンポーネントを作成しました。このアプローチの1つの問題は、スタッフメンバーが購読者グループに含まれていなかったため、プライベートメッセージを送信できるにもかかわらず、「購読する必要があります」というボタンが表示されてしまうことでした。また、グループは非表示になっていたため、テーマコンポーネントでそれを使用することはそもそも不可能でした。私は、ボタンを表示するかどうかを判断するために currentUser.can_send_private_messages を使用するように、そのテーマコンポーネントを書き直しました。
これは誰のためですか?
リンク付きのボタン、または特定のグループに対して表示/非表示が切り替わる任意のテキストを挿入したい場合は、これを任意のプラグインアウトレットに挿入できます。メンバーではないユーザーを除くすべてのメッセージの間に「購読する必要があります」というリンクボタンを追加したいですか?これはそれを実現します。任意のHTMLをプラグインアウトレットに貼り付けて、どのように見えるか確認したいですか?これも可能です。
開発者にとってのメリット
このテーマには、次の方法に関するいくつかの簡単な例が含まれています。
- Objects type for theme setting の使用
api.renderInOutletの使用(こちらで説明されている)により、設定によって制御されるアウトレットにGlimmerコンポーネントを貼り付けることができます。connectorsディレクトリにファイルを作成するのではなくcurrentUserにアクセスするシンプルなGlimmerコンポーネントの記述- コンポーネントを別の(インライン)テンプレートにラップすることで、データを渡せるようにする
- テーマ設定からMarkdownの制約なしに任意のHTMLを表示する。確かに、おそらく
しかし、.gjs ファイル内の <template> 内でこれを試みている場合、動作は少し異なります(例:{{htmlSafe component.text}})



