Создаем плагин в Joomla для JCE редактора

Наверняка многие пользуются JCE-редактором вместо стандартного TinyMCE в Joomla. Огромным плюсом JCE-редактора это валидация текста материала в стандарты HTML4 или HTML5. Те кто используют данную настройку наверняка замечали что при определенных действия вставляются пустые абзацы (в зависимости от настроек редактора это могут быть <p> </p>, <p>&nbsp;</p>, <div> </div>, <div>&nbsp;</div>).

В статье описано создание плагина для Joomla, который после нажатия на кнопку сохранения материала, будет убирать данные пустые строки. Плагин будет называться plg_jceaddon.

Создание плагина

Для создания нашего плагина понадобиться 4 файла:

  1. jceaddon.xml
  2. jceaddon.php
  3. language/ru-RU/ru-RU.plg_content_jceaddon.ini
  4. 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>&nbsp;</p>", "<div>  </div>", "<div>&nbsp;</div>");
            
            // Обрабатываем вступительный и полный текст
            $article->introtext = str_replace($valid, '', $article->introtext);
            $article->fulltext = str_replace($valid, '', $article->fulltext);
        }
        return true;
    }

}

Когда пользователя нажимает кнопку сохранить, прежде чем материал будет занесен в базу данных выполниться функция onContentBeforeSave, значения в массиве $valid будут вырезаны в тексте материала, и уже после этого сохранены.

Установка плагина

Для того чтобы установить плагин в систему, заархивируйте созданные 4 файла в zip-архив, и выберите его в админке Joomla (Расширение\Менеджер расширений\Установка).

Дополнительно

Более подробно про создание плагина в Jommla можно прочитать здесь:

Добавить комментарий


Защитный код
Обновить