Actions

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

From Joomla! Documentation

m (added the exact code to use content plugins)
Line 9: Line 9:
 
$results = $dispatcher->trigger('onSomething', $params);
 
$results = $dispatcher->trigger('onSomething', $params);
 
</source>
 
</source>
This function calls every plugin that has registered itself for the event 'onSomething' and hands over the array $param as parameter.  
+
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.
 
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.
Line 17: Line 17:
 
$dispatcher =& JDispatcher::getInstance();
 
$dispatcher =& JDispatcher::getInstance();
 
$dispatcher->trigger('onSomething', &$params);
 
$dispatcher->trigger('onSomething', &$params);
 +
</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:
 +
 +
<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>
  
 
You might want to look at core components (for example com_content) for an example.
 
You might want to look at core components (for example com_content) for an example.

Revision as of 00:27, 10 March 2010


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:

$dispatcher =& JDispatcher::getInstance();
$results = $dispatcher->trigger('onSomething', $params);

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.

You can also pass arguments by reference to allow plugins to edit the passed data. For example:

$dispatcher =& JDispatcher::getInstance();
$dispatcher->trigger('onSomething', &$params);

A common usage might be to use the content plugins if you have an editable field. This is the code that will do that:

        $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.