[Решено] Спам и внешнии ссылки

Главные вкладки

Аватар пользователя Arturus Arturus 4 мая 2011 в 9:56

Хочу запретить публикацию на сайте материалов с внешними ссылками в тексте. Для этого создал действие "Снимать с публикации материалы содержащие ключевые слова", добавил в ключевые слова "http://" и настроил тригер на срабатывание этого действие после публикации материала.
В итоге все материалы, даже не содержащие ссылки в тексте снимаются с публикации, убираю "http://", все нормально. Пришлось ограничиться "http://www". Получается, что любой материал содержит в тексте "http://"?

Подскажите, как все-таки сделать чтобы снимался с публикации материал содержащий внешние ссылки?

Комментарии

Аватар пользователя Alex Bacart Alex Bacart 4 мая 2011 в 10:57

Ждал этого вопроса.

  1. Выяснение внешности ссылки процесс творческий, т.к. ссылка может выглядеть как угодно, поэтому точного рецепта быть не может - программируйте это алгоритм так, как будет удобно вам.
  2. PHP относится к друпалу также, как HTML и CSS, т.е. никак. По пхп куча форумов - там и задайте вопрос "Как отличить внешнюю ссылку от внутренней?".
Аватар пользователя Arturus Arturus 6 мая 2011 в 12:03

Получилось
Установил модуль rules
Создал два правила
1. для события After saving new content
и
2. для события After updating existing content

Выбрал для обоих условия Execute custom PHP code indent

<?php
$text
=$node->body;
$count_t=substr_count($text,'http://');
return 
$count_t>0;?>

Добавил действия:
- снять с публикации
- показать сообщение, что материал отправлен на модерацию
- Send a mail to an arbitrary mail address, для отправки уведомления на почту

Все работает, спам фильтруется.
Спасибо Vydrin_AP за подсказку.

Аватар пользователя Супрун Иван Супрун Иван 30 октября 2012 в 16:21

Спасибо по поводу комментариев, с этим я протупил
И все же, Вы не знаете, если у меня вместо стандартного поля body — свое текстовое поле, и этот код уже не работает, подскажите пожалуйста, как тут быть?