条件付きユーザーフィールド

ユースケース

コミュニティのオンボーディングエクスペリエンスを改善する作業を行っています。当然のことながら、ユーザーに関する情報を利用して、提供された情報に基づいて特定のことを行ったり表示したりしたいと考えています。

現在、ユーザーはまず、当社のOIDC統合を通じてアカウントを作成し、当社と契約します。OIDCは、Discourseにリダイレクトする前に、メール、氏名、ユーザー名をOIDCに提供します。

問題点

ユーザーが入力する追加のユーザーフィールドを提供したいと考えています。これは素晴らしいことです。Discourseにはこれがあります!残念ながら、前のフィールドの回答に基づいてフィールドを表示することはできません。たとえば、「あなたの役割を最もよく表すものはどれですか?」と尋ね、選択肢としてdeveloperadministratoranalystを提供したいとします。

  • developerを選択した場合、もちろん、好みのプログラミング言語を尋ねます。後で開発者ユーザーグループに追加します。
  • analystを選択した場合、別の質問シリーズを尋ね、別のユーザーグループに追加します。

提案ソリューション

今日のWeb上の多くのフォームオプションには、条件付きフォームフィールドがあります(例:「どこで私たちを知りましたか?」で「その他」を選択すると、理由を説明するための追加フィールドが表示されます)。新しいトピックフォームテンプレートで提供されているものと同様の(ただし、より堅牢な)パスを開始できれば素晴らしいでしょう。ただし、別のフィールドID、特にそのフィールドの入力に依存できるという追加の要件があります。たとえば、次のようになります。

- type: dropdown
  id: user-type
  choices:
    - "Developer"
    - "Application Administrator"
    - "Analyst"
  attributes:
    none_label: "役割を選択してください..."
    label: "あなたの仕事に最もよく当てはまる選択肢はどれですか"
  validations:
    required: true
- type: dropdown
  id: developer-type-programming-language
  depends: user-type
    choices:
      - "Developer"
  choices:
    - "Developer"
    - "Application Administrator"
    - "Analyst"
  attributes:
    none_label: "好みのプログラミング言語..."
    label: "あなたの役割で使用される主なプログラミング言語は何ですか?"
  validations:
    required: true

この例では、すべてのユーザーに最初の質問が尋ねられます。ドロップダウンリストからDeveloperを選択すると、次に好みのプログラミング言語を尋ねる2番目の質問がフォームに表示されます。

この条件付きフィールドの改善は、ユーザーオンボーディングプロセスと、新しいトピックの元の意図された場所の両方で使用できます。

「いいね!」 5

GitHub - discourse/discourse-authentication-validations を参照してください。これはユーザーサインアップページでのみ機能しますが、ユーザー設定ページに適用するのは簡単ではないようです。

しかし、あなたは問題を解決するのではなく、機能を追加するように求めているのです。

「いいね!」 6

有望ですね。それに関するドキュメントがもっと見たいです。

詳細については、メタトピックへのURL を参照してください。

意図はあったようですね。

「いいね!」 1

残念ながら、それだけです。

これは GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins からの定型文です。

「いいね!」 2

プラグインは非常に直感的です。

下部のチェックボックスで認証オプションが追加されます。

次に、次のユーザーカスタムフィールドをアクティブにするトリガー応答を入力します。私の場合は、ヘッドセットの数が「なし」より大きい場合です。

入力したら、表示したいカスタムユーザーフィールドをターゲットにします。私の例では、1〜6以上の場合、ユーザーはプライマリおよびセカンダリHMDを入力するように求められます。

これは、実験的なフォームテンプレートに拡張されると素晴らしいでしょう。

「いいね!」 5

しばらくToDoリストに入っていました…今週中に追加します:)

「いいね!」 3

すでにこれを書いたと思っていました… :sweat_smile:

リポジトリをメタリンクで更新します。

「いいね!」 1

しまった!私も忘れていました。

これらの条件は、アカウント作成ページだけでなく、ユーザープロフィールでも機能するようにできますか?(アカウント作成ページでのみ機能していると理解していると思います。後で戻って入力してもらい、それらのルールを強制したい人がいます。)

「いいね!」 1

はい、現在このプラグインの影響を受けているのはこの場所のみです。

認識を合わせさせてください。

/preferences/profile を介して 公開 カスタムユーザーフィールドを更新する機能が必要で、アカウント作成モーダルと同じ条件付き表示/非表示ロジックを適用しますか?

例えば、カスタムフィールド1 の値が カスタムフィールド2を表示 の場合、2番目のカスタムフィールドを表示する、といったことですか?

「いいね!」 2

はい。Editable after signup であるすべての custom_user_fields に、/preferences/profile ページに同じルールが適用されるようにしたいです。

その通りだと思います。アカウント作成モーダルで有効になっているのと同じルールが、プロフィールページでも有効になります。

「いいね!」 3

これは素晴らしい追加機能になると思います。条件付きフィールドロジックをプロファイルページに移動するのは、かなり簡単のはずです。

これは#pr-welcomeの良い候補になりますが、私も来月あたりに確認してみることができます。

「いいね!」 4

まあ、あなたにとってはそうでしょうね!試してみましたが、すぐに迷ってしまいました。設定ページに何かをコピーするのと同じくらい簡単だと思われましたが、どの部分をコピーすればよいのか、すぐに理解できる以上のことでした。

それは素晴らしいですね!

「いいね!」 4