すべてのユーザーに同じサイドバーカテゴリーを設定する方法

:bookmark: このガイドでは、デフォルトのサイドバーカテゴリの設定方法と、既存のユーザーへの適用方法について説明します。

:person_raising_hand: 必要なユーザーレベル: 管理者

デフォルトナビゲーションメニューカテゴリを使用すると、デフォルトでサイドバーに表示されるカテゴリを選択できます。既存のユーザーに変更を適用したり、ユーザーがサイドバーから削除したカテゴリを再適用したりすることも可能です。

この設定は、すべてのユーザーに同一のサイドバーを強制するものではありません。 各ユーザーのカテゴリリスト全体を置き換えるのではなく、追加と削除を適用します。ユーザー自身が追加した他のカテゴリは残ります。

デフォルトカテゴリの設定

  1. 「管理」→「すべてのサイト設定」に移動します。
  2. デフォルトナビゲーションメニューカテゴリを検索します。
  3. セレクターを開き、デフォルトで表示するカテゴリを選択します。カテゴリを削除するには、名前の横にある「×」をクリックします。
  4. 「✓」ボタンをクリックして保存します。

  1. 変更を履歴的に適用するよう求められた場合は、次のいずれかのオプションを選択します:
    • 「はい」を選択すると、既存のユーザーへの追加と削除が適用され、その後に参加する人向けのデフォルトも更新されます。
    • 「いいえ、変更は今後だけ適用する」を選択すると、既存のユーザーのサイドバーを変更せずにデフォルトのみを更新します。

影響を受けるユーザー数はサイトによって異なります。既存のユーザーが変更の影響を受けない場合、プロンプトが表示されないことがあります。

デフォルトリストに既に含まれているカテゴリを再適用する

ユーザーがデフォルトカテゴリをサイドバーから削除した場合、同じデフォルトリストを保存しても、そのカテゴリは再度追加されません。追加と削除のみが適用されるためです。

設定されたカテゴリを再適用するには:

  1. 表示したいカテゴリを控えておきます。
  2. デフォルトナビゲーションメニューカテゴリからすべてのカテゴリを削除し、保存します。プロンプトが表示されたら、「はい」を選択して削除を既存のユーザーに適用します。
  3. バックグラウンド更新が完了するまで待ちます。数分かかる場合や、大規模なサイトではさらに時間がかかる場合があります。
  4. 表示したいカテゴリを再度追加し、保存します。プロンプトが表示されたら、「はい」を選択して追加を既存のユーザーに適用します。
  5. 2番目のバックグラウンド更新が完了するまで待ち、ページをリフレッシュしてサイドバーを確認します。

これにより、設定されたデフォルトが削除され、再度追加されます。この設定に一度も含まれていなかった個人で追加したカテゴリは削除されません。

既存のユーザーにどのような変更が加わるか理解する

「はい」を選択すると、Discourseは前回と更新後の設定の差分を適用します:

設定への変更 既存のユーザーへの効果
カテゴリを追加する ユーザーのサイドバーカテゴリリストにまだ存在しない場合、そのカテゴリを追加します。
カテゴリを削除する ユーザーが自分で選択したカテゴリも含め、ユーザーのサイドバーカテゴリリストから削除します。
カテゴリを変更しない 以前にそのカテゴリを削除したユーザーには再適用しません。
設定外で個人が追加したカテゴリを変更しない 削除しません。

たとえば、「General」がデフォルトカテゴリであり、ユーザーが自分で「Support」も追加しているとします。「General」をクリアして再追加しても、「Support」が設定から削除されていない限り、「Support」は削除されません。

制限事項を確認する

  • カテゴリの権限は適用されます。 プライベートカテゴリを選択しても、アクセス権のないユーザーにアクセス権を与えることや、そのカテゴリを見えるようにすることにはなりません。
  • ユーザーはその後もサイドバーをカスタマイズできます。 これはデフォルトおよび一括更新であり、カテゴリリストを強制するものではありません。
  • これは完全なサイドバーリセットではありません。 クリアして再適用する手順では、すべてのユーザーに同一のカテゴリリストが保証されるわけではありません。

追加のリソース

「いいね!」 5

以前のデフォルト設定を削除してすぐに追加する方法と、間に少し間を置いて2段階で行う方法の違いは何でしょうか?

一時的に、このプロセスですべての個人のカスタマイズがリセットされるかと思いました。しかし、私のテストではそうではないことがわかりました。カテゴリが以前のサイドバーのデフォルト設定に含まれていなくても、ユーザー自身が追加した場合、設定がクリアされただけでは削除されません。設定に以前構成されていたものだけが削除されます。

したがって、サイドバーを全員に対して同じ状態にするには、以下の手順が必要です:

  • すべてのカテゴリを設定に追加する(できれば全員に対して上書きしないようにする)
  • 次に、設定からすべてのカテゴリを削除し、全員に対してこれを上書きする
  • (数分待つ?)
  • 新しいカテゴリを追加し、全員に対してこれを上書きする

