При создании файла установки плагина есть две важные особенности, обе в строке extension
:
<extension version="1.7" type="plugin" group="content">
Нужно указать тип plugin
и сферу действия (группу) – в данном случае content
.
Имя плагина начинается всегда с plg
, далее указывается группа Content
и в завершение имя плагина:
class plgContentNewPlugin extends JPlugin
Родительский класс JPlugin
.
Класс плагина должен содержать триггер или триггеры, на которых сработает выполнение заданной функции, к примеру onContentPrepare
:
public function onContentPrepare($context, &$article, &$params, $page = 0) {...}
Сложно найти список триггеров для версии 1.7, беру от 1.6:
onContentBeforeDisplay
onContentAfterDisplay
onContentSearch
onContentSearchAreas
onContentBeforeSave
onContentAfterSave
onContentBeforeDelete
onContentPrepare
onContentPrepareData
onContentPrepareForm
Список взят со страницы: http://docs.joomla.org/16Events
Официальная Документация в виде Вики довольно запутана. Примеры и обучающие материалы в ней даны с ошибками.
Большой список триггеров представлен на странице:
http://docs.joomla.org/Plugin
В случае использования триггера onContentPrepare
остается заменить содержимое:
defined( '_JEXEC' ) or die; class plgContentActivities extends JPlugin { public function onContentPrepare($context, &$article, &$params, $page = 0) { $words = array('/(слово)/i'); $url = JRoute::_('index.php?option=com_component&view=original'); $replacement = '<a href="' . $url . '">$1</a>'; $article->text = preg_replace($words, $replacement, $article->text); } }
Функция onContentPrepare
видимо описана в файле:
/libraries/joomla/html/html/content.php
/** * Utility class to fire onContentPrepare for non-article based content. * * @package Joomla.Platform * @subpackage HTML * @since 11.1 */ abstract class JHtmlContent { /** * Fire onContentPrepare for content that isn't part of an article. * * @param string $text The content to be transformed. * @param array $params The content params. * @param string $context The context of the content to be transformed. * * @return string The content after transformation. * * @since 11.1 */ public static function prepare($text, $params = null, $context = 'text') { if ($params === null) { $params = new JObject; } $article = new stdClass; $article->text = $text; JPluginHelper::importPlugin('content'); $dispatcher = JDispatcher::getInstance(); $results = $dispatcher->trigger( 'onContentPrepare', array ($context, &$article, &$params, 0) ); return $article->text; } }