Ваш вопрос действительно состоит из 2 частей, т.е. о том, как реализовать:
- система репутации , которая похожа на оценку несколькими пользователями определенного пользователя.
- система достижения целей , которая похожа на вознаграждение пользователя после выполнения различных задач, задач и т. д.
Читайте дальше, чтобы узнать больше о том, как реализовать каждую из этих систем.
Система достижения целей
Обычно для такого типа систем вы можете выбрать 2 модуля, а именно:
Модуль достижений , как уже предлагалось в другом ответе. Этот модуль в значительной степени опирается на пользовательское кодирование для обработки многих функций.
Модуль « Цели » («Раскрытие информации: я его поддерживаю»), который можно использовать для стимулирования чего-либо на вашем сайте, например голосования, обмена контентом, создания отношений и т. Д.
Цели и задачи реализуются с помощью полевых объектов. Некоторые примеры задач, которые должны быть выполнены, могут быть:
- Вход на сайт один раз в день в течение трех дней подряд.
- Опубликовать количество узлов выбранных типов контента.
- Сделайте дружескую связь на сайте.
- И т.п.
Вы можете настроить цели через «Управление полями» и / или «Управление отображением». Все может быть сделано только с помощью функций построения сайта (без специального кода), хотя есть и хуки, позволяющие интегрировать его в собственный код. Таким образом, модуль Goals построен на основе конфигурации интерфейса администратора. Кроме того, цели и задачи в модуле «Цели» являются полевыми объектами, поэтому у вас есть возможность добавлять дополнительные поля и включать эти объекты в представления . Используя Goals Extras
субмодуль, он также интегрируется с модулем User Points .
Перейдите к видео Цели, которое включает в себя:
- общее введение в модуль.
- демонстрация для установки, настройки и использования.
- примеры того, как он использует модули « Правила», чтобы творить свою магию (т. е. отслеживать прогресс пользователя в достижении различных целей).
Система репутации
Используя модуль « Ответы » (Раскрытие информации: я (со) поддерживаю его), вы можете « создать хорошую систему репутации » (как в вашем вопросе). Вот некоторые подробности об этом (со страницы проекта):
Ответы позволяют внедрить систему вопросов и ответов на сайте Drupal. Пользователи могут оставлять вопросы, а другие пользователи могут отвечать на них.
Перейдите на страницу проекта для более подробной информации. Посетите его демо - сайт для демонстрации (в режиме чтения только для анонимных пользователей) из Просмотров списков на основе из:
Модуль «базовых» ответов включает типы контента « Вопрос и ответ» , а ответы отображаются под вопросом, к которому они относятся. Эти 2 типа контента являются совместимыми, вы можете управлять их отображением и т. Д.
Используйте его подмодули для включения выбранных функций (в зависимости от требований сайта), то есть:
- Лучший ответ для ответов , который позволяет пометить любой из ответов на конкретный вопрос как лучший (принятый) ответ (чтобы отобразить синие галочки слева от каждого ответа и который заменяется зеленой галочкой, когда отмечен ответ как лучший ответ).
- Тема «Ответы» , которая превращает (довольно скучное) ванильное отображение вопроса (и связанных с ним ответов под ним) в более привлекательный внешний вид. Например, оранжевый пузырь, добавленный вокруг вопроса (чтобы лучше его выделить).
- Уведомление об ответах , позволяющее зарегистрированным пользователям подписываться на выбранные вопросы, чтобы они получали уведомления (используя стек сообщений ) при получении ответов на вопросы.
- Ответы голосования , чтобы внедрить систему upvote или downvote либо вопросы и / или ответы (который использует Rate модуля).
- Отвечает на пользовательские баллы , чтобы увеличить или уменьшить « очки репутации » (который используетмодуль «Пользовательские баллы ») на события, такие как голосованиес повышением или понижением рейтинга на вопрос или ответ, или пометить ответ как « лучший ответ ».
Довольно много ее «бизнес-логики» реализовано с помощью всевозможных настраиваемых правил (с помощью модуля « Правила »). Например, если вы не согласны с готовыми правилами о том, сколько «пользовательских баллов» присуждается поднятому (или опущенному) вопросу (или ответу), вы просто используете пользовательский интерфейс правил для настройки количество таких баллов по вашим требованиям. Например: должны ли вопросы понижающего голосования действительно быть свободными (то есть: должен ли понижающий голос потерять какие-либо очки при этом?).
Для полноты ниже приводится правило (в формате экспорта правил), которое используется для предоставления + 15 баллов автору ответа вместе с +2 баллами для пользователя, который помечает этот ответ как принятый. (= автор Вопроса ), тогда как пометка его как таковая выполняется путем пометки этого Ответа как «Лучший ответ» (с использованием модуля « Флаг »):
{ "rules_flag_answers_best_answer" : {
"LABEL" : "flag_answers_best_answer",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"TAGS" : [ "answers" ],
"REQUIRES" : [ "rules", "userpoints_rules", "flag" ],
"ON" : { "flag_flagged_best_answer" : [] },
"IF" : [
{ "NOT data_is" : { "data" : [ "flagging-user" ], "value" : [ "flagged-node:author" ] } }
],
"DO" : [
{ "userpoints_action_grant_points" : {
"user" : [ "flagged-node:author" ],
"points" : "15",
"tid" : "0",
"entity" : [ "" ],
"operation" : "addPoints",
"display" : 1,
"moderate" : "default"
}
},
{ "userpoints_action_grant_points" : {
"user" : [ "flagging-user" ],
"points" : "2",
"tid" : "0",
"entity" : [ "" ],
"operation" : "addPoints",
"display" : 1,
"moderate" : "default"
}
}
]
}
}