Фильтр на матюги: премодерирование контента встроенными средствами Drupal

Готовых модулей для фильтрации публикуемых пользователями сайта текстов предостаточно. Но подождите с их установкой. Возможно, то, что нужно, у вас уже есть.

События на сайте и реакция на них

Если кто еще не знает, в Drupal`е существует такое понятие, как «экшены» (или «действия»). Суть их сводится к проявлению со стороны движка определенной реакции в ответ на некоторые события.

Событием, к примеру, может быть размещение посетителем комментария или публикация на сайте новой статьи. Если администратор не желает оставлять все эти дела без пристального своего внимания, он может задействовать механизм «экшенов» и взять сии события под более-менее пристальный контроль.

Стандартные заготовки под действия «вшиты» в Drupal изначально и всегда доступны по адресу: /admin/settings/actions.

Страница настройки действий в админке Drupal.

Как мы видим на скриншоте, экшены поделены на три логические группы:

  • действия при комментировании публикаций;
  • действия в отношении пользователей;
  • действия при размещении или редактировании публикаций.

Включается нужный экшен путем выбора нужного из выпадающего списка в самом низу страницы их настроек.

Выбор нового экшена для включения в работу сайта.

Настраиваем фильтрацию размещаемых пользователями текстов

Перейдем к практической части. В соответствии с заявленной темой, задействуем функционал проверки размещаемых комментариев на предмет присутствия в их тексте разного рода нелитературных словообразований.

Выбераем из выпадающего списка пункт «Снять с публикации комментарий содержащий слова...», и жмем на кнопку «Создать». Появляется страница настроек уже отдельно нашего действия.

Страница настроек действия фильтра на слова в комментариях.

Все, что нам тут надо сделать, это задать список слов, которые не хотим видеть в комментариях на своем ресурсе. Список задается, соответственно, в многострочном текстовом поле «Keywords (Ключевые слова):». Нужные «ненужные» слова вводятся через пробел. Регистр букв учитывается: обратите внимание, что слова «Йух» и «йух» будут рассматриваться, как разные.

Для удобства при дальнейшем использовании включаемого действия, в поле «Описание» можно задать этому экшену свое уникальное название.

Заполняем все необходимое и сохраняем, нажав на кнопку «Сохранить» (как ни странно :) ). Теперь на странице списка действий наш нововключенный экшен отмечен, как задействованный. Но подождите радоваться, толку от него пока еще не будет.

Триггер - перехватчик событий, запускающий действия

Что бы экшены начали плодотворно работать, дополнительно понадобиться включить еще один из модулей ядра - Trigger. Модуль этот как раз и будет тем мостиком, что объединит в единое, полезное целое происходящие на сайте события и реакцию на них движка.

Переходим на страницу включения/отключения модулей (admin/build/modules) в блоке «Ядро - дополнительные» ставим галочку в чекбокс напротив модуля Trigger.

В меню настроек конструкции сайта у нас появился новый пункт - «Триггер» (admin/build/trigger). Идем на эту новую страницу.

Как и при настройке экшенов, мы видем несколько специфических групп области применения перехватчика-триггера:

  • Комментарии;
  • Cодержимо;
  • Хронометр;
  • Таксономия;
  • Пользователи;

Не вижу смысла разбирать каждую группу: все достаточно явно. Ранее мы выбрали своей задачей оградить свой сайт от комментаторов-матерщинников, посему сконцентрируем внимание на группе «Комментарии» (admin/build/trigger/comment):

Триггеры-перехватчики, ответственные за комментирование на сайте.

Из трех полей на странице данной группы триггеров нам необходимо выбрать одно. В свете нашей текущей надобности это будет «Триггер: После сохранения нового комментария».

Находим в выпадающем списке наш, недавно включенный, экшен, и подтверждаем его выбор нажатием на кнопку «Назначить». Больше делать ничего не нужно, функционал задействован.

Мы рассмотрели лишь малую толику возможностей комбинации Триггер-Действие. Просто как введение в знакомство с расширенными возможностями, встроенными в ядро Drupal`а изначально. Наложив же свою фантазию на текущие потребности отдельно взятого интернет-ресурса, каждый может уже с вышеописанной комбинацией сотворить неимоверное количество полезных решений.

А ведь можно и свои собственные экшены «писать». Сравнительно простое дело. Ну да об этом в другой раз: попробуйте начать с усвоения малого.

Отступление в заключение или «PS в догонку»

Человеку, только начинающему свое знакомство с Drupal`ом, свойственна одна характерная черта. При возникновении какой-либо надобности автоматом возникает желание найти готовый «сторонний» модуль с соответствующим функционалом. Вполне логично и естественно. Зачем же еще тогда нужны дополнительные модули? Все так.

И не так...

Основная прелесть Drupal`а никак не в наличии впечатляющих размеров репозитория с модулями под большое количество вебмастерских нужд. Ценность его - в нем самом. И если вы не используете по полной программе всю, заложенную в движек, мощь, то рискуете в результате получить еще одного неповоротливого веб-монстра. На который будут тыкать пренебрежительно жирным пальцем снобы из ЖЖ, рассказывая своей читательской аудитории, какое нежизнеспособное и тяжеленное гамно этот Друпал.

Прежде, чем тащить свою виртуальную задницу на drupal.org/project/Modules, посмотрите, что можно сделать в отношении возникшей потребности средствами самого движка. Уверяю, что в 80% случаев этих средств будет вполне достаточно.

Dalay

Комментарии

Очень вовремя наткнулась на Вашу статью,вопрос про экшены не давал мне покоя,спасибо за внятный и понятный рассказ.

я так понял это для 6-ки. эх...

Спасибо. Все доходчиво и как нельзя к стати :)

А как с помощью Action сделать кнопку "Пожаловаться"? Например, юзеры пять раз нажали на эту кнопку и материал сделался не опубликованным. Подскажите, плиз.

Никак.

красивый ответ. :) давно такой ответ не видел.

SHTRLZ, а в D7 по-твоему триггеров нету?

сделал, но чет нифига не срабатывает