Разработка плагина для JComments

  • Среда, 06 августа 2014

Периодически на форуме возникают предложения о добавлении того или иного функционала в JComments, но в большинстве своем они все очень индивидуальны, чтобы включать их в компонент. Однако это не значит, что решения нет и в этой небольшой статье я хочу привести пример простейшего плагина для JComments.

Предлагаю рассмотреть задачу разработки плагина для JComments, который будет запрещать публиковать комментарий, содержащий определенное слово (назовем его стоп-словом).

Для решения этой задачи нам необходимо сначала выбрать событие JComments, которое позволит нам перехватить момент сохранения комментария. Информация о поддерживаемых событиях доступна на официальном сайте Список поддерживаемых событий для плагинов JComments. В данном случае проще всего использовать событие onJCommentsCommentBeforeAdd, так как это событие как раз и позволит нам проверить содержимое комментария и заблокировать сохранение, если комментарий содержит заданное стоп-слово.

Приступим к созданию плагина. Для начала создадим файл XML-манифеста для плагина и назовем его stopword.xml



	JComments - StopWord
	06/08/2014
	smart
	Copyright 2014 JoomlaTune.ru All rights reserved!
	smart@joomlatune.ru
	http://www.joomlatune.ru
	http://www.gnu.org/copyleft/gpl.html GNU/GPL
	1.0
	PLG_JCOMMENTS_STOPWORD_XML_DESCRIPTION
	
		stopword.php
	
	
		en-GB/en-GB.plg_jcomments_stopword.ini
		en-GB/en-GB.plg_jcomments_stopword.sys.ini
	
	
	    
    	  

Как видно из примера это простой типовой XML-манифест для плагина, в качестве группы плагинов указан jcomments, плагин поддерживает один параметр — stopword, в котором мы будем указывать стоп-слово. Кроме того мы включили поддержку локализации языковые файлы для английского языка. Кстати, давайте их добавим. Создаем папку languages, в ней подпапку en-GB и помещаем в нее 2 файла en-GB.plg_jcomments_stopword.ini:

PLG_JCOMMENTS_STOPWORD="JComments - StopWord"
PLG_JCOMMENTS_STOPWORD_FIELD_STOPWORD_LABEL="Stop-word"
PLG_JCOMMENTS_STOPWORD_FIELD_STOPWORD_DESC="If comment contains specified word it will be not published."
PLG_JCOMMENTS_STOPWORD_MESSAGE_ERROR="You are not allowed to use word `%s`"
PLG_JCOMMENTS_STOPWORD_XML_DESCRIPTION="Plugin does not allow to save comment which contains given word."
и en-GB.plg_jcomments_stopword.sys.ini
PLG_JCOMMENTS_STOPWORD="JComments - StopWord"
PLG_JCOMMENTS_STOPWORD_XML_DESCRIPTION="Plugin does not allow to save comment which contains given word."

Далее создаем непосредственно файл плагина stopword.php

params->get('stopword', '');
		if (!empty($stopword))
		{
			if (JString::strpos(JString::strtolower($comment->comment), JString::strtolower($stopword)) !== false)
			{
				// если комментарий содержит стоп-слово - выводим сообщение с ошибкой
				JCommentsAJAX::showErrorMessage(JText::sprintf('PLG_JCOMMENTS_STOPWORD_MESSAGE_ERROR', $stopword));
				// и возвращаем false для отмены сохранения
				return false;
			}
		}
		return true;
	}
}

Теперь мы можем все запаковать в архив, установить плагин в Менеджере расширений административной панели Joomla, опубликовать, указать в параметрах любое стоп-слово и попробовать добавить комментарий с данным стоп-словом.

{jcomments lock}
Smart

Smart

Россия, Севастополь. http://www.joomlatune.com/

Статьи автора

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Логотип Joomla

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Свернуть

Коротко о главном в Joomla

Новости портала

Новое в блогах

Видео

Форум о Joomla