Actions

Difference between revisions of "Triggering content plugins in your extension"

From Joomla! Documentation

(Updated contents)
(One intermediate revision by one user not shown)
Line 1: Line 1:
Using the plugin system in your addon is fairly simple. The most important part is good planning because, to some degree, you're defining an interface for other people to use.
+
A common example of [[Supporting plugins in your component|using plugins]] is to run the '''content plugins''' on some text. This is useful if you want to support plugins that usually work on Content from a custom extension. For the latest release of Joomla! 1.5 {{JVer|1.5}} and newer versions, you can simply use:
  
To activate the plugins for your addon, you just have to use the following  code:
 
 
<source lang="php">
 
<source lang="php">
$dispatcher =& JDispatcher::getInstance();
+
$text = JHTML::_('content.prepare', $text);
$results = $dispatcher->trigger('onSomething', $params);
+
 
</source>
 
</source>
This function calls every plugin that has registered itself for the event <code>'onSomething'</code> and hands over the array <code>$param</code> as parameter.
 
  
As a return value you get an array of results from these plugins. All this is of course optional, you could also use the system without parameters and/or a result.
+
For early versions of Joomla! 1.5, you need to "spell it out":
  
You can also pass arguments by reference to allow plugins to edit the passed data. For example:
 
 
<source lang="php">
 
<source lang="php">
 
$dispatcher =& JDispatcher::getInstance();
 
$dispatcher =& JDispatcher::getInstance();
$dispatcher->trigger('onSomething', &$params);
+
$item->text = & your_text_area_item;   
</source>
+
$item->params = clone($params);
 
+
JPluginHelper::importPlugin('content');  
A common usage might be to run the '''content plugins''' on some text. This is useful if you want to support plugins that usually work on Content from a custom extension. For the latest release of Joomla! 1.5 {{JVer|1.5}} and newer versions, you can simply use:
+
$dispatcher->trigger('onPrepareContent', array (& $item, & $item->params, 0));  
 
+
<source lang="php">
+
        $text = JHTML::_('content.prepare', $text);
+
</source>
+
 
+
For early versions of Joomla! 1.5, you need to "spell it out":
+
 
+
<source lang="php">
+
        $dispatcher =& JDispatcher::getInstance();
+
        $item->text = & your_text_area_item;   
+
        $item->params = clone($params);
+
        JPluginHelper::importPlugin('content');  
+
        $dispatcher->trigger('onPrepareContent', array (& $item, & $item->params, 0));  
+
 
</source>
 
</source>
  

Revision as of 13:43, 5 July 2012

A common example of using plugins is to run the content plugins on some text. This is useful if you want to support plugins that usually work on Content from a custom extension. For the latest release of Joomla! 1.5 Joomla 1.5 and newer versions, you can simply use:

$text = JHTML::_('content.prepare', $text);

For early versions of Joomla! 1.5, you need to "spell it out":

$dispatcher =& JDispatcher::getInstance();
$item->text = & your_text_area_item;  
$item->params = clone($params);
JPluginHelper::importPlugin('content'); 
$dispatcher->trigger('onPrepareContent', array (& $item, & $item->params, 0));

You might want to look at core components (for example com_content) for an example.

Also for PHP5.3 compliance please look at the discussion page.