Creating and managing polls

:bookmark: This guide explains how to create polls in Discourse to gather votes from users on any topic.

:person_raising_hand: Required user level: All users

:information_source: By default, polls are enabled in Discourse and users of trust level 1 or above are allowed to create them. Site admins can adjust who can create polls via the poll create allowed groups site setting and disable polls using the poll enabled site setting.

Creating a poll from the toolbar

The easiest way to create a poll is to use the poll builder. The poll builder can be accessed from the options menu in the composer, and allows you to make a poll without needing to know the exact syntax.

To show advanced options press the :gear: icon. This will show you different poll options such as if the poll auto closes, set groups allowed to vote, choose bar or pie, etc.

Poll options

Poll type:

  • Single Choice: Default poll type. Users can select a single choice from the poll
  • Multiple Choice: Users can select multiple choices from the poll.
    • The poll creator must also define the minimum and maximum number of choices a user can make. By default the minimum will be 1, and the maximum will be the number of poll choices.
  • Number Rating: Users can select a single number.
    • The poll creator must also define the min, max and step for the number rating. For example, if the min is 2, the max is 10, and the step is 2, the options will be 2, 4, 6, 8, and 10.
  • Ranked Choice: Users rank all options in order of preference. The winner is determined using Instant Run-off Voting — in each round, the candidate with the fewest first-preference votes is eliminated and their votes redistributed, until one candidate achieves a majority or a tie is reached.

Results:

  • Always visible: Default poll results. Users can always see the results of the poll, regardless of if they’ve voted.
  • Only after voting: Users must vote before they can see the results of the poll.
  • When the poll is closed: Poll results will only be revealed once the poll is closed.
  • Staff only: Only site staff will be able to see the poll results.

Allowed groups:

Allows the poll creator to limit which groups can participate in the poll. Users not in the listed groups will be able to view the poll, but not vote. Default is all users can participate, no group limitation.

Chart type:

For Single or Multiple Choice polls, choose whether to display the result in a bar graph or pie chart. Not available for Number Rating or Ranked Choice polls.

Show who voted:

Enabled by default, this allows those who can view poll results to also view the specific choices of each poll user. (Bar Chart type only)

Automatically close poll:

Allows the poll creator to set a date/time for the poll to close automatically. Unlike manually closed polls, auto-closed polls cannot be re-opened.

Allow options to be added or removed after posting (Dynamic):

When enabled, poll options can be added or removed even after the edit window has expired, without clearing votes on unchanged options. This must be set when the poll is first created — an existing poll cannot be converted to dynamic after creation.

Including images

Polls can even include images! After using the poll builder to insert the poll, images can be uploaded to the post and manually added to the poll. Uploaded images should be small, or adjusted to display at a lower percentage:

