| 概要 | 特定のグループ向けのカスタムサイドバーメニューを作成します | |
| プレビュー | このテーマクリエイターグループに参加し、こちらでプレビューしてください | |
| リポジトリ | https://github.com/Lillinator/discourse-group-sidebar-menus | |
| インストールガイド | テーマまたはテーマコンポーネントのインストール方法 |
このテーマコンポーネントをインストール
概要
このDiscourseテーマコンポーネントにより、フォーラム管理者は選択されたグループのメンバーのみがアクセスできるカスタムサイドバーメニューを作成できるようになります。
主な機能:
- グループベースのメニュー表示制御 - メニューセクションは、権限を持つユーザーのサイドバーにのみ表示されます
- オブジェクトベースの設定 - メニュー作成のための使いやすい設定UI
- 複数のセクション - 異なるグループ用に無制限のメニューセクションを作成できます(常識的な範囲内で)
- 管理者用クイック編集リンク - メニューヘッダーの鉛筆アイコンから、管理者が直接コンポーネント設定画面にアクセスできます
使用例
- スタッフ専用のリソースとショートカットリンク
- カテゴリモデレーター用ショートカット
- カスタムグループポータル(プロジェクトチーム、勉強会、読書会、VIPメンバーなど)
- 親サイトや提携サイトのリソースへのリンク
設定
メニューセクション (menu_sections)
カスタムグループメニューセクションを設定するためのオブジェクト設定エディタを開きます。
セクションのプロパティ
| プロパティ | 説明 |
|---|---|
| メニュータイトル | サイドバーのセクションヘッダーとして表示されるタイトル |
| 許可されたグループ | このメニューセクションを表示できるグループ(1セクションあたり最大20グループ) |
| メニューリンク | このセクションに表示するリンクのコレクション(1セクションあたり最大20リンク) |
リンクのプロパティ
| プロパティ | 説明 |
|---|---|
| アイコン | FontAwesomeアイコン名(例:circle-info、star、user-group)。管理 > サイト設定すべて > svgアイコンサブセットに追加する必要がある場合があります |
| テキスト | リンクに表示されるラベル |
| URL | リンク先 - 相対パス(/faq、/my/preferences)と絶対URL(https://example.com)の両方をサポート |
インストールと設定
- Installing a theme or theme component に従ってテーマコンポーネントをインストールします。
オブジェクト設定エディタに移動します。+ new_menu_sectionボタンをクリックして、最初のカスタムメニューセクションを設定します。メニュータイトルフィールドに新しいメニューのタイトルを入力し、アクセスを許可するグループを選択します。+ new_menu_sectionをクリックして別のセクションを追加するか、変更を保存します。
管理者設定のスクリーンショット(設定例付き)
新規インストール - オブジェクト設定エディタに移動します。
カスタムメニュー2つとユーザー3人(そのうち1人が管理者)の例:
@Catraは猫が好きで、pinkグループのメンバーであり、Cat Menu(猫メニュー)にアクセスできます@HelloKittyは犬が好きで、purpleグループのメンバーであり、Dog Menu(犬メニュー)にアクセスできます@Lillyは犬を飼っているため(犬の方が優れているので)、purpleグループのメンバーです。しかし、彼女はフォーラムの管理者でもあり、管理者は猫の世話が必要だからという理由でCat Menu(猫メニュー)にアクセスできます![]()
新しいカスタムメニューを作成します。例ではCat menu(猫メニュー)を作成し、アクセスを許可するグループとしてpinkとadminsを追加します。次に、+ menu_linkボタンをクリックして、新しいメニューのリンクを設定します。
いくつかのメニューリンクを追加します。1. FontAwesomeアイコン名、2. リンクに表示するテキスト、3. 相対または絶対のURL。+ menu_linkボタンをクリックして、このメニューに別のリンクを追加します。
Dog menu(犬メニュー)という別のカスタムメニューセクションを作成し、purpleグループのみアクセスできるようにし、リンクを設定します:
結果として表示されるサイドバーメニューへのアクセスのスクリーンショット
ユーザー@Catraは猫メニューを持っています! ![]()
ユーザー@HelloKittyは犬メニューを持っています! ![]()
管理者ユーザー@Lillyは両方のメニューを持ち、編集できます! ![]()
設定例
Menu Title: "Cat Stuff"
Allowed Groups: team-cat
Links:
- Icon: link
Text: Cat videos & photos
URL: /t/cat-videos-and-photos/123
- Icon: magnifying-glass
Text: Cat wiki
URL: https://en.wikipedia.org/wiki/Cat
重要な注意事項
管理者のアクセス
管理者はグループに自身を追加する必要があります。そうすることで、そのグループ用に設定されたメニューを表示できます。管理者であることだけでは、すべてのカスタムメニューへのアクセス権は付与されません。これは意図的な設計です。また、メニューの許可グループに属する管理者は、セクションヘッダーにコンポーネント設定画面へのリンクとなる鉛筆アイコンを表示します。
グループの設定
everyone(全員)グループはサポートされていません - 匿名の訪問者を含むすべてのユーザー向けのグローバルカスタムメニューを作成するには、ネイティブなサイドバーフッターUIを使用してください。- メニューセクションあたり最大20グループです。それ以上必要な場合は、異なるグループ割り当てを持つ重複したセクションを作成してください。
- 複数のグループに属するユーザーは、アクセス権限のあるすべてのメニューセクションを表示します。
テストと整理
テストアカウントを使用して、異なるグループの組み合わせでの正しいアクセスを確認してください。複雑さが増すにつれて混乱を避けるために、メニュー設定を追跡してください。グループの多い大規模なフォーラムでは、アクセス行列または同様のドキュメントの作成をお勧めします。
セキュリティ上の考慮事項
このコンポーネントはUIレベルのアクセス制御のみを提供します。これはメニューの表示を制御するものであり、リソースへのアクセスを制御するものではありません。このコンポーネントはサイドバーに何を表示するかを制御するだけで、実際のリソースへのアクセス権を制御するものではありません。
実際のリソースの保護には、常にDiscourseの組み込み権限システムに依存してください:
- カテゴリの権限を適切に設定する
- トピックの表示制限を設定する
- コンテンツに対してグループベースのアクセス制御を使用する
- プライベートリソースは認証が必要であることを確認する
管理者のベストプラクティス:
リンクされたカテゴリのセキュリティ権限とグループメンバーシップは別々に設定してください。例えば:プライベートカテゴリへのメニューリンクには、そのカテゴリの権限が適切に設定されている必要があります。管理者は、選択されたグループに対して外部リソースへのリンクが適切に認可されていることを確認する責任があります。
これは@Moinとの共同プロジェクトでした。彼女の入力、インスピレーション、フィードバックは非常に貴重でした。
他のDiscourse関連コンテンツをチェック








