Discourse グループサイドバーメニュー

| | |
|— | — | —|
|:information_source: | 概要 | 特定のグループ向けのカスタムサイドバーメニューを作成|
|:eyeglasses: | プレビュー | テーマクリエーターグループに参加し、こちらでプレビューしてください|
|:hammer_and_wrench: | リポジトリ | https://github.com/Lillinator/discourse-group-sidebar-menus|
|:question: | インストールガイド | テーマまたはテーマコンポーネントのインストール方法|
|:open_book: | Discourse テーマに不慣れですか? | Discourse テーマの利用に関する初心者ガイド|

このテーマコンポーネントをインストール

:woman_technologist:t2: 概要

この Discourse テーマコンポーネントを使用すると、フォーラム管理者は特定のグループのメンバーのみがアクセスできるカスタムサイドバーメニューを作成できます。

主な機能:

  • グループベースのメニュー表示権限 - メニューセクションは、権限を持つユーザーのサイドバーでのみレンダリングされます
  • オブジェクトベースの設定 - メニュー作成用の使いやすい設定 UI
  • 複数のセクション - 異なるグループ向けに無制限のメニューセクションを作成可能(実用上の制限あり)
  • 管理者用クイック編集リンク - メニューヘッダーの鉛筆アイコンをクリックすると、コンポーネント設定に直接移動できます

:briefcase: 使用例

  • 担当者専用リソースとクイックリンク
  • カテゴリモデレーター用ショートカット
  • カスタムグループポータル(プロジェクトチーム、学習グループ、読書会、VIP メンバーなど)
  • 親サイトやパートナーサイトのリソースへのリンク

:gear: 設定

メニューセクション (menu_sections)

カスタムグループメニューセクションを設定するためのオブジェクト設定エディタを開きます。

セクションのプロパティ

プロパティ 説明
メニュータイトル サイドバーセクションのヘッダーとして表示されるタイトル
許可されたグループ このメニューセクションを表示できるグループ(セクションあたり最大 20 グループ)
メニューリンク このセクションに表示するリンクのコレクション(セクションあたり最大 20 リンク)

リンクのプロパティ

