Хочу запретить публикацию на сайте материалов с внешними ссылками в тексте. Для этого создал действие "Снимать с публикации материалы содержащие ключевые слова", добавил в ключевые слова "http://" и настроил тригер на срабатывание этого действие после публикации материала.
В итоге все материалы, даже не содержащие ссылки в тексте снимаются с публикации, убираю "http://", все нормально. Пришлось ограничиться "http://www". Получается, что любой материал содержит в тексте "http://"?
Подскажите, как все-таки сделать чтобы снимался с публикации материал содержащий внешние ссылки?
Комментарии
Делаете примерно такой же триггер в rules и настраиваете условие через php.
А поподробнее можно, как отследить ссылки?
Ждал этого вопроса.
т.е. делаем регулярное выражение которое выдает истину при обнаружении в $node ссылки?
Именно так, но в вашем случае не в ноде, а в комменте.
Мне именно в материалах надо проверять
Ааа.. Ну да, невнимательно прочел ))
Получилось
Установил модуль 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 за подсказку.
Всегда пожалуйста ))
а как сделать тоже самое только для комментариев?
спасибо
и еще вопрос, у меня вместо стандартного поля body — свое текстовое поле, как тут быть?
Тоже самое, только в правилах указываем, что применять при добавлении комментария
Спасибо по поводу комментариев, с этим я протупил
И все же, Вы не знаете, если у меня вместо стандартного поля body — свое текстовое поле, и этот код уже не работает, подскажите пожалуйста, как тут быть?