Как изменить пользователя на другую роль в зависимости от количества его сообщений?

7

Существуют ли какие-либо методы, которые могут автоматически переводить пользователя с определенной ролью в другую роль после того, как он сделал X сообщений (основные темы форума и / или ответы)?

Я хотел бы реализовать функцию, при которой, когда пользователи впервые регистрируются на моем сайте, они попадают в роль с ограниченными правами, но после определенного количества сообщений на форуме (новая тема или ответы на существующие) они попадают в другую роль, которая не требует CAPTCHA, и они могут публиковать ссылки и т.д. К вашему сведению, используя ядро Forumи модуль Advanced Forum .

BEEBEE
источник

Ответы:

9

Я нашел модуль User Stats, который интегрируется с правилами и предоставляет токены, такие как [user: post-count], которые можно использовать для числового сравнения. Надеюсь, это поможет кому-то еще.

BEEBEE
источник
2

Модуль User Stats имеет только версию dev для D7 (я предполагаю, что этот вопрос касается D7). Тем не менее, ваш вопрос кажется идеальным вариантом использования модуля Goals (раскрытие: я его поддерживаю). Ниже приведена возможная конфигурация для вашего конкретного случая с использованием целей .

Настройте цель

Перейдите к относительному пути admin/config/goals/manageи используйте ссылку «Добавить цель», чтобы определить только 1 цель с описанием (скажем):

Сделайте Х количество сообщений (основные темы форума и / или ответы) .

Настроить задачи

Для достижения цели «сделать Х количество сообщений (основные темы форума и / или ответы)» определите задачу (задачи), которые необходимо выполнить.

  • Опубликовать определенное количество основных тем форума.
  • Опубликовать определенное количество ответов.

Более продвинутый способ использовать (настроить) Цели , это настроить задачи следующим образом:

  • некоторые задачи могут повторяться несколько раз.
  • для некоторых задач может потребоваться некоторое время для истечения между любыми 2 подобными задачами (например: если задача выполняется несколько раз в день, учитывается только первая).
  • ... (есть и другие ...).

Отслеживать прогресс при выполнении задач

Чтобы отслеживать прогресс, достигнутый одним пользователем в выполнении какой-либо задачи, вам нужно всего лишь написать соответствующие правила, используя модуль « Правила », для записи соответствующих событий, происходящих на вашем сайте, которые связаны с выполнением различных задач.

Для целей / задач, описанных выше в качестве примера, вам понадобятся только 2 (чрезвычайно базовых) правила, которые будут срабатывать так:

  • После публикации основной темы форума.
  • После размещения ответа.

Обратите внимание, что эти 2 правила могут быть повторно использованы для измерения прогресса по нескольким целям (например, если у вашей цели есть задача типа «после публикации 1 ответа», а вторая цель имеет задачу типа «после публикации 10 ответов»).

Кроме того, вышеприведенные проблемы довольно просты (основные) в качестве примеров вызовов. Но вы можете сделать это практически для любого объекта, для которого вы можете придумать способ отследить их через модуль «Правила».

Используйте правила для обработки достигнутых целей

После того, как все задачи, определенные для цели, выполнены пользователем, цель автоматически помечается как выполненная. Но есть еще кое-что: вы также можете создать дополнительные правила, которые будут срабатывать (Событие правил), когда цель достигнута пользователем. При этом, ответ на ваш вопрос предельно прост: выполните Действие Правил, чтобы « ... изменить пользователя на другую роль » ... что именно является вашим вопросом, нет?

Больше того же самого

Вместо (скучного) описания цели, приведенной выше, вы могли бы вместо этого использовать описание цели, например (например, « Участвующий пользователь »). Который BTW может быть хорошим описанием роли, которая будет также предоставлена.

Если затем вы определите (скажем) еще 3 (аналогичные) цели, для каждой из которых будет установлен соответствующий набор задач, вы можете использовать ту же технику для целей (и / или ролей), помеченных как-то так (если они звучат что-то знакомое на Drupal.SE, это чисто случайно)

  • Лояльный Пользователь.
  • Установленный пользователь.
  • Доверенный пользователь.
  • Модератор.

Больше информации

Обратитесь к моему ответу « Как реализовать геймификацию на сайте Drupal и поощрять поощрения? » Для получения дополнительной информации о модуле Цели .

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

Pierre.Vriens
источник