Difference between revisions of "Plugin"

From Joomla! Documentation

m (Fixed formatting and other issues which were an artefact of the old wiki from which this article came.)
Line 1: Line 1:
[[Category:Bin]]
+
Joomla! plugins enable you to execute code in response to certain events, either Joomla! core events or custom events that are triggered from your own code.  This is a powerful way of extending the basic Joomla! functionality.  To see where plugins fit in with the overall Joomla! architecture, look at [http://dev.joomla.org/content/view/1137/80/|Framework overview].
====== Plugins ======
 
Joomla! plugins enable you to execute code in response to certain events, either Joomla! core events or custom events that are triggered from your own code.  This is a powerful way of extending the basic Joomla! functionality.  To see where plugins fit in with the overall Joomla! architecture, look at [[http://dev.joomla.org/content/view/1137/80/|Framework overview]].
 
  
The Joomla! plugin architecture follows the [http://en.wikipedia.org/wiki/Observer_pattern Observer] design pattern.  The [[references:joomla.framework:application:jplugin|JPlugin]] class is derived from [[references:joomla.framework:base:jobserver|JObserver]] and provides the means to register custom plugin code with core or custom events.  The [[references:joomla.framework:application:jeventdispatcher|JEventDispatcher]] class, derived from [[references:joomla.framework:base:jobservable|JObservable]], is an event handler which calls all plugins registered for a particular event, when that event is triggered.
+
The Joomla! plugin architecture follows the [http://en.wikipedia.org/wiki/Observer_pattern Observer] design pattern.  The [[JPlugin]] class is derived from [[JObserver]] and provides the means to register custom plugin code with core or custom events.  The [[JEventDispatcher]] class, derived from [[JObservable]], is an event handler which calls all plugins registered for a particular event, when that event is triggered.
  
  * [[Tutorial:Creating_a_Plugin_for_Joomla_1.5]]
+
* [[Tutorial:Creating a Plugin for Joomla 1.5]]
  * [[How_to_create_a_content_plugin]]
+
* [[How to create a content plugin]]
  * [[plugins:using_plugins|How to use plugins in your own code]]
+
* [[plugins:using_plugins|How to use plugins in your own code]]
  * [[Tutorial:Creating_an_Authentication_Plugin_for_Joomla_1.5]]
+
* [[Tutorial:Creating an Authentication Plugin for Joomla 1.5]]
  
Useful reference: [[http://codex.gallery2.org/index.php/Gallery2:Embedding:Event-Based_Loose-Coupled_Integration|Gallery 2: Embedding: Event-Based Loose-Coupled Integration]]
+
Useful reference: [http://codex.gallery2.org/index.php/Gallery2:Embedding:Event-Based_Loose-Coupled_Integration Gallery 2: Embedding: Event-Based Loose-Coupled Integration]
  
 
Prior to Joomla! 1.5 plugins were known as mambots.  Mambots were able to change content only and were based on certain signal words.  Since then their scope has been stretched and extended to such an extent that to enhance the meaning of the new functionality the developers decided to change the name from mambots to plugins.  Joomla! 1.5 includes legacy support for Joomla! 1.0 mambots.
 
Prior to Joomla! 1.5 plugins were known as mambots.  Mambots were able to change content only and were based on certain signal words.  Since then their scope has been stretched and extended to such an extent that to enhance the meaning of the new functionality the developers decided to change the name from mambots to plugins.  Joomla! 1.5 includes legacy support for Joomla! 1.0 mambots.
  
[[Category:Development]]
+
==Events==
[[Category:Plugins]]
 
 
 
======Events======
 
 
Joomla! ships with a variety of core events, organised into groups.  These are described in the following topics.
 
Joomla! ships with a variety of core events, organised into groups.  These are described in the following topics.
  
  * [[Reference:System_Events_for_Plugin_System|System events]]
+
* [[Reference:System Events for Plugin System|System events]]
  * [[Reference:User_Events_for_Plugin_System|User events]]
+
* [[Reference:User Events for Plugin System|User events]]
  * [[Reference:Editor_Events_for_Plugin_System|Editor events]]
+
* [[Reference:Editor Events for Plugin System|Editor events]]
  * [[Reference:Content Events for Plugin System|Content events]]
+
* [[Reference:Content Events for Plugin System|Content events]]
  * [[Reference:Contact_Events_for_Plugin_System|Contact events]]
+
* [[Reference:Contact Events for Plugin System|Contact events]]
  
 
This is an alphabetical list of the core events in Joomla! 1.5 together with the group name to which each belongs.  Each event name links to more detailed information.
 
This is an alphabetical list of the core events in Joomla! 1.5 together with the group name to which each belongs.  Each event name links to more detailed information.
  
  *[[Reference:Content Events for Plugin System#onAfterContentSave|onAfterContentSave]] (content)
+
* [[Reference:Content Events for Plugin System#onAfterContentSave|onAfterContentSave]] (content)
  *[[Reference:User_Events_for_Plugin_System#onAfterDeleteUser|onAfterDeleteUser]] (user)
+
* [[Reference:User Events for Plugin System#onAfterDeleteUser|onAfterDeleteUser]] (user)
  *[[Reference:Content Events for Plugin System#onAfterDisplay|onAfterDisplay]] (content)
+
* [[Reference:Content Events for Plugin System#onAfterDisplay|onAfterDisplay]] (content)
  *[[Reference:Content Events for Plugin System#onAfterDisplayTitle|onAfterDisplayTitle]] (content)
+
* [[Reference:Content Events for Plugin System#onAfterDisplayTitle|onAfterDisplayTitle]] (content)
  *[[Reference:Content Events for Plugin System#onAfterDisplayContent|onAfterDisplayContent]] (content)
+
* [[Reference:Content Events for Plugin System#onAfterDisplayContent|onAfterDisplayContent]] (content)
  *[[Reference:System_Events_for_Plugin_System#onAfterInitialise|onAfterInitialise]] (system)
+
* [[Reference:System Events for Plugin System#onAfterInitialise|onAfterInitialise]] (system)
  *[[Reference:System_Events_for_Plugin_System#onAfterRoute|onAfterRoute]] (system)
+
* [[Reference:System Events for Plugin System#onAfterRoute|onAfterRoute]] (system)
  *[[Reference:System_Events_for_Plugin_System#onAfterDispatch|onAfterDispatch]] (system)
+
* [[Reference:System Events for Plugin System#onAfterDispatch|onAfterDispatch]] (system)
  *[[Reference:System_Events_for_Plugin_System#onAfterRender|onAfterRender]] (system)
+
* [[Reference:System Events for Plugin System#onAfterRender|onAfterRender]] (system)
  *[[Reference:User_Events_for_Plugin_System#onAfterStoreUser|onAfterStoreUser]] (user)
+
* [[Reference:User_Events for Plugin System#onAfterStoreUser|onAfterStoreUser]] (user)
  *[[Reference:User_Events_for_Plugin_System#onAuthenticate|onAuthenticate]] (authentication)
+
* [[Reference:User_Events for Plugin System#onAuthenticate|onAuthenticate]] (authentication)
  *[[Reference:User_Events_for_Plugin_System#onAuthenticateFailure|onAuthenticateFailure]] (authentication)
+
* [[Reference:User_Events for Plugin System#onAuthenticateFailure|onAuthenticateFailure]] (authentication)
  *[[Reference:Content Events for Plugin System#onBeforeContentSave|onBeforeContentSave]] (content)
+
* [[Reference:Content Events for Plugin System#onBeforeContentSave|onBeforeContentSave]] (content)
  *[[Reference:User_Events_for_Plugin_System#onBeforeDeleteUser|onBeforeDeleteUser]] (user)
+
* [[Reference:User Events for Plugin System#onBeforeDeleteUser|onBeforeDeleteUser]] (user)
  *[[Reference:Content Events for Plugin System#onBeforeDisplay|onBeforeDisplay]] (content)
+
* [[Reference:Content Events for Plugin System#onBeforeDisplay|onBeforeDisplay]] (content)
  *[[Reference:Content Events for Plugin System#onBeforeDisplayContent|onBeforeDisplayContent]] (content)
+
* [[Reference:Content Events for Plugin System#onBeforeDisplayContent|onBeforeDisplayContent]] (content)
  *[[Reference:User_Events_for_Plugin_System#onBeforeStoreUser|onBeforeStoreUser]] (user)
+
* [[Reference:User Events for Plugin System#onBeforeStoreUser|onBeforeStoreUser]] (user)
  *[[Reference:Editor_Events_for_Plugin_System#onCustomEditorButton|onCustomEditorButton]] (editors-xtd)
+
* [[Reference:Editor Events for Plugin System#onCustomEditorButton|onCustomEditorButton]] (editors-xtd)
  *[[Reference:Editor_Events_for_Plugin_System#onDisplay|onDisplay]] (editors)
+
* [[Reference:Editor Events for Plugin System#onDisplay|onDisplay]] (editors)
  *[[Reference:Editor_Events_for_Plugin_System#onGetContent|onGetContent]] (editors)
+
* [[Reference:Editor Events for Plugin System#onGetContent|onGetContent]] (editors)
  *[[Reference:Editor_Events_for_Plugin_System#onGetInsertMethod|onGetInsertMethod]] (editors)
+
* [[Reference:Editor Events for Plugin System#onGetInsertMethod|onGetInsertMethod]] (editors)
  *[[Reference:System_Events_for_Plugin_System#onGetWebServices|onGetWebServices]] (xmlrpc)
+
* [[Reference:System Events for Plugin System#onGetWebServices|onGetWebServices]] (xmlrpc)
  *[[Reference:Editor_Events_for_Plugin_System#onInit|onInit]] (editors)
+
* [[Reference:Editor Events for Plugin System#onInit|onInit]] (editors)
  *[[Reference:User_Events_for_Plugin_System#onLoginUser|onLoginUser]] (user)
+
* [[Reference:User Events for Plugin System#onLoginUser|onLoginUser]] (user)
  *[[Reference:User_Events_for_Plugin_System#onLogoutUser|onLogoutUser]] (user)
+
* [[Reference:User Events for Plugin System#onLogoutUser|onLogoutUser]] (user)
  *[[Reference:Content Events for Plugin System#onPrepareContent|onPrepareContent]] (content)
+
* [[Reference:Content Events for Plugin System#onPrepareContent|onPrepareContent]] (content)
  *[[Reference:Editor_Events_for_Plugin_System#onSave|onSave]] (editors)
+
* [[Reference:Editor Events for Plugin System#onSave|onSave]] (editors)
  *[[Reference:System_Events_for_Plugin_System#onSearch|onSearch]] (search)
+
* [[Reference:System Events for Plugin System#onSearch|onSearch]] (search)
  *[[Reference:System_Events_for_Plugin_System#onSearchAreas|onSearchAreas]] (search)
+
* [[Reference:System Events for Plugin System#onSearchAreas|onSearchAreas]] (search)
  *[[Reference:Editor_Events_for_Plugin_System#onSetContent|onSetContent]] (editors)
+
* [[Reference:Editor Events for Plugin System#onSetContent|onSetContent]] (editors)
  *[[Reference:Contact_Events_for_Plugin_System#onSubmitContact|onSubmitContact]] (contact)
+
* [[Reference:Contact Events for Plugin System#onSubmitContact|onSubmitContact]] (contact)
  *[[Reference:Contact_Events_for_Plugin_System#onValidateContact|onValidateContact]] (contact)
+
* [[Reference:Contact Events for Plugin System#onValidateContact|onValidateContact]] (contact)
 +
<noinclude>[[Category:Development]][[Category:Plugins]]</noinclude>

Revision as of 12:25, 14 January 2009

Joomla! plugins enable you to execute code in response to certain events, either Joomla! core events or custom events that are triggered from your own code. This is a powerful way of extending the basic Joomla! functionality. To see where plugins fit in with the overall Joomla! architecture, look at overview.

The Joomla! plugin architecture follows the Observer design pattern. The JPlugin class is derived from JObserver and provides the means to register custom plugin code with core or custom events. The JEventDispatcher class, derived from JObservable, is an event handler which calls all plugins registered for a particular event, when that event is triggered.

Useful reference: Gallery 2: Embedding: Event-Based Loose-Coupled Integration

Prior to Joomla! 1.5 plugins were known as mambots. Mambots were able to change content only and were based on certain signal words. Since then their scope has been stretched and extended to such an extent that to enhance the meaning of the new functionality the developers decided to change the name from mambots to plugins. Joomla! 1.5 includes legacy support for Joomla! 1.0 mambots.

Events[edit]

Joomla! ships with a variety of core events, organised into groups. These are described in the following topics.

This is an alphabetical list of the core events in Joomla! 1.5 together with the group name to which each belongs. Each event name links to more detailed information.