Как ограничить каждого пользователя созданием только одного комментария на узел?
Кто-нибудь знает, есть ли какой-либо способ, которым я могу ограничить каждого пользователя сайта, сделать только один комментарий на узел на моем сайте Drupal 7? Я еще ничего не нашел.
Я только что попробовал сложную настройку с флагами, правилами и триггерами, действиями и переадресациями. Это не сработало.
1 ответ
5 лет спустя ... Если вы не хотите писать собственный код или используйте Предел комментариев (который имеет только версию dev для D7), вы можете использовать Правила и Флаг для этого, как описано ниже.
Шаг 1: узлы флага с комментариями
Используйте флаг для создания флага (не-глобального) с меткой чего-то «Комментарий отправлен» (и имя машины comment_submitted
).
Шаг 2: зарегистрировать представление комментариев
Используйте Правила для создания настраиваемого правила с событием Rules " После сохранения нового комментарии. ».
Это правило должно выполнить действие «Узел флага» для правил (с использованием флага, созданного на шаге 1).
Шаг 3: отменить дополнительные комментарии
Используйте Правила , чтобы создать настраиваемое правило, чтобы отменить дополнительные комментарии пользователей для узлов, для которых пользователь прокомментировал раньше (= узлы, отмеченные автором комментария). Вот правило, которое вы можете использовать для этого (в формате экспорта правил, обновите имя машины используемого флага, а затем импортируйте его на свой собственный сайт):
{ "rules_unpublish_additional_comments" : {
"LABEL" : "Unpublish additional comments",
"PLUGIN" : "reaction rule",
"ACTIVE" : false,
"OWNER" : "rules",
"REQUIRES" : [ "rules", "flag", "comment" ],
"ON" : { "comment_insert" : [] },
"IF" : [
{ "flag_flagged_node" : {
"flag" : "comment_submittedr",
"node" : [ "comment:node" ],
"flagging_user" : [ "comment:author" ]
}
}
],
"DO" : [ { "data_set" : { "data" : [ "comment:status" ], "value" : "0" } } ]
}
}
Примечание : это правило действует как в заголовке шага 3 (= отменить дополнительные комментарии ). Таким образом, он не скрывает форму комментария (которая также не задана явно в вопросе). Добавление «заданного сообщения» в качестве действия дополнительных правил может помочь в этом. Таким образом, согласно комментарию от OPER ниже вопроса, этот ответ должен показать, что существует «способ» достичь аналогичного результата, используя Правила (который я предпочел бы использовать вместо добавления другого модуля, имеющего только версию dev).