Мне очень нравятся опросы в Discourse, особенно с последними обновлениями
Не кажется ли кому-то ещё, что было бы хорошей идеей добавить иконку рядом с названием темы, если в первом посте есть опрос?
У нас уже есть иконки для закрепленных тем, скрытых тем, заблокированных тем и тем с ответами, и я думаю, что иконка для тем с опросами тоже была бы кстати.
Или ещё лучше: система сама определяет, бар или пирог, и использует тот, который, по её мнению, подходит больше
Вы имеете в виду что-то вроде эмодзи?
Они не вписываются в стиль остальных иконок Discourse, и к тому же их пришлось бы добавлять вручную к каждой теме — по-моему, это будет полезно только если иконка будет отображаться в каждой теме с опросом.
Текущие иконки тем отображают статус темы: закрыта, скрыта, решена, закреплена и т. д., а не содержимое первого поста. Это полностью нарушило бы устоявшийся паттерн, подорвав последовательность и обучаемость в Discourse.
Однако вы, безусловно, можете реализовать это через плагин.
Очень простое решение, требующее лишь компонента темы, — это разместить все ваши опросы в одной категории. Как только вы это сделаете, будет несложно добавить переопределение, которое добавит иконку опроса в списки тем, так как это не потребит изменений на серверной части.
Или, возможно, ещё проще: пометьте все темы с опросами тегом poll. Тогда вы сможете использовать компонент иконки тега и добавить наглядный визуальный сигнал. Это также сделает поиск всех опросов предельно простым.
Отличная идея, Сэм, хотя, к сожалению, это сработает только если форум посвящён одной теме. В противном случае вы начнёте выносить материалы из их естественных разделов или категорий. Например, если у вас форум о веб-фреймворках (с разделами для Rails, Phoenix, Django, Express, Laravel и т. д.), и пользователи используют категории для поиска интересующих их тем, то перемещение связанных тем (в данном случае опросов) из соответствующих разделов затруднит этот процесс.
На этом новом форуме мы классифицируем материалы по типу: Backend Dev, Frontend Dev, Game Dev, Mobile Dev и т. д., причём каждый из них имеет свои подкатегории (чат, вопросы, вакансии и т. п.). Изначально я создал подкатегорию «Опросы» в каждой из них, но в итоге получилось слишком много разделов, поэтому мы их убрали.
Мне стоит поэкспериментировать с этим, но первое, что приходит в голову, — что в итоге получится тег, отличающийся от остальных (хотя это также может пригодиться для логотипов языков и т. п.). Тем не менее, мы определённо будем поощрять использование тега polls.
Это заставляет меня задуматься, не пора ли…
Не пришло ли время расширить их функционал, чтобы они теперь работали скорее как иконки тем (а не только как индикаторы статуса)? Мне кажется, иконки тем могут сделать форум более динамичным и интересным (и менее визуально скучным). Так, например, можно добавить иконку для опросов и отдельную иконку для тем с прикреплённым изображением или файлом. Последнее особенно поможет пользователям мобильных устройств с ограниченным трафиком — они смогут избегать тем, требующих загрузки.
В каком-то смысле текущие иконки уже начинают выполнять эту функцию: у нас есть иконка закладок (которая мне очень нравится!), иконка, указывающая на наличие ответа в теме, и, насколько я знаю (хотя я не уверен на 100%, так как не использую их), иконка, появляющаяся, когда в теме размещена ссылка? Похоже, мы уже движемся по этому пути?
Способ реализации (на мой взгляд) заключается в использовании условия для проверки наличия опроса в теме: если опрос есть, отображать соответствующую иконку, иначе — стандартную. По крайней мере, именно так я бы поступил в другом программном обеспечении для форумов. Единственная проблема, с которой я сталкиваюсь при кастомизации Discourse в данный момент, заключается в том, что многие элементы, которые я хотел изменить, находятся в слишком большом шаблоне. Мне кажется, нам нужно гораздо больше отдельных небольших шаблонов, которые можно переопределять, не сильно влияя на поддерживаемость. Я бы очень хотел видеть такое, и думаю, что тогда больше людей станут чаще кастомизировать систему.