Динамические группы в Discourse

Спасибо за создание и публикацию этого. Мой сценарий использования:

  • Динамическая группа trust_level_0 AND NOT lurkers
  • Публичная категория → Все R // Динамическая группа R/W

Мне интересно, как задать область видимости для анонимных пользователей? Пробовал anonymous, anon и everyone, но ни один из них не срабатывает.

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

Анонимные пользователи, то есть те, кто не вошёл в систему? Если у них нет аккаунтов, как вы можете их добавить? TL0 нацелен на всех пользователей, если это то, что вы ищете.

Вот в этом и суть. Я хочу скрыть определённые категории так, чтобы они были видны только одной группе.

С функциональной точки зрения это не имеет смысла: пользователь, принадлежащий к этой группе, может просто выйти из аккаунта и всё равно увидеть категорию.

С технической точки зрения это невозможно: если категория доступна для everyone (всех), Discourse устанавливает флаг read_restricted в false, и все механизмы контроля доступа обходятся.

С точки зрения этого плагина, ближайший вариант — это NOT excluded_group (что эквивалентно trust_level_0 AND NOT excluded_group). Но анонимный пользователь не может состоять в группе, так что это не сработает.

1 лайк

Я, конечно, об этом подумал и понял, что, скорее всего, именно по этой причине данная функция в настоящее время не активна. И я также ясно понимаю, что ограничение будет не жёстким, а мягким.

Цель состоит в том, чтобы ограничить пользователей, которые поддерживают очень низкое соотношение сообщений, при этом их доля чтения в 5 или 10 раз выше. Бейджи и титулы пользователя, которые это отмечают, а также простой выход из ситуации могут «разбудить» их.

Я также знаю, что в интернете 90–97% пользователей неосознанно попадают в категорию наблюдателей (lurkers), хотя я также знаю, что этот механизм может их мотивировать, поскольку они смогут отвечать и вносить вклад в других форумах через простой выход — предоставив три принятых ответа в качестве решений — и не в категориях с наибольшим трафиком.

Технически, нечто подобное поддерживает обмен в сетях равных (peer-to-peer), таких как Torrent, которые работают среди нас уже более десяти лет.

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

Я думаю, что это интересный предмет для обсуждения; возможно, это можно достичь с помощью простых настроек ядра Discourse.