Discourseアンケート

:discourse2: 概要 Discourse Surveysプラグインを使用すると、簡単なMarkdown構文を使用してDiscourseフォーラムの投稿内に直接アンケートを作成できます。
:hammer_and_wrench: リポジトリリンク :link:GitHub - discourse/discourse-surveys
:open_book: インストールガイド Discourseにプラグインをインストールする方法

Discourse Surveysプラグインを使用すると、簡単なMarkdown構文を使用してDiscourseフォーラムの投稿内に直接アンケートを作成できます。このプラグインは現在、ラジオボタン、チェックボックス、ドロップダウン、数値入力、テキストエリア、星評価、および「いいね/よくないね」評価など、さまざまな質問タイプをサポートしています。

特徴

  • 7種類のフィールドタイプ: ラジオボタン、チェックボックス、ドロップダウン、テキストエリア、数値選択、星評価、「いいね/よくないね」評価

  • 必須/オプションのフィールド: フィールドを必須としてマークし、入力を確実に完了させます

  • 絵文字のサポート: アンケートの選択肢で絵文字を使用できます

  • HTMLサポート: 質問と選択肢でのリッチテキスト形式

  • ユーザー認証: 匿名ユーザーに対する自動ログインプロンプト

  • 回答の追跡: 同じユーザーからの重複送信を防止します

  • 権限対応: トピックとカテゴリの権限を尊重します

  • モバイル対応: すべてのデバイスでシームレスに動作します

使用方法

基本的なアンケートの構造

すべてのアンケートは [survey] タグで囲む必要があります。


[survey name="my-survey" title="顧客フィードバックアンケート"]

<!-- アンケートのフィールドはここに -->

[/survey]

アンケートの属性

  • name: アンケートの固有の識別子(デフォルトは「survey」)

  • title: アンケートの上部に表示されるオプションのタイトル

  • public: 可視性を設定(今後の機能)

  • status: アンケートのステータス(今後の機能)

フィールドタイプ

1. ラジオボタン(単一選択)


[radio question="好きな色は何ですか?"]

- 赤

- 青

- 緑

- 黄

[/radio]

2. チェックボックス(複数選択)


[checkbox question="どの機能を使用していますか?(該当するものをすべて選択してください)"]

- Eメール通知

- モバイルアプリ

- デスクトップ通知

- APIアクセス

[/checkbox]

3. ドロップダウン選択


[dropdown question="あなたの年齢層は?"]

- 18歳未満

- 18-24歳

- 25-34歳

- 35-44歳

- 45-54歳

- 55歳以上

[/dropdown]

4. テキストエリア(長文テキスト)


[textarea question="詳細なフィードバックをお願いします:" required="false"]

[/textarea]

5. 数値選択


[number question="この機能を1から10で評価してください:" min="1" max="10"]

[/number]

6. 星評価


[star question="全体的な体験をどのように評価しますか?"]

[/star]

7. 「いいね/よくないね」


[thumbs question="他の方にこれをお勧めしますか?"]

[/thumbs]

フィールド属性

すべてのフィールドタイプはこれらの属性をサポートしています。

  • question: 質問テキスト(必須)

  • required: フィールドに入力が必要かどうか(true/false、デフォルトは true

  • min: 数値フィールドの最小値

  • max: 数値フィールドの最大値

完全な例

基本的なアンケートMarkdown

利用可能なすべてのフィールドを含む基本的なアンケートMarkdownの例を次に示します。

[survey name="awesome-survey-thumbs" title="素晴らしいアンケート"]

[radio question="いずれか一つのオプションを選択してください:"]
- 猫
- 犬
[/radio]

[checkbox question="複数のオプションを選択してください:"]
- 赤
- 青
- 緑
[/checkbox]

[dropdown question="性別:"]
- 男性
- 女性
[/dropdown]

[number question="このアンケートを1から10で評価してください:"]
[/number]

[textarea question="xyzに関するフィードバックは何ですか?" required="false"]
[/textarea]

[star question="全体的な経験をどのように評価しますか?"]
[/star]

[thumbs question="弊社のサービスに満足されましたか?"]
[/thumbs]

[/survey]

アンケートのレンダリング

上記のMarkdownがDiscourseでどのようにレンダリングされるかの例を以下に示します。

高度な使用方法

選択肢での絵文字の使用


[radio question="お気に入りの動物を選んでください:"]

- 🐈 猫

- 🐶 犬

- 🐦 鳥

- 🐠 魚

[/radio]

質問でのHTML形式設定


[radio question="どの<strong>プログラミング言語</strong>を好みますか?"]

- JavaScript

- Python

- Ruby

- Go

[/radio]

必須およびオプションのフィールドの混在


[survey name="mixed-survey"]

[radio question="あなたの役割は何ですか?" required="true"]

- 開発者

- デザイナー

- マネージャー

- その他

[/radio]

[textarea question="他に何かご意見はありますか?" required="false"]

[/textarea]

[/survey]

アンケート結果

現在、このプラグインにはアンケート結果を直接表示するためのバックエンドUXはありません。代わりに、Data Explorerクエリに依存してアンケートの回答を取得および分析できます。以下にクエリの例を示します。

-- [params]
-- text :survey_name = survey

SELECT
  s.id,
  s.name,
  s.post_id,
  sf.question,
  COALESCE(sr.value, sfo.html) AS value,
  sr.user_id,
  sr.created_at AS responded_at
FROM
  surveys s
  JOIN survey_fields sf ON sf.survey_id = s.id
  JOIN survey_responses sr ON sr.survey_field_id = sf.id
  LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE
  s.name = :survey_name
ORDER BY
  s.id DESC

権限とセキュリティ

  • ログイン必須: 匿名ユーザーは回答を送信する前にログインする必要があります

  • ユーザーごとの回答は1回のみ: 各ユーザーはアンケートごとに1つの回答のみを送信できます

  • トピックの権限: アンケートを表示するには、ユーザーはトピックの閲覧権限を持っている必要があります

  • 投稿の権限: 回答を送信するには、ユーザーはトピックの投稿権限を持っている必要があります

  • アーカイブされたトピック: アーカイブされたトピック内のアンケートは新しい回答を受け付けられません

  • 削除された投稿: 削除された投稿内のアンケートはアクセスできなくなります

制限事項

  • 投稿ごとに許可されるアンケートは1つのみ

  • 回答を受け取った後のアンケート構造の変更はできません

  • すべてのアンケートフィールドの質問は、単一のアンケート内で一意である必要があります

  • アンケートフィールドの質問を空にすることはできません

技術的な詳細

データベーススキーマ

このプラグインは4つの主要なデータベーステーブルを作成します。

  • surveys: 主要なアンケートレコード

  • survey_fields: アンケート内の個々のフィールド

  • survey_field_options: 選択ベースのフィールドのオプション

  • survey_responses: アンケートフィールドに対するユーザーの回答

スタイリング

このプラグインには、テーマに適応するレスポンシブCSSが含まれています。これらのCSSクラスをターゲットにすることで、カスタムスタイリングを追加できます。

  • .survey - メインのアンケートコンテナ

  • .survey-field - 個々のフィールドのラッパー

  • .field-[type] - 特定のフィールドタイプのコンテナ

  • .submit-response - 送信ボタン

「いいね!」 32