ステップ2と4は分離する必要があります。なぜなら、ステップ1は全員に適用されていなかったからです。ステップ1を全員に適用して、全員がサイドバーにすべてのカテゴリを持つようにし、数分後に不要なカテゴリを削除することもできますが、その場合、数分間ユーザー体験が悪化する可能性があります。

私のテスト、つまり手動で追加されたカテゴリをクリアする設定が削除されないという結果は誤りでしょうか?それとも、手順を分ける別の理由があるのでしょうか?この情報を把握したいので、Configuring the default sidebar for your users に追加する情報を検討したいと考えています。

「いいね!」 3

@Moin
ここでのバックフィルの動作は、一般的に予想されるものと少し異なります。default navigation menu categories設定が更新された際に、すべてのユーザーのサイドバーカテゴリを単純にリセットするわけではありません。私たちが行うことは以下の通りです:

  • 管理者が設定にいくつかのカテゴリを追加した場合、まだ設定されていないすべてのユーザーのサイドバーに、新しく追加されたカテゴリのみが追加されます。
  • 設定からいくつかのカテゴリを削除した場合、それらのカテゴリはすべてのユーザーのサイドバーから削除されます。

つまり、バックフィルは設定の状態をすべてのユーザーに強制するのではなく、設定に新しく追加または削除された値の差分のみを適用します。

この方法を採用した主な理由は、個々のユーザーの好みを維持するためです。

この動作が導入された PR は以下の通りです:

すべてのユーザーに同じカテゴリを適用する方法として、以下の2つのアプローチを認識しています:

  1. すべてを追加し、履歴を適用し、いくつかを削除し、履歴を適用する。
  2. すべてを削除し、履歴を適用し、いくつかを追加し、履歴を適用する。

最近、大規模なサイトに対してこの作業を試みた際、1 は正しく動作しませんでした。一方、2 は問題なく動作しました。そのため、2 をドキュメント化しました。

もしお時間があれば、複数のユーザーで両方の方法を試して、正常に動作するか確認してみてください。必要であれば、更新が期待通りに行われたかを確認するための SQL クエリを作成することもできます。ご意見をお聞かせください。

「いいね!」 1

最初の投稿で説明された手順を再度試してみました。しかし、同じ問題が依然として発生しています:ユーザーがサイドバーに追加したカテゴリが削除されないため、結果としてすべてのユーザーがサイドバーに同じカテゴリを持っているわけではありません。

詳細な再現手順
  1. 新しいフォーラムを作成しました
  2. 5 つのカテゴリ(category1、category2、category3、category4、category5)を作成しました
  3. 「サイドバーカテゴリの編集」オプションを使用して、category4 を自分のサイドバーに追加しました

  4. カテゴリが自分のサイドバーに追加されました
  5. default_navigation_menu_categories サイト設定を確認しました
  6. ガイドで言及されている通り、すべてのカテゴリを削除しました


そして、変更をすべてのユーザーに適用しました

7. これで設定が空になりました

8. サイドバーを確認したところ、手動で追加された category4 だけが含まれていました(下部にあるサイト設定へのリンクも、サイト設定が空であることを示しています)

9. 約 45 分待ってから、category1、category2、category3 を設定に追加しました

そして、変更をすべてのユーザーに適用しました

このガイドのタイトルに基づく期待される結果: すべてのユーザーがサイドバーに同じカテゴリを持っていること。つまり、設定に含まれるカテゴリのみが存在すること。
実際の結果: category4 がサイドバーに残っています。一方、手動で追加していないユーザーのサイドバーには存在しません。

どの手順で、ユーザーがサイドバーに追加したカテゴリ(私の例では category4)が削除されると期待していますか?これにより、すべてのユーザーがサイドバーに同じカテゴリを持つ結果になります。

ここであなたが述べた内容に基づくと、カテゴリが設定から削除されていないため(そもそも設定に含まれていなかったため)、削除されるとは期待していません。しかし、あなたはすべてのユーザーに同じカテゴリを強制するためにこれらの手順を使用したと言っています。
すべてのカテゴリを追加する方法(方法 1)を採用すれば、category4 は追加され、その後削除されるため、消えることを期待していました。そこで私は何が起こっているかを理解しています。しかし、あなたのガイドでは方法 2 を使用すべきだと書かれています。そのため、私の理解やテストで何が欠けているのか疑問に思っています。

「いいね!」 1

@moin このガイドの出来栄えについてどう思われますか?答えが必要なことはすべてカバーできていますか?長すぎますか?それとも短すぎるでしょうか?

(ドキュメントを実際のコードに合わせて整合させ、スクリーンショットを更新するためのボットを作成中です)