Portal

Difference between revisions of "Plugin Development"

From Joomla! Documentation

m (layout)
m (Marked for translation)
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
__TOC__
+
<noinclude><languages /></noinclude>
{{:{{FULLPAGENAME}}/Intro}}
+
{{Top portal heading|color=white-bkgd|icon=plug|icon-color=#5091cd|size=5x|text-color=#333|title=<translate><!--T:4-->
 
+
Plugin Development</translate>}}
<div class="large-7 column"> <!-- Switch to one column on narrow screens -->
+
{{Portal:Plugin_Development/Intro/<translate><!--T:1-->
{{:{{FULLPAGENAME}}/Using Plugins}}
+
en</translate>}}
 +
<div class="large-6 column">
 +
{{section portal heading|icon=question|title=<translate><!--T:5-->
 +
Using Plugins</translate>}}{{Portal:Plugin_Development/Using_Plugins/<translate><!--T:6-->
 +
en</translate>}}
 
</div>
 
</div>
<div class="large-5 column panel radius" style="background:aliceblue;">
+
<div class="large-6 column">
<onlyinclude>{{:Portal:Plugin_Development/Reading list}}</onlyinclude>
+
{{section portal heading|icon=magic|title=<translate><!--T:9-->
 +
Reading list</translate>}}{{Portal:Plugin_Development/Reading list/<translate><!--T:8-->
 +
en</translate>}}
 
</div>
 
</div>
 
+
<div class="large-12 column">
<div class="large-12 column panel radius" style="background:#fff;">
+
{{section portal heading|icon=book|title=<translate><!--T:10-->
{{:{{FULLPAGENAME}}/Tutorials}}
+
Tutorials</translate>}}{{Portal:Plugin_Development/Tutorials/<translate><!--T:11-->
 +
en</translate>}}
 
</div>
 
</div>
 
{{-}}
 
{{-}}
{{/box-header-sq|{{PAGENAME}} Documentation Projects|{{FULLPAGENAME}}/Projects|}}
+
<br />
{{:{{FULLPAGENAME}}/Projects}}
+
<div class="large-12 column">
{{/box-footer|}}
+
{{section portal heading|icon=edit|title=<translate><!--T:12-->
<noinclude>[[Category:Development]][[Category:Plugins]]</noinclude>
+
Plugin Development Articles Needed</translate>}}{{Portal:Plugin_Development/Projects/<translate><!--T:13-->
 +
en</translate>}}
 +
</div>
 +
 
 +
__NOTOC__
 +
<noinclude>
 +
<translate>
 +
<!--T:3-->
 +
[[Category:Development]]  
 +
[[Category:Plugin Development]]
 +
</translate>
 +
</noinclude>

Latest revision as of 09:00, 3 June 2015

Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎русский • ‎中文(台灣)‎
Plugin Development


This page contains many links to documentation concerning Plugin Development for Joomla 2.5 and Joomla 3.x. A good place to start is with the Reading list articles below as they provide a good introductory base of knowledge to build on.

What is a Plugin?

A plugin is a kind of Joomla! extension. Plugins provide functions which are associated with trigger events. Joomla provides a set of core plugin events, but any extension can fire (custom) events. When a particular event occurs, all plugin functions of the type associated with the event are executed in sequence. This is a powerful way of extending the functionality of Joomla. It also offers extension developers a way to allow other extensions to respond to their actions, making extensions extensible.

The Joomla! plugin architecture follows the Observer design pattern. The JPlugin class provides the means to register custom plugin code with core or custom events. The JEventDispatcher class is an event handler which calls all plugins registered for a particular event, when that event is triggered. In Joomla 4.x this has been moved to the \Joomla\Event\Dispatcher class in Joomla, and additionally follows the Mediator design pattern

See also: Component, Module, Template


Using Plugins


Plugins are grouped together depending on which event they run on. A full list of events grouped by event type can be found here (the names of a lot of events changed between Joomla 1.5 and Joomla 2.5 see here for a full list of changes). There are also several simple tutorials on making some sample plugins running on some of these events to help running searches on extensions using both the search and smart search components:

There are further tutorials using the user triggers on how to create an authentication plugin to help users log into Joomla and creating a profile plugin for Joomla.

Content plugins can be used to add custom fields to core components. The following tutorial explains how to do this and how to display the new field on your webite.

A more complex example of using plugins to create a new system router to produce URLs is also available (Joomla 2.5 only).


Reading list

The following articles will help familiarise you with Joomla! plugins. They are a good starting point to understanding and then developing plugins.

Beginner[edit]

To understand how to install and use a plugin in Joomla it is recommended to read Administration of a Plugin in Joomla!

Intermediate[edit]

To understand plugins better it is advised that you create a basic plugin for Joomla!.

To read on how to run a basic content plugin in a custom module or component you may have already developed it is recommended to read Triggering content plugins in your extension.

Advanced[edit]

To understand the principles on which the Plugin system works Plugin Developer Overview. To then implement this in a component you have designed it is recommended to read Supporting plugins in your component.



Plugin Development Articles Needed


The Joomla! Documentation Wiki needs your help! Below is a list of pages/articles needed for Plugin Development. If you know of a topic which needs to be addressed, just add it to the List of Red Links below by using the following wikimarkup.

Documentation all together tranparent small.png
Want or Need a New Article on Plugin Development?

To add a Red Link click here and add it to the Plugins Development Projects page. Please use the following wikimarkup code to add the suggested topic to the list:

*[[Put your Plugin Article name here]]

List of Red Links for needed Plugin Development Articles: