Actions

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

From Joomla! Documentation

m
(Add notice JDispatcher is deprecated in Joomla 3.x)
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:Development]]
+
{{version|2.5,3.x}}
[[Category:Plugins]]
+
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 content prepare trigger you can simply call:
  
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.
 
 
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 everyplugin that has registered itself for the event 'onSomething' and hands over the array $param 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 any other content triggers you must call:
  
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; 
 +
$item->params = clone($params);
 +
JPluginHelper::importPlugin('content');  
 +
$dispatcher->trigger('onPrepareContent', array (& $item, & $item->params, 0));  
 
</source>
 
</source>
  
A common usage might be to use the content plugins if you have an editable field. This is the code that will do that:
+
Note in Joomla 3.x JDispatcher is deprecated in favour of JEventDispatcher. However as JEventDispatcher doesn't exist in Joomla 2.5 - this code is needed for your extension to support both versions of Joomla.
  
<source lang="php">
+
You might want to look at core components (for example com_content) for an example. See the [[Plugin/Events|triggers page]] for the possible content plugin triggers.
        $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>
+
  
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.
 
Also for PHP5.3 compliance please look at the discussion page.
 +
<noinclude>[[Category:Extension development]][[Category:Plugins]]
 +
[[Category:Plugin Development]]
 +
</noinclude>

Revision as of 05:01, 8 August 2013

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 content prepare trigger you can simply call:

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

For any other content triggers you must call:

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

Note in Joomla 3.x JDispatcher is deprecated in favour of JEventDispatcher. However as JEventDispatcher doesn't exist in Joomla 2.5 - this code is needed for your extension to support both versions of Joomla.

You might want to look at core components (for example com_content) for an example. See the triggers page for the possible content plugin triggers.

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