プロパティ 説明
アイコン FontAwesome のアイコン名(例:circle-infostaruser-group)。Admin > 全てのサイト設定 > svg アイコンのサブセット に追加する必要がある場合があります
テキスト リンクの表示ラベル
URL リンクの宛先 - 相対パス(/faq/my/preferences)と絶対 URL(https://example.com)の両方をサポート

:wrench: インストールと設定

  1. Installing a theme or theme component に従ってテーマコンポーネントをインストールします。
  2. オブジェクト設定エディタ に移動します
  3. + new_menu_section ボタンをクリックして、最初のカスタムメニューセクションを設定します
  4. メニュータイトル フィールドに新しいメニューのタイトルを入力し、アクセス権を付与したいグループを選択します。
  5. 別のセクションを追加するには + new_menu_section をクリックするか、変更を保存します。
設定例を含む管理者用設定画面のスクリーンショット

新規インストール後 - オブジェクト設定エディタ に移動します。

2 つのカスタムメニューと 3 人のユーザー(そのうち 1 人は管理者)の例:

  • @Catra は猫が大好きで、pink グループのメンバーです。このグループは Cat Menu にアクセスできます :grinning_cat:
  • @HelloKitty は犬が好きで、purple グループのメンバーです。このグループは Dog Menu にアクセスできます :dog_face:
  • @Lilly は犬を飼っているため purple グループのメンバーですが、犬の方が優れていると考えています。ただし、彼女はフォーラムの管理者でもあり、猫はより多くの監督が必要であるため、Cat Menu にもアクセスできます :dog_face: :cat_with_wry_smile:

新しいカスタムメニューを作成します - 例として Cat menu を作成し、アクセス権を付与するグループ(pinkadmins)を追加します。その後、+ menu_link ボタンをクリックして、新しいメニューのリンクを設定します。

メニューリンクを追加します - 1. Fontawesome のアイコン名、2. リンクに表示するテキスト、3. 相対または絶対の URL。このメニューに別のリンクを追加するには + menu_link ボタンをクリックします。

Dog menu という名前の別のカスタムメニューセクションを作成し、purple グループのみにアクセス権を付与してリンクを設定します:

結果としてのサイドバーメニューへのアクセスのスクリーンショット

ユーザー @Catra は Cat メニューを持っています!:grinning_cat:

ユーザー @HelloKitty は Dog メニューを持っています!:dog_face:

管理者ユーザー @Lilly は両方のメニューを持ち、編集することもできます!:smiling_cat_with_heart_eyes:

設定例

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

:light_bulb: 重要な注意点

管理者アクセス

管理者は、グループ用に設定されたメニューを表示するには、自分自身をそのグループに追加する必要があります。 管理者権限だけでは、すべてのカスタムメニューへのアクセスは得られません。これは意図的な設計です。また、メニューの許可グループに所属する管理者は、セクションヘッダーにコンポーネント設定へのリンクを含む鉛筆アイコンを表示します。

グループ設定

  • everyone グループはサポートされていません - すべてのユーザー(匿名の訪問者を含む)向けのグローバルカスタムメニューを作成するには、ネイティブのサイドバーフッター UI を使用してください。
  • メニューセクションあたりの最大グループ数は 20 です。それ以上必要な場合は、異なるグループ割り当てを持つ重複セクションを作成してください。
  • 複数のグループに所属するユーザーは、アクセス権を持つすべてのメニューセクションを表示します。

テストと整理

異なるグループの組み合わせに対して正しいアクセス権を確認するには、テストアカウントを使用してください。複雑さが増すにつれて混乱を避けるために、メニュー設定を追跡してください。多くのグループを持つ大規模なフォーラムでは、アクセスマトリックスや同様のドキュメントの作成を推奨します。

セキュリティ上の考慮事項

このコンポーネントは UI レベルのアクセス制御のみを提供します。メニューの表示を制御するだけであり、リソースへのアクセス自体を制御するものではありません - このコンポーネントはサイドバーに表示されるものを制御するだけであり、実際のリソースへのアクセス権限を制御するものではありません。

実際のリソースを保護するには、常に Discourse の組み込み権限システムに依存してください:

  • カテゴリ権限を適切に設定する
  • トピックの表示制限を設定する
  • コンテンツに対してグループベースのアクセス制御を使用する
  • プライベートなリソースには認証を必須とする

管理者のベストプラクティス:
リンク先のカテゴリのセキュリティ権限とグループメンバーシップを別々に設定してください。例えば、プライベートカテゴリへのメニューリンクがある場合、そのカテゴリの権限が適切に設定されている必要があります。管理者は、外部リソースへのリンクが選択されたグループに対して適切に承認されていることを確認する責任があります。


これは @Moin との共同プロジェクトでした。彼女の意見、インスピレーション、フィードバックは非常に貴重でした。


他の Discourse 関連のプロジェクトもチェックしてみてください
「いいね!」 12

リポジトリで404エラーが発生しているようです。

編集:すべて正常になりました!

「いいね!」 2

はは、もう一度試してください。公開するのを忘れていました!:laughing:

「いいね!」 6

素晴らしい!ずっとこれを望んでいました。自分用に便利なカスタムサイドバーメニューのコレクションを作成しました。モデレーション用のリンク、管理者タスクと参照用、Discourseドキュメント用、フォーラムで頻繁に参照する外部コンテンツ用などです。あるメニューは、単に tag リンク(例:/tag/comm-mgt-monthly)を使用してさまざまな定期的な会議へのリンクを含んでおり、これにより現在の議題と過去の議事録にすばやくジャンプできます。

これまで、カスタムサイドバーメニューの設定をエクスポートして、チームの他のメンバーがインポートできるようにする方法を何度も望んでいました。これははるかに優れた設定です!

そしてアイコン!やった!私の知る限り、これを行う唯一の方法はカスタムCSSを追加することでした。この新しいソリューションはエレガントです。

そして持続可能!すべての管理者が設定ファイルを編集できるようになるため、私だけに依存する必要がなくなります。@Lilly@Moin に感謝します!

「いいね!」 1

こんにちは、@Lilly さん、@Moin さん、

このコンポーネントを構築していただきありがとうございます。

セルフホスト型サイトで Group sidebar menu sections - deprecated を使用していましたが、最新のアップデートで古いテーマコンポーネントが非推奨になり、代わりにこれをインストールするように警告されました。

コンポーネントをインストールし、カスタムグループメニューを作成しましたが、グループメニューを移動する方法がわかりません。(何か明白なことを見落としているに違いありません。:see_no_evil_monkey:)スクリーンショットでは、Cat MenuDog Menu がサイドバーナビゲーションの Topics セクションの上にありますが、私のカスタムグループメニューはサイドバーナビゲーションのの一番下に表示されています。どうすれば Topics の上に移動できますか?

「いいね!」 1

それは明らかではありません。Lillyはhttps://meta.discourse.org/t/discourse-sidebar-menu-reorder/394049を使用して、`cat-menu`を一番上に配置しました。

「いいね!」 3

どうもありがとうございます!設定はとても簡単でした。

「いいね!」 3