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

:information_source: 概要 選択されたグループにアクセスが制限されたカスタムサイドバーメニューを作成します
:eyeglasses: プレビュー このテーマクリエーターグループに参加してから、こちらでプレビューしてください
:hammer_and_wrench: リポジトリ \u003chttps://github.com/Lillinator/discourse-group-sidebar-menus\u003e
:question: インストールガイド テーマまたはテーマコンポーネントのインストール方法
:open_book: Discourseテーマは初めてですか? Discourseテーマを使用するための初心者ガイド

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

:woman_technologist:t2: 概要

このDiscourseテーマコンポーネントは、フォーラム管理者に、選択されたグループのメンバーのみがアクセスできるカスタムサイドバーメニューを作成する機能を提供します。

主な機能:

  • グループベースのアクセス制御 - メニューセクションは承認されたユーザーに対してのみレンダリングされます
  • 管理者UI設定 - グループメニューセクションを作成するためのすべての設定は、テーマコンポーネントの管理者UIにあります
  • 複数のセクション - 異なるグループに対して無制限のメニューセクションを作成できます(常識の範囲内で)
  • クライアントサイドのセキュリティ - 権限のないユーザーは、DOM、Webインスペクター、またはセーフモードでメニューセクションを表示できません
  • グローバルな汚染なし - グローバルなサイドバーセクションを作成する必要がありません
  • 管理者クイック編集リンク - メニューヘッダーの鉛筆アイコンは、管理者をコンポーネント設定に直接リンクします

:briefcase: ユースケース

  • スタッフ専用のリソースとクイックリンク
  • カテゴリモデレーターのショートカット
  • カスタムグループポータル(プロジェクトチーム、学習グループ、ブッククラブ、VIPメンバー)
  • 親またはパートナーのウェブサイトリソースへのリンク

:gear: 設定

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

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

セクションのプロパティ

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

リンクのプロパティ

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

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

  1. https://meta.discourse.org/t/how-do-i-install-a-theme-or-theme-component/63682に従ってテーマコンポーネントをインストールします。
  2. オブジェクト設定エディタに移動します
  3. 最初のカスタムメニューセクションを設定するには、+ new_menu_sectionボタンをクリックします
  4. メニュータイトルフィールドに新しいメニューのタイトルを付け、アクセスを許可するグループを選択します。
  5. + new_menu_sectionをクリックして別のセクションを追加するか、変更を保存します。
設定例を含む管理者設定スクリーンショット

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

\u003e #### 2つのカスタムメニューと3人のユーザー(うち1人は管理者)がいる例のシナリオ:
\u003e * @Catraは猫が大好きで、pinkグループのメンバーであり、このグループはCat Menu :grinning_cat: へのアクセス権を持ちます
\u003e * @HelloKittyは犬が好きで、purpleグループのメンバーであり、このグループはDog Menu :dog_face: へのアクセス権を持ちます
\u003e * @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: "スタッフリソース"
Allowed Groups: staff
Links:
  - Icon: wrench
    Text: モデレーションガイド
    URL: /t/moderation-guide/123
  - Icon: chart-line
    Text: 分析ダッシュボード
    URL: /admin/dashboard

:light_bulb: 重要な注意事項

管理者アクセス

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

グループ設定

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

テストと整理

  • テストアカウントを使用して、異なるグループの組み合わせに対する正しいアクセスを確認してください。
  • フォーラムが大きくなり、グループが増える場合は、メニュー設定を追跡して混乱を避けてください。大規模なフォーラムでは、アクセス行列または同様のドキュメントが推奨されます。

セキュリティに関する考慮事項

このコンポーネントはUIレベルのアクセス制御を提供します。メニューアクセスを制御し、リソースアクセスを制御するものではありません。カテゴリセキュリティ権限の代わりになるものではありません。

このコンポーネントが保護するもの:

  • :white_check_mark: メニューセクションは、権限のないユーザーグループからはアクセスできません
  • :white_check_mark: リンクはインスペクター/コンソール/セーフモードでは検出できません
  • :white_check_mark: メニューの煩雑さがないクリーンなUX

管理者によるベストプラクティス:

  • このコンポーネントを設定する前に、リンクされたカテゴリのセキュリティ権限と関連するグループメンバーシップを個別に設定してください - 設定を計画してください。
  • 管理者は、外部リソースへのリンクが選択されたグループに対して適切に承認されていることを確認する責任があります。

その他の注意事項 :pen:

  • このコンポーネントはDiscourse Sidebar Menu Reorderと互換性があります。これは、スクリーンショットの2つのカスタムメニューセクションをサイドバーの上部に配置するために使用されました。カスタムメニューセクションタイトルをスラッグ形式(例:cat-menu)で使用するだけです。
  • これは@Moinとの共同プロジェクトでした - 彼女のインプット、インスピレーション、フィードバックは非常に貴重でした。
「いいね!」 7

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

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

「いいね!」 1

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

「いいね!」 4