триггеры плагина

’tag’

Как работает элементарный плагин в Joomla 1.7

Май 25, 2012

При создании файла установки плагина есть две важные особенности, обе в строке 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;
	}
}

Tags: , , , ,
Записано в Программирование    |    Постоянная ссылка