Создаем плагин в Joomla для JCE редактора
Наверняка многие пользуются JCE-редактором вместо стандартного TinyMCE в Joomla. Огромным плюсом JCE-редактора это валидация текста материала в стандарты HTML4 или HTML5. Те кто используют данную настройку наверняка замечали что при определенных действия вставляются пустые абзацы (в зависимости от настроек редактора это могут быть <p> </p>
, <p> </p>
, <div> </div>
, <div> </div>
).
В статье описано создание плагина для Joomla, который после нажатия на кнопку сохранения материала, будет убирать данные пустые строки. Плагин будет называться plg_jceaddon.
Создание плагина
Для создания нашего плагина понадобиться 4 файла:
- jceaddon.xml
- jceaddon.php
- language/ru-RU/ru-RU.plg_content_jceaddon.ini
- language/ru-RU/ru-RU.plg_content_jceaddon.sys.ini
Рассмотри каждый файл по отдельности:
jceaddon.xml
Классический установочный файл Joomla, ничего нового:
<?xml version="1.0"?>
<extension type="plugin" version="3.0" method="upgrade" group="content">
<name>jceaddon</name>
<author>babajka38</author>
<authorEmail>babajka38@itzx.ru</authorEmail>
<authorUrl>itzx.ru</authorUrl>
<copyright></copyright>
<license></license>
<version>1.0</version>
<description>PLG_JCEADDON_DESC</description>
<files>
<filename plugin="jceaddon">jceaddon.php</filename>
</files>
<languages folder="language">
<language tag="ru-RU">ru-RU/ru-RU.plg_content_jceaddon.ini</language>
</languages>
<config>
<fields name="params">
<fieldset name="basic">
</fieldset>
</fields>
</config>
</extension>
ru-RU.plg_content_jceaddon.ini и ru-RU.plg_content_jceaddon.sys.ini
Файлы определения языковых констант, то же все как обычно:
PLG_JCEADDON="jceaddon"
PLG_JCEADDON_DESC="Плагин убирает лишние параграфы при сохранении материала"
jceaddon.php
Исполняемый код плагина. Наш плагин будет обрабатывать событие onContentBeforeSave
группы Content
:
<?php
defined('_JEXEC') or die; // No direct access
class plgContentJceaddon extends JPlugin {
public function __construct(& $subject, $config) {
parent::__construct($subject, $config);
$this->loadLanguage();
}
public function onContentBeforeSave($context, $article, $isNew) {
// Выполняем только при сохранении материала
if ($context == 'com_content.article') {
// Массив значений для замены
$valid = array("<p> </p>", "<p> </p>", "<div> </div>", "<div> </div>");
// Обрабатываем вступительный и полный текст
$article->introtext = str_replace($valid, '', $article->introtext);
$article->fulltext = str_replace($valid, '', $article->fulltext);
}
return true;
}
}
Когда пользователя нажимает кнопку сохранить, прежде чем материал будет занесен в базу данных выполниться функция onContentBeforeSave
, значения в массиве $valid
будут вырезаны в тексте материала, и уже после этого сохранены.
Установка плагина
Для того чтобы установить плагин в систему, заархивируйте созданные 4 файла в zip-архив, и выберите его в админке Joomla (Расширение\Менеджер расширений\Установка).
Дополнительно
Более подробно про создание плагина в Jommla можно прочитать здесь: