Discourse カテゴリ ホーム 🏠

概要:

コミュニティごとに特定のホームページ(「ホームカテゴリ」)をユーザーに割り当てます。

これにより、プライマリグループに基づいてユーザーが特定の「ホームページ」(つまりカテゴリ)を持つ単一のDiscourseインスタンスを運用できます。

:link: GitHub: リポジトリ https://github.com/merefield/discourse-category-home
:arrow_right: インストール: プラグインのインストールガイドに従ってください。

このプラグインをお楽しみいただけましたら、GitHub で:star:評価をお願いします!:pray:

機能

通常のDiscourseのインターフェース要素のみを使用するため、堅牢で保守しやすいソリューションです。

設定

通常のDiscourseの機能を使用します。

  • カテゴリの「ホーム」:houses:の数を決定し、存在しない場合は作成します。
  • 存在しない場合は、それぞれに個別のグループを作成します。
  • 各グループにユーザーを適切に追加します。
  • 各ユーザーのプライマリグループとしてそのグループを設定します。
  • 各グループにそれぞれのカテゴリへのアクセス許可を与えます。

これで完了です!:tada:

これで、誰かがコミュニティのホームページにアクセスすると、プライマリグループのアクセス許可が設定されているカテゴリにリダイレクトされます。

注: これは、遵守する必要がある単純なルールに従います:プライマリグループが登録されており、それが単一のカテゴリにアクセス許可されている場合、そのカテゴリにリダイレクトされます。

このようにプライマリグループを使用することには、上記のリンクからお気づきの通り、多くの利点があります。特に:

  • タイトルを付与できます
  • フレアを付与できます
  • ポストをスタイル設定できます

その他の考慮事項

カテゴリホームページを、例えば Category Banners のようなもので、明確にスタイル設定して、よりインパクトのあるものにしてください。

個別のカテゴリ/プライマリグループのアクセス許可を確認する

プライマリグループが単一のカテゴリにのみ関連付けられていることを確認するには、Discourseの便利な標準機能を使用できます。例:

リストにカテゴリが1つだけあります。良好です!:+1:

技術的な部分

使用される正確なロジックは次のとおりです。

   return CategoryGroup.where(group_id: primary_group).first.category_id

「ごまかす」ことは可能かもしれませんが、複数のカテゴリでそのプライマリグループを使用している場合に、これが機能することを期待するのであれば、おそらく賢明ではありません。そのため、それを念頭に置き、私の推奨事項に従ってください。

より柔軟性を提供する

この動作をさらに設定する方法については提案を受け付けていますが、カスタム設定の量を制限し、標準の動作とデータをできるだけ多く使用したいと考えています。シンプルでエレガントな解決策があれば教えてください。

プラグインをインストールできない/プライマリグループの機能が機能しない場合

プラグインをインストールできない場合(制限的なホスティングプランのため)、またはプライマリグループの設定が機能しない場合は、このテーマコンポーネントの代替案を検討してください:https://meta.discourse.org/t/custom-homepage-for-groups/199623。これにはより多くのカスタム設定が必要ですが、侵襲性は低いです。

「いいね!」 24

アプリに追加しようとした後、再構築しようとするとエラーメッセージが表示されます。

Pups::ExecError: cd /var/www/discourse/plugins & git clone GitHub - merefield/discourse-category-home: Alters the user's homepage to become the Category of their Primary Group は、リターン #<Process::Status: pid 391 exit 128> で失敗しました。
失敗場所: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn’

これは他の人にはまだ機能していますか?

問題なさそうですね。app.yml のクローン構文を確認してください。

ただし、ロケール文字列の欠落に対する修正をデプロイしました(これはあなたの問題の原因ではありませんでした)。:slight_smile:

「いいね!」 1

はい、今ではうまく動作しています。素晴らしいプラグインをありがとうございます。Discourse Doctor が修正してくれました。前回アプリを再構築した際のビルドに問題があったようです。

「いいね!」 1