WB Polls
建立投票,讓訪客或會員投一次票,並在網站的任何位置顯示即時結果。
外掛
WB Polls
建立投票,讓訪客或會員投一次票,並在網站的任何位置顯示即時結果。
說明
WB Polls 讓網站擁有者提出一個問題,並在任何 EmDash 頁面上顯示即時結果。
你將獲得
- 建立帶有兩到十個選項的投票,可單選或多選。
- 準備好時開啟,需要停止投票時關閉,或設定關閉時間。
- 選擇誰可以投票:任何人,或僅限已登入的會員。
- 選擇結果的顯示時機:始終顯示、投票後顯示,或投票關閉後顯示。
- 選擇匿名彙總,或網站擁有者可見的具名結果。
- 把投票附加到某一個頁面、某種內容類型的每一筆內容,或整個網站。開發者也可以依 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 頁面。這是正常的。下面複製套件只需一個指令。
已在 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
常見問題
我更新了外掛,結果投票停止了。
請再次複製網站套件。註冊表安裝透過一個 id 回應,而不是 /polls/。目前的套件能找到這個 id。
為什麼我建立投票後頁面上沒有顯示? 建立出來的是草稿。從清單中開啟該投票。然後把它附加到頁面、內容類型或整個網站,並在該範本上放置一個投票位。
訪客可以投票嗎?
可以,前提是你把 Who can vote 設定為 Anyone,並且主機把訪客的位址提供給 EmDash:在 Cloudflare 上,或把 trustedProxyHeaders 設定為由你的代理自己寫入並取代的標頭(在 nginx 後面用 x-real-ip;絕不要用附加式的 X-Forwarded-For)。否則,訪客會被要求登入,Polls 介面也會這樣提示。每位訪客一票。已登入的會員以自己的身分投票。
瀏覽器主控台中的 401 有問題嗎? 沒有。訪客在每個投票上會因會員投票檢查收到一次 401,在 My votes 上也會收到一次。投票就是這樣得知訪客尚未登入,然後顯示訪客檢視。
誰能看到投票者的姓名? 只有你,而且只限具名投票。訪客保持匿名。匿名投票從不儲存姓名。
它支援深色模式嗎? 支援。套件會跟隨訪客的系統設定。
我能把投票放在文章中間嗎? 註冊表安裝不行。請把它附加在內容上方或下方,或在範本中放置 “。文中區塊需要受信任的安裝;該路徑是可選的,不會改變註冊表產品。
有付費版本嗎? 沒有。這裡的一切都是免費的。
為什麼它要求讀取我的內容? 這樣,附加在草稿上的投票會保持隱藏,直到你發布該頁面。WB Polls 只會檢查頁面是否已發布,並依名稱列出你的內容類型。
更新日誌
0.5.0
現在,每個投票頁面、投票操作和管理介面都符合 Cloudflare 每次外掛呼叫最多 10 個請求的限制。
- 新增 - 每個投票都會保留一個累計總數,因此無論投票規模多大,結果都只需一次讀取即可顯示。
- 新增 - 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,一個指令即可複製套件。 - 安全:只有在主機提供訪客位址的情況下,訪客才能投票。同一位投票者同時送出的兩次投票只算一次。
0.3.0
- 新增:清單上的投票統計、結果長條圖,以及可選的用於文章內文的 This page’s poll 區塊。
早期版本:https://github.com/wbcomdesigns/emdash-polls/blob/main/CHANGELOG.md