[poll type=regular]
* ![image|690x458,25%](upload://2u570X7kQiPJQaJD1Bd8MLDHDNB.jpeg)
* ![image|690x334,25%](upload://35fmeFw8RMywSxIc4lbCb8UHPaT.jpg)
* ![image|690x499,25%](upload://xSDkRwmuj1pNc2QXKzthfXRlwsX.jpg)
[/poll]
[poll type=regular]
* Cat: a small domesticated carnivorous mammal with soft fur, a short snout, and retractile claws.
![image|690x458,25%](upload://2u570X7kQiPJQaJD1Bd8MLDHDNB.jpeg)
* Dog: a domesticated carnivorous mammal that typically has a long snout, an acute sense of smell, and a barking, howling, or whining voice.
![image|690x334,25%](upload://35fmeFw8RMywSxIc4lbCb8UHPaT.jpg)
* Fish: a limbless cold-blooded vertebrate animal with gills and fins and living wholly in water.
![image|690x499,25%](upload://xSDkRwmuj1pNc2QXKzthfXRlwsX.jpg)
[/poll]
  • Cat: a small domesticated carnivorous mammal with soft fur, a short snout, and retractile claws.
  • Dog: a domesticated carnivorous mammal that typically has a long snout, an acute sense of smell, and a barking, howling, or whining voice.
  • Fish: a limbless cold-blooded vertebrate animal with gills and fins and living wholly in water.
0 voters

Including relative dates

Polls can also include relative dates! In a similar way to adding images, after using the poll builder to insert the poll you can insert dates into the poll options via the “Insert date / time” composer button:

[poll type=regular]
* [date=2019-10-13 timezone="Europe/Paris"]
* [date=2019-10-12 timezone="Europe/Paris"]
* [date=2019-10-11 timezone="Europe/Paris"]
[/poll]
  • 2019-10-12T22:00:00Z
  • 2019-10-11T22:00:00Z
  • 2019-10-10T22:00:00Z
0 voters

Multiple polls in a post

If multiple polls are used in a single post (like this one!) each poll will need a unique name or they will not work. When using the poll builder each extra poll will be numbered sequentially, but you can also do this manually by adding name="poll_name" as a parameter:

[poll name="poll_1"]
1. option one
2. option two
3. option three
[/poll]

[poll name="poll_3" type=multiple min=2 max=3]
- option one
- option two
- option three
- option four
[/poll]

[poll name="dave" type=number min=2 max=10 step=2]
[/poll]

Manually creating a poll

While the poll builder is the easiest option, it is also possible to manually create and edit polls within the composer itself.

To create a simple poll, surround a markdown list with [poll] and [/poll]:

[poll]
* option one
* option two
* option three
[/poll]

:information_source: Any markdown list will work, including using hyphens - or numbers instead of asterisks *.

This will create the following result:

  1. option one
  2. option two
  3. option three
0 voters

To manually create more complex polls, additional parameters can be added to the poll tag. For instance:

[poll type=multiple results=on_vote min=1 max=2 public=true chartType=pie groups=trust_level_1 close=3024-12-31T00:00:00.000Z]
# Do you like polls?
* Yes
* No
* Maybe
[/poll]
Do you like polls?
  • Yes
  • No
  • Maybe
0 voters

(Though not all options will make sense for all polls :slight_smile:)

Other available poll types include type=ranked_choice for Instant Run-off Voting polls, and the dynamic=true parameter can be added to allow options to be modified after posting.

Using the poll builder is a great way to find out the format of these additional parameters for later use.

FAQs

Can anyone vote in a poll?

Even with no group voting restrictions on the poll itself, users must be able to reply to the topic where the poll is created in order to participate. Users with see only permissions will not be able to vote.

Can polls be edited?

All votes are cleared when a poll is edited, to ensure the poll creator can’t change the choices a user voted for. As such, by default polls can only be edited for a grace period of 5 minutes after being created.

:exclamation: Votes cannot be recovered once a poll is edited and the votes are cleared

An exception to this is dynamic polls (dynamic=true), which allow options to be added or removed after the edit window while preserving votes on existing options.

Can I export poll data for further analysis?

Staff can use the Discourse Data Explorer to export poll data as a csv, which can be imported into the data analysis program of their choice.

Last edited by @hugh 2024-07-29T10:05:00Z

Last checked by @hugh 2024-07-02T09:50:57Z

Check documentPerform check on document:
63 лайка

Это может показаться вопросом новичка, но у меня есть запрос.

Допустим, я создал опрос, в котором установил отображение результатов сразу после подачи голосов. Затем я осознал свою ошибку: мне следовало настроить отображение результатов после закрытия голосования. Так вот, можно ли отредактировать текущий опрос, чтобы изменить видимость с «Всегда видно» на «Когда опрос закрыт» в настройках, которые открываются через значок шестерёнки в разделе создания опроса?

Или мне нужно удалить этот опрос и создать новый, выбрав настройку видимости голосов «Когда опрос закрыт»?

Я также прикрепляю скриншот.

Прошу дать совет.

Если этот пост не предназначен для этой темы, прошу модераторов или администраторов переместить его в соответствующий раздел.

1 лайк

Вы можете изменить это, не удаляя опрос. При редактировании поста ваш опрос начинается примерно так: [poll type=regular results=on_vote public=true chartType=bar]; вы можете изменить параметр «results» на results=on_close. Хотя, если я не ошибаюсь, при редактировании опроса все голоса удаляются, но хотя бы не нужно создавать его заново.

3 лайка

Действительно, так и есть.

Мне кажется более логичным, если бы была возможность сбросить опрос, а не чтобы это происходило «автоматически» — особенно для таких незначительных правок.

В прошлом я вручную вносил изменения в базу данных для подобных случаев (чтобы редактирование не вызывало сброса), но это довольно ненадёжный способ.

4 лайка

Это очень помогает.

Что бы вы оба предположили, если я скажу вам, что когда администратор, создавший опрос, отредактировал тему, используемую для этого опроса, количество правок темы уменьшилось, вместо того чтобы увеличиться?

Мое предположение таково: опрос был удалён, а затем создан новый. Это объяснит, почему количество правок темы уменьшилось для пользователя, который голосует.

Пример:
Пользователь впервые зашёл в опрос, у которого настройка отображения голосов была установлена на «всегда видно». Количество правок темы для этого опроса составляло 4.

Когда администратору указали, что настройка отображения голосов была установлена на «всегда видно», пользователь увидел опрос с настройкой «видно после голосования». Однако количество правок темы уменьшилось до 3. Таким образом, количество правок темы не увеличилось, а уменьшилось.

Мое мнение таково: администратор удалил предыдущий опрос и создал новый.

1 лайк

Возможно ли обновить эту документацию, включив в неё опросы с ранжированным выбором? В частности, как и когда увеличиваются раунды.
Заранее спасибо, друзья!

5 лайков

Справедливое замечание, @meave.

Я автор опросов с ранжированным выбором, и это упущение с нашей стороны.

У меня нет прав на редактирование исходного сообщения. Буду рад, если кто-нибудь скопирует это и отформатирует как считает нужным, или, если это будет преобразовано в вики-страницу, готов внести свой вклад:

Сейчас всё работает точно так, как описано здесь: это классическое голосование с мгновенным вторым туром:

(в моём форке плагина для опросов этот пример даже используется как юнит-тест!)

Процесс выглядит следующим образом:

Каждый избиратель подаёт упорядоченный список кандидатов. В каждом раунде мы рассматриваем только кандидата, занявшего первое место (и фокусируемся на потенциальных победителях и худших проигравших).

  1. Подсчитать голоса за первое место для каждого кандидата.
  2. Найти кандидата(ов) с наибольшим числом голосов.
  3. Проверить наличие явного, единственного большинства; если оно найдено, объявить этого кандидата победителем (раунды прекращаются, стоп).

Если нет:

  1. Найти кандидата(ов) с наименьшим числом голосов.
  2. Исключить кандидата(ов) с наименьшим числом голосов из всех бюллетеней.

Если теперь все бюллетени пусты:

  1. Объявить о ничьей среди тех кандидатов, которые были только что исключены (раунды прекращаются, стоп).

Иначе:

  1. Сдвинуть все бюллетени вверх так, чтобы там, где первое место занимал проигравший (для конкретного избирателя), кандидат, занявший второе место, стал его первым выбором.

Раунды продолжаются до тех пор, пока не будет найдено большинство или ничья.

6 лайков

Спасибо @merefield!
Это именно то, что мне нужно было!

3 лайка

Возможно ли экспортировать результаты каждого опроса из разных каналов для целей отчётности?

1 лайк

Вы можете сделать это с помощью Data Explorer. Я спросил ИИ:
«Возможно ли экспортировать результаты каждого опроса из разных каналов для отчётности с помощью Data Explorer», — и он предоставил этот запрос:

SELECT  
    p.topic_id, 
    p.name AS poll_name,
    o.id AS option_id, 
    o.html AS option_text, 
    COUNT(v.id) AS vote_count
FROM polls p
JOIN poll_options o ON p.id = o.poll_id
LEFT JOIN poll_votes v ON o.id = v.poll_option_id
GROUP BY p.topic_id, p.name, o.id, o.html
ORDER BY p.topic_id, p.name, o.id;

Кажется, это может сработать?

1 лайк

Привет, @pfaffman,

Большое спасибо за быстрый ответ и помощь!

Я попробую, надеюсь, на следующей неделе, но скорее всего смогу это сделать только после праздников.

Я вернусь с отзывом, как только смогу это проверить.

Кроме того, ещё раз огромное спасибо!

1 лайк

Привет, у меня есть вопрос по поводу опросов.

Можно ли использовать HTML или CSS, чтобы сделать их более привлекательными, чем стандартный вид?

Заранее спасибо.

Вы пробовали это сделать в инспекторе браузера? (Правой кнопкой мыши → «Просмотреть код») Если там у вас получается, то да.

Однако Polls использует Chart.js, так что там много векторной графики.

Всё зависит от того, что именно вы хотите изменить.

3 лайка

Это голосование с рейтингом. Кнопка для выбора должна находиться слева от текста, когда текст слишком длинный. Сейчас текст находится под кнопкой, а мне нужно, чтобы текст был полностью справа, а кнопка была выровнена по левому краю относительно текста.

Всем привет,
Подскажите, пожалуйста, можно ли как-то добавить текстовое поле в опрос? Например, чтобы избиратель мог обосновать, почему был выбран тот или иной вариант?

1 лайк

«Оставьте комментарий ниже»?

Помимо комментирования в теме — нет.

1 лайк

А, понял. Спасибо @merefield. Я пытался получить письменный отзыв, который можно было бы экспортировать вместе с результатами опроса.

1 лайк


Почему опрос не отображается в ленте? Он появляется только при клике.

2 лайка

Ах, я думаю, это ограничение фрагментов опросов/тем. Мне кажется, в настоящее время невозможно отображать их вне основного пространства темы.

3 лайка

Спасибо за ответ!

3 лайка