WB Polls
投票を作成し、訪問者や会員に 1 回だけ投票してもらい、サイトのどこにでもリアルタイムの結果を表示します。
プラグイン
WB Polls
投票を作成し、訪問者や会員に 1 回だけ投票してもらい、サイトのどこにでもリアルタイムの結果を表示します。
説明
WB Polls を使うと、サイトの所有者が質問を投げかけ、任意の EmDash ページにリアルタイムの結果を表示できます。
主な機能
- 2 つから 10 個の選択肢で投票を作成。単一選択も複数選択も可能です。
- 準備ができたら開始し、投票を止めたいときに終了するか、終了時刻を設定できます。
- 誰が投票できるかを選べます。誰でも、またはサインイン済みの会員のみ。
- 結果を表示するタイミングを選べます。常に、投票後、または投票終了後。
- 匿名の集計か、サイトの所有者が見られる記名の結果かを選べます。
- 投票を 1 つのページ、コンテンツタイプのすべてのエントリー、またはサイト全体に関連付けられます。開発者は ID を指定して特定の投票を配置することもできます。
- 投票を、票のない新しい下書きとして複製できます。
全体の仕組み
プラグインはエンジンです。ストレージ、投票ルート、管理画面を担当します。EmDash のプラグインはページを追加できないため、表示される投票はサイトキットとして提供され、一度コピーするだけで使えます。インストールを参照してください。
誰でも投票できる設定で、かつホストが訪問者のアドレスを EmDash に渡している場合(Cloudflare、または trustedProxyHeaders)、ゲストは投票できます。会員はサインイン済みのアカウントとして投票します。投票の作成と管理ができるのはあなただけです。
インストール
インストールの前に
1. サイトにはサンドボックスランナーが必要です。 レジストリのプラグインはサンドボックスで動作します。サイトにそれがない間は、Admin、Plugins に “No plugins configured” と表示され、メニューに Registry も表示されません。
- Node: サイトで
npm install @emdash-cms/sandbox-workerd workerdを実行し、astro.config.mjsのemdash()の中にsandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",を追加します。 - Cloudflare:
import from "@emdash-cms/cloudflare";とsandboxRunner: sandbox(),を追加します。Workers Paid プラン、LOADERという名前のworker_loadersバインディング(Wrangler の設定でコメントを解除)、そしてstorage: r2(...)としての R2 バケットが必要です。そうでないと、インストールは “Storage error while installing plugin” で止まります。その後npm run deployを実行します。
開発サーバーを停止して、もう一度起動します。管理メニューに Registry が表示されるようになります。
2. プラグインはエンジンです。訪問者向けのページはサイトキットから提供されます。 レジストリのプラグインは、サイトにページを追加できません。キットをコピーするまでは、そのアドレス(たとえば /account/votes)にアクセスするとサイトの 404 ページが表示されます。これは想定どおりです。下のキットのコピーは、コマンド 1 つで済みます。
EmDash 1.3.1 の blog テンプレートで、Node と Cloudflare Workers の両方(レジストリからのインストール)で動作を確認しています。
インストール手順
-
Admin、Registry で WB Polls を検索し、Install して、権限を承認します。
-
サイトのルートフォルダーで次を実行します。
kit="$(mktemp -d)" && git clone --depth 1 \ --branch v0.5.0 \ https://github.com/wbcomdesigns/emdash-polls \ "$kit/emdash-polls" && "$kit/emdash-polls/scripts/add-to-site.sh" . -
出力された行を貼り付けます。開発サーバーを再起動します。
-
出力されたメニューリンクを Admin、Menus に追加します。
-
管理画面で Polls を開きます。
更新後は、新しいタグで手順 2 をもう一度実行します。
ガイド:https://github.com/wbcomdesigns/emdash-polls/blob/v0.5.0/docs/website/getting-started/install.md
よくある質問
プラグインを更新したら、投票できなくなりました。
サイトキットをもう一度コピーしてください。レジストリからのインストールは /polls/ ではなく ID で応答します。現在のキットはその ID を見つけられます。
投票を作成したのに、ページに表示されないのはなぜですか? 作成した直後は下書きです。一覧から投票を開いてください。次に、それをページ、コンテンツタイプ、またはサイト全体に関連付け、そのテンプレートに投票スロットを置きます。
ゲストは投票できますか?
はい。Who can vote を Anyone に設定し、ホストが訪問者のアドレスを EmDash に渡している場合です。Cloudflare 上か、プロキシ自身が書き込んで置き換えるヘッダーを trustedProxyHeaders に設定した場合(nginx の背後なら x-real-ip。追記される X-Forwarded-For は決して使わないでください)が該当します。そうでない場合、ゲストにはサインインが求められ、Polls 画面にもその旨が表示されます。訪問者 1 人につき 1 票です。サインイン済みの会員は本人として投票します。
ブラウザーのコンソールに出る 401 は問題ですか? いいえ。ゲストは、会員の投票チェックにより投票ごとに 1 回、My votes でも 1 回 401 を受け取ります。これは、投票が訪問者のサインイン状態を判断する仕組みで、その後ゲスト向けの表示になります。
投票者の名前は誰に見えますか? あなただけで、記名の投票に限られます。ゲストは匿名のままです。匿名の投票では名前は保存されません。
ダークモードで動作しますか? はい。キットは訪問者のシステム設定に従います。
記事の途中に投票を置けますか? レジストリからのインストールではできません。コンテンツの上か下に関連付けるか、テンプレートに “ を配置してください。本文中のブロックには信頼されたインストールが必要です。その方法は任意で、レジストリ版の製品には影響しません。
有料版はありますか? いいえ。ここにあるものはすべて無料です。
なぜコンテンツの読み取りを求めるのですか? 下書きに関連付けた投票を、そのページを公開するまで非表示に保つためです。WB Polls が確認するのはページが公開済みかどうかだけで、コンテンツタイプを名前で一覧にします。
変更履歴
0.5.0
すべての投票ページ、投票操作、管理画面が、Cloudflare のプラグイン呼び出し 1 回あたり 10 リクエストという上限に収まるようになりました。
- 新機能 - 各投票が累計を保持するため、どんな規模の投票でも結果を 1 回の読み取りで表示できます。
- 新機能 - Results に Recount votes を追加。保存済みの票から投票を数え直します。
- 改善 - 投票を削除するとすぐに非表示になります。名前を含む票は、管理画面を開いたときに削除されます。
- 改善 - 開始時刻と終了時刻は、表示のたびに投票の日付から読み取ります。
- 修正 - Cloudflare で、ゲストの投票が保存された後に “Something went wrong” と表示されなくなりました。
- 修正 - Cloudflare で、アクセスの多いサイトでも Polls 画面、Results、My votes、Poll パネルが失敗しなくなりました。
以前のバージョンの投票は、最初に開いたときに集計されます。更新後は、サイトのルートフォルダーでキットをもう一度コピーしてください。
kit="$(mktemp -d)" &&
git clone --depth 1 \
--branch v0.5.0 \
https://github.com/wbcomdesigns/emdash-polls \
"$kit/emdash-polls" &&
"$kit/emdash-polls/scripts/add-to-site.sh" .
0.4.0
- 新機能:Read your content 権限により、下書きページの投票は公開するまで非表示のままになります。
- 新機能:Set up visitor pages カードと
scripts/add-to-site.shで、コマンド 1 つでキットをコピーできます。 - セキュリティ:ゲストが投票できるのは、ホストが訪問者のアドレスを渡す環境のみです。1 人の投票者が同時に送った 2 票は 1 票として数えられます。
0.3.0
- 新機能:一覧に投票の統計、結果の棒グラフ、そして投稿本文用の任意の This page’s poll ブロックを追加。
以前のバージョン:https://github.com/wbcomdesigns/emdash-polls/blob/main/CHANGELOG.md