Код выводит сообщение анониму, который пытается оставить комментарий с числом ссылок в нём >= 5 (комментарий в базу естественно не попадает):
/**
* Implements hook_comment().
*/
function mymodule_comment(&$a1, $op) {
if ($op == 'validate' && user_is_anonymous() && substr_count($a1['comment'], '<a href=') >= 5) {
form_set_error('comment', 'Ваше сообщение очень похоже на спам — в нём слишком много ссылок.');
}
}
Написанное актуально для
Drupal 6.x
Похожие записи
Комментарии
Что-то не работает у меня. я правильно понял, что данный код надо поставить в template.php ?
И не понятно надо ли менять функцию mymodule_comment май модуль на модуль для которого предназначаются комментарии типа node или я совсем ничего не понимаю? ... :(
нет. template.php это сердце темизации, он никаким образом не влияет на логику работы друпала. для расширения функционала существуют модули и система хуков. как создавать свои модули неоднократно писал.
mymodule это название модуля, который будет отвечать за поимку спама в комментариях. назвать модуль можно как угодно
Создал модуль spamlinks_comment. В его директорию поместил файлы spamlinks_comment.info и spamlinks_comment.module с содерджанием:
Включил модуль, попробовал отправить несколько тестовых комментариев (6 ссылок, 7 ссылок, 9 ссылок + текст), все комментарии были опубликованы без каких-либо ошибок. Т.е. ни один комментарий не был заблокирован за ссылки.
Я что-то где-то сделал неправильно? :-)
http://api.drupal.ru/api/group/hooks/6
Спасибо, будем разбираться.
А можно такой коммент не отвергать, а записать, но при этом сделать неопубликованным?
можно
Добавить комментарий