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
자주 묻는 질문
플러그인을 업데이트했더니 투표가 멈췄습니다.
사이트 키트를 다시 복사하세요. 레지스트리 설치는 /polls/가 아니라 id로 응답합니다. 현재 키트는 그 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
이제 모든 투표 페이지, 투표, 관리자 화면이 플러그인 호출당 요청 10개라는 Cloudflare 제한 안에 들어갑니다.
- 신규 - 각 투표가 누적 합계를 유지하므로, 투표 규모와 관계없이 결과를 한 번의 읽기로 표시합니다.
- 신규 - 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