J3.x

Triggering content plugins in your extension: Difference between revisions

From Joomla! Documentation

Importing text file
Marked this version for translation
 
(32 intermediate revisions by 13 users not shown)
Line 1: Line 1:
====5.5 Using plugins in your own addon====
<noinclude><languages /></noinclude>
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.
<noinclude>{{Joomla version|version=3.x}}</noinclude>
<translate><!--T:1-->
A common example of [[S:MyLanguage/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:</translate>


To activate the plugins for your addon, you just have to use the following line of code:
<source lang="php">
<source lang="php">
$result = $mainframe->triggerEvent( 'onSomething', $param );
$text = JHtml::_('content.prepare', $text);
</source>
</source>
This function calls every plugin 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.
<translate><!--T:2-->
For any other content triggers you must call:</translate>
 
<source lang="php">
$article = new stdClass;
$article->text = $text;
 
// <translate><!--T:7--> add more to parameters if needed</translate>
$params = new JObject;
 
// <translate><!--T:8--> Note JEventDispatcher succeeded the older JDispatcher from Joomla 1.5/2.5 however it does still work if you need to keep compatibility.</translate>
JPluginHelper::importPlugin('content');
$dispatcher = JEventDispatcher::getInstance();
$dispatcher->trigger('onContentPrepare', array('some.context', &$article, &$params, 0));
</source>
 
<translate><!--T:3-->
You might want to look at core components (for example com_content) for an example. See the [[S:MyLanguage/Plugin/Events|triggers page]] for the possible content plugin triggers.</translate>
 
<noinclude>
[[Category:Extension development{{#translation:}}]]
[[Category:Plugins{{#translation:}}]]
[[Category:Plugin Development{{#translation:}}]]
[[Category:Development Recommended Reading{{#translation:}}]]
</noinclude>

Latest revision as of 17:24, 7 April 2020

Joomla! 
3.x

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:

$article = new stdClass;
$article->text = $text;

// add more to parameters if needed
$params = new JObject;

// Note JEventDispatcher succeeded the older JDispatcher from Joomla 1.5/2.5 however it does still work if you need to keep compatibility.
JPluginHelper::importPlugin('content');
$dispatcher = JEventDispatcher::getInstance();
$dispatcher->trigger('onContentPrepare', array('some.context', &$article, &$params, 0));

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.