Доброго времени суток.
В общем, есть нода, в которой имеется 2 текстового поля.
- Для одного поля требуется полная фильтровка мата (либо запретить создание ноды, либо заменить мат на спец. слово, указанное в настройках (пример, [цензара])).
- Для другого поля требуется фильтр по некоторой базе слов. Если вдруг совпадает - запрет на создание, без замен.
Есть ли какие-нибудь готовые решения по введению ограничений для отдельных полей ноды, нежели для всех типов материала?
На данный момент вижу только один выход: хуком перед созданием ноды получать текстовые поля и их фильтровать готовыми функциями. Но боюсь, что с фильтром мата свой костыль может ухудшить производительность, поэтому интересны готовые, простестированные, решения.
Комментарии
http://drupalace.ru/filtr-maternyh-slov-dlya-drupal-7
С этим ознакамливался.
Смущает только то, что нельзя определить именно в конкретной ноде, нежели на весь "Plain Text", либо "Full HTML".
Ну, думаю, что придется первый пункт решать этим способом, а второй - своим хуком.
Не подскажете, есть ли возможность запретить создание ноды без замены цензурой, если обнаружен мат?
Хм.. Неужели никто не может помочь?
В друпале это делается через your_form_name_validate вашей формы.
Кстати вот еще вариант борьбы с матом http://www.sooource.net/drupal-antimat-module
Можно и без фильтра
Хм.. Такой хук реализовать и получить значение поля я могу, но вот как отфильтровать его готовым решением? Модуль фильтра API не предлагает, как я знаю.
Вы писали
это делается в хуке _validate. В нем если есть мат делаете form_set_error
Это я понимаю. Как в хуке validate узнать о том, что есть мат? Какая функция из фильтра может проверить значение поля?
Кто-нибудь может помочь внятным ответом?
Меня не интересует регулярка, я знаю как хукать валидацию формы.
Мне нужно именно при валидации проверить поле на содержание мата. Какой модуль антимата предоставляет API для использования в своих модулях?
Писать свои регулярки не собираюсь, дабы пойдет изобретение велосипеда.