When creating a group, we have the automatic membership setting based on a user’s email domain name. I would like to have this functionality based on the value of a custom field.
Example Use Case
I have a condo community with a dropdown custom field signifying ownership status (Owner, Renter). I want to have all owners automatically in an owner group and to be able to message only all owners for certain messages.
Caveats
This sounds straight forward for dropdown and confirmation custom fields, but I guess could get hairy for text fields. It would be fine to enable it only for dropdowns and confirmations, otherwise exact text match is fine for text fields.
Since these are user settable custom fields, you can just make the groups open membership and tell people to add / remove themselves via the /groups page.
Not realistic for my use case. Hard to get a bunch of random homeowners, some very old, to bother going around tinkering with their settings. It was hard enough getting them to just register once to get the emails, and it’s hard to even get them to pay attention and do stuff even when there are financial penalties.
Для тех, кто наткнётся на это в будущем: у меня был похожий сценарий использования (две отдельные группы пользователей — те, кто оказывает услуги, и те, кто их ищет), и я реализовал это через вебхуки и API Discourse.
Если подробнее, то я…
создал вебхук, срабатывающий на событиях пользователей;
реализовал минималистичный сервер на Express.js для получения полезной нагрузки;
настроил POST-маршрут для событий user_created, который проверяет значение пользовательского поля и затем использует API Discourse для присвоения пользователю соответствующей группы.
Это кажется немного нелепым способом, поскольку я выхожу за пределы Discourse, чтобы изменить что-то внутри него, но я тщательно искал ответы на форуме и ничего не нашёл, поэтому сделал всё, что мог! Надеюсь, это кому-то поможет в будущем, и если кто-то придумает лучший способ, я буду рад узнать об этом.
Я планирую сделать нечто очень похожее для автоматического разделения пользователей на группы на основе выпадающего списка в пользовательском поле. Вы случайно не выложили этот код в открытый доступ?
@li-zi, я знаю, что вы уже частично решили эту задачу для своего случая, но, на мой взгляд, ещё одним возможным решением может быть использование плагина Custom Wizard.
Я использую его, чтобы предлагать новым пользователям заполнить мастер-настройку после регистрации.
В мастер-настройке есть поля с выпадающими списками вариантов.
Затем я настроил два отдельных действия, которые выполняются после отправки мастер-настройки:
одно для обновления пользовательских полей профиля данными из выпадающего списка мастер-настройки
другое действие для добавления пользователя в конкретную группу в зависимости от выбранного в мастер-настройке варианта