Очки пользователя Карма - Можно ли начислять баллы только за голосование против?

8

Я использую модули User Points, User Karma, Vote Up / Down. Интересно, есть ли способ, которым вы можете настроить его так, чтобы вычитать пользовательские баллы только тогда, когда вы голосуете что-то отрицательно, а не вверх.

Аналогично системе репутации Stack Exchange: если вы проголосуете за что-то, вы не будете пристыкованы, но если вы проголосуете за что-то, вы получите пристыкованные очки репутации.

Используя параметр «Репутация пользователя» -> «Очки кармы» -> «Стоимость очков избирателей», я могу настроить его так, чтобы он взимался только в том случае, если вы голосуете вообще, независимо от направления голосования. Любые идеи?

нельсон
источник
Похоже, вы должны делать это программно. Проверьте наличие крючков, если они есть у модуля.
Codium
@drupality: я не согласен, обратитесь к моему ответу для деталей о том, почему ...
Pierre.Vriens

Ответы:

5

Добавление модуля для переопределения настроек User Karma, безусловно, является одним из вариантов.

Другой возможностью является использование Rules и Voting_Rules для управления вашими собственными настройками для добавления и вычитания пользовательских баллов.

После включения вы идете в / admin / config / workflow / rules и «Добавить новое правило». Настройте его на React on Event "Пользователь голосует за узел".

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

Вот скриншот этого правила: введите описание изображения здесь

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

казарка
источник
1

Для D7 я рекомендую использовать комбинацию этих альтернативных и часто используемых модулей для вычитания (или добавления) пользовательских баллов, когда за какой-то узел отказано (или такое понижение снова удаляется, что тоже может случиться ...):

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

  • Они используют тип контента с именем машины article(адаптируйте это имя, чтобы оно соответствовало имени вашего собственного компьютера, или пропустите это Условие правил, чтобы включить его для любого типа контента, за который можно голосовать).
  • Значение понижающего голоса совпадает с " -1".

Понизить рейтинг узла

Приведенное ниже правило будет вычитать -2 (предоставить -2) пользовательских балла для понижения (автору узла) ... И также -1 пользовательское балл для избирателя:

{ "rules_votedown_node" : {
    "LABEL" : "votedown_node",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
    "ON" : { "voting_rules_insert_node" : [] },
    "IF" : [
      { "node_is_of_type" : {
          "node" : [ "node" ],
          "type" : { "value" : { "article" : "article" } }
        }
      },
      { "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "-1" } }
    ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "node:author" ],
          "points" : "-2",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Receive downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteReceived",
          "reference" : "By uid=[vote:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      },
      { "userpoints_action_grant_points" : {
          "user" : [ "vote:user" ],
          "points" : "-1",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Issue downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteIssued",
          "reference" : "From uid=[node:author:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      }
    ]
  }
}

Отмена понижения узла

Приведенное ниже правило предоставит +2 (= удалить -2) пользовательских балла за отмененное отрицательное голосование (автору узла) ... И также +1 пользовательское очко за избирателя:

{ "rules_votedown_node_cancel" : {
    "LABEL" : "votedown_node_cancel",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
    "ON" : { "voting_rules_delete_node" : [] },
    "IF" : [
      { "node_is_of_type" : {
          "node" : [ "node" ],
          "type" : { "value" : { "article" : "article" } }
        }
      },
      { "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "-1" } }
    ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "node:author" ],
          "points" : "2",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Cancel downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteCancelled",
          "reference" : "By uid=[vote:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      },
      { "userpoints_action_grant_points" : {
          "user" : [ "vote:user" ],
          "points" : "1",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Withdraw downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteWithdrawn",
          "reference" : "From uid=[node:author:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      }
    ]
  }
}

Несмотря на то, что это может быть неочевидно при просмотре вышеупомянутых экспортированных правил, обратите внимание description, operationи referenceиспользуется в каждой из транзакций User Point.

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

Также обратите внимание description, operationи referenceиспользуется в каждой из транзакций User Points. Это также улучшит типичные отчеты по пользовательским баллам (с помощью различных деталей, добавленных в фактические транзакции с пользовательскими баллами).

Используя модуль « Условные правила », вы также можете объединить эти правила в одно правило (что упрощает их обслуживание).

Домашнее задание : адаптируйте показанные выше правила, чтобы реализовать нечто похожее на вознаграждения в SE (= передать некоторое количество пользовательских баллов от одного пользователя другому).

PS: « если вы проголосуете за что-то, вы получаете пристыкованные очки репутации » (на SE) верно только для ответов, а не для вопросов. Чтобы уточнить это так, как вы хотели бы, это просто вопрос добавления соответствующего дополнительного условия правил (например, на основе типа контента so).

Pierre.Vriens
источник
Пожалуйста, прекратите писать ответы, которые начинаются с «увидеть мой ответ на этот другой вопрос». Если ваш ответ на другой вопрос решит проблему по этому вопросу, посты будут закрыты как дубликаты друг друга. Если нет, то ответ является просто тангенциальным, не отвечает на вопрос и должен быть удален. Я дам вам время, чтобы решить, что вы хотите сделать, прежде чем принимать соответствующие меры самостоятельно. В любом случае, эта привычка публиковать длинные ответы на один вопрос, а затем публиковать ответы на несколько других вопросов, которые на него указывают, собирается прекратиться.
Клайв
Чтобы было понятнее: ответы, которые по сути являются указателями на другие ответы на другие вопросы, не принимаются. Ответы должны быть адаптированы к задаваемому вопросу. Если один и тот же ответ относится к двум вопросам, есть вероятность, что один вопрос дублирует другой.
kiamlaluno
Мерси, которому только что исполнился эквивалент « DownvoteWithdrawn » ...
Pierre.Vriens