Actions

Portal

Difference between revisions of "Developers"

From Joomla! Documentation

m (new subpage)
m (final format, hope every likes it, will work on getting edits back to Chunk or called pages next)
Line 1: Line 1:
{{inuse}}{{RightTOC}}
 
{{Chunk:Developer profile}}
 
 
A complete contents list of all pages of interest to developers can be found in the [[:Category:Development|development category]].
 
 
== Reference Material ==
 
 
* [[Platform|Joomla! Platform]]
 
* [http://api.joomla.org API documentation] automatically generated using phpDocumentor.
 
* [http://developer.joomla.org/platform-manual.html Platform Manual]
 
* [http://developer.joomla.org/coding-standards.html  Coding Standards]
 
* [http://developer.joomla.org Developer Website] Development policies and status
 
 
== Joomla Magazine Articles ==
 
* [http://magazine.joomla.org/issues/Issue-Aug-2012/item/822-Towards-A-More-Testable-Module Towards a more testable module]
 
* [http://magazine.joomla.org/issues/Issue-Apr-2012/item/709-Check-username-availability-with-Ajax Check username availability with Ajax]
 
* [http://magazine.joomla.org/issues/issue-feb-2012/item/671-Developing-a-Smart-Search-Plugin Developing a Smart Search plugin]
 
* [http://magazine.joomla.org/issues/issue-feb-2012/item/667-Customizing-an-Extensions-Edit-Screen Customising an extension's edit screen]
 
* [http://magazine.joomla.org/issues/Issue-Jan-2012/item/652-Integrating-WebSocket-to-Joomla Integrating WebSocket to Joomla]
 
* [http://magazine.joomla.org/issues/Issue-Jan-2012/item/648-Customising-Joomla-Help Customising Joomla help]
 
* [http://magazine.joomla.org/issues/Issue-Dec-2011/item/616-Write-your-own-App-using-Joomla-Platform Write you own app using the Joomla Platform]
 
* [http://magazine.joomla.org/issues/Issue-Nov-2011/item/591-Sorting-Articles-by-Recently-Touched-Date Sorting articles by recently touched date]
 
* [http://magazine.joomla.org/topics/item/447-using-doctrine-ORM-in-joomla Using Doctrine ORM in Joomla]
 
* [http://magazine.joomla.org/topics/item/429-templates-within-templates Rapid development techniques - Templates within templates]
 
* [http://magazine.joomla.org/topics/item/349-removing-mootools Rapid development techniques - Removing MooTools]
 
* [http://magazine.joomla.org/topics/item/325-Rapid-Development-Techniques-Preventing-Code-Fragmentation Rapid development techniques - Preventing code fragmentation]
 
* [http://magazine.joomla.org/topics/item/145-extending-joomla-mvc-architecture Extending Joomla's MVC architecture]
 
 
== Articles and Tutorials ==
 
 
=== General ===
 
* [[Setting up your workstation for joomla development]] A disambiguation article setting up your workstation in several ways (PHP, Joomla!, extension development; Web server, Editor / IDE, Version Control, Building, ..).
 
* [[Joomla Beginning Developer Course]]
 
* [[Secure coding guidelines]]
 
* [[Development Best Practices]]
 
 
=== Migration ===
 
* [[Adapting a Joomla 1.0 extension to Joomla 1.5]]
 
* [[Adapting a Joomla 1.5 extension to Joomla 1.6]]
 
* [[Version 1.6 Developer Notes]]
 
* [[Making single installation packages for Joomla! 1.5, 1.6 and 1.7]]
 
 
=== Components ===
 
{{RecReading|Component|dev|topic}}
 
=== Modules ===
 
{{RecReading|Module|dev|topic}}
 
=== Plugins ===
 
{{RecReading|Plugin|dev|topic}}
 
=== Templates ===
 
{{RecReading|Template|dev|topic}}
 
===Parameters===
 
* [[Standard parameter types]]
 
* [[Custom parameter types]]
 
* [[Component parameters]]
 
* [[Creating custom template parameter types]]
 
* See also: [[:Category:Parameters]]
 
* See also: [[:Form field]]
 
 
=== Core extensions summary ===
 
* [[Banner component]] {{JVer|1.6}}
 
 
=== Security ===
 
* [[How to add CSRF anti-spoofing to forms]]
 
* [http://developer.joomla.org/tutorials/181-preventing-sql-injections.html Preventing SQL Injections]
 
* [[Securing Joomla extensions]]
 
 
=== Database ===
 
* [[Accessing the database using JDatabase]]
 
* [[Using the JTable class]]
 
* [[Connecting to an external database]]
 
* [[Using nested sets]]
 
 
=== Localisation ===
 
* [http://community.joomla.org/magazine/article/508-developer-localization-advancements-in-joomla-15.html Localization Advancements in Joomla! 1.5]
 
* [[Adding multi-language support]]
 
* [[Language Guidelines for 3rd Party Extensions]]
 
* [[Adding Joomfish functionality to custom components]]
 
* [[Specification of language files]] {{JVer|1.6}}
 
* [[Language Metadata]] {{JVer|1.6}}
 
* [[Loading extra language files]]
 
 
=== Access Control ===
 
* [[Access Control System In Joomla 1.6]] {{JVer|1.6}}
 
 
=== Miscellaneous ===
 
* [[Retrieving request data using JInput]] {{JVer|1.6}} and newer
 
* [[Retrieving data from GET and POST requests]] {{JVer|1.5}}
 
* [[How to use the filesystem package]]
 
* [[Application execution order]]
 
* [[Accessing the current user object]]
 
* [[Adding JavaScript and CSS to the page]]
 
* [[Constants]] used in the Joomla [[Framework]].
 
* [[Client-side form validation]]
 
* [[How to create a custom button]]
 
* [[How to create a stand-alone application using the Joomla! Framework]]
 
* [[How to use user state variables]]
 
* [[Adding template overridable images in your extension]]
 
* [[Cache]] and [[Using caching to speed up your code]]
 
* [[Using the installer API to support package installation]]
 
* [[How to add tooltips to your Joomla! website]]
 
* [[Display error messages and notices]].
 
* [[Errors]]
 
* [[Creating a custom form field type]] {{JVer|1.6}}
 
 
== Contributing to Joomla Development ==
 
The development of Joomla itself is carried out by the [[Development Working Group]] and third party developers.
 
 
* [[Production Working Groups]]
 
* [[Participating in the community]]: a brief description of how people can get involved.
 
* [[Developer Email lists]]: a list of email lists for developers, including third party developers.
 
* [[Coding style and standards]] (To be reviewed).
 
* [[Setting up your workstation for Joomla! development]].  A step-by-step guide to installing the Eclipse IDE on your local workstation for Joomla! development.
 
* [http://docs.joomla.org/Setting_up_your_workstation_for_Joomla!_development_--_Part_2#Check_Out_Joomla.21_Source_Code How to check out SVN Code]
 
* [[Patch submission guidelines]].
 
* [[Filing bugs and issues]].
 
* [[How to release a distribution tarball]].
 
* [[How to create a continuous integration]].
 
 
== Contributing to Joomla Developer Documentation ==
 
The development of Joomla developer documentation is carried out primarily by the [[Documentation Working Group]].  There are currently two sub-projects of interest to developers:
 
* [[Joomla! 1.5 Template Tutorials Project]]
 
* [[API Reference Project]]
 
 
When creating a new page, ensure you place the following marker at the bottom of the page so it is included in the category list:
 
 
<pre><nowiki>[[Category:Development]]
 
</nowiki></pre>
 
 
If you locate other articles you think are relevant to developers, please add this marker to those pages.
 
 
=== Suggested topics ===
 
This is a short list of articles that might be written to support developers.  Please feel free to add further topic ideas.
 
 
* [[Adding configuration objects to modules and plugins]].
 
* [[Storing data in the session between page loads]].
 
* [[Suppressing output of extra HTML]].
 
* [[How to use the filter package]].
 
*: Describe how and when to use the Filter package and explain what needs to be filtered for various situations (for queries, for URLs, etc)
 
* [[How to use the registry package]]
 
* [[How to use JSimpleXML]].
 
*: How to load and store XML files and how to work with them
 
* [[How to create component feeds]] (RSS/ATOM)
 
* [[How to generate paths for client side and server side]]
 
* [[How to access information from the request]]
 
*: This focuses on using the JBrowser class to retrieve information about the features available in the user's browser.
 
* [[How to create an editor plugin]]
 
* [[What can be done with a user plugin]]
 
* [[How to work with parameters]]
 
* [[How to cloak email addresses]]
 
* [[Using the caching system in your component]]. This might be enough (for now?) -> [[Cache]]
 
* [[Extending Joomla's MVC Architecture]]
 
 
==Joomla Security Guide==
 
Developers should also be aware of security issues.
 
{{Security Guide}}
 
 
 
<div style="width:auto; margin:0; padding:8px; border:1px solid #4F91CD; background-color:#CAE1FF;">
 
<div style="width:auto; margin:0; padding:8px; border:1px solid #4F91CD; background-color:#CAE1FF;">
 
<!-- This portal was created using subst:box portal skeleton  -->
 
<!-- This portal was created using subst:box portal skeleton  -->
Line 173: Line 17:
 
{{:{{FULLPAGENAME}}/box-header-sq|Templates|{{FULLPAGENAME}}/Templates|}}
 
{{:{{FULLPAGENAME}}/box-header-sq|Templates|{{FULLPAGENAME}}/Templates|}}
 
{{:{{FULLPAGENAME}}/Templates}}
 
{{:{{FULLPAGENAME}}/Templates}}
 +
{{:{{FULLPAGENAME}}/box-footer|}}
 +
{{:{{FULLPAGENAME}}/box-header-sq|Database|{{FULLPAGENAME}}/Database|}}
 +
{{:{{FULLPAGENAME}}/Database}}
 +
{{:{{FULLPAGENAME}}/box-footer|}}
 +
{{:{{FULLPAGENAME}}/box-header-sq|Localisation|{{FULLPAGENAME}}/Localisation|}}
 +
{{:{{FULLPAGENAME}}/Localisation}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
</div>
 
</div>
Line 193: Line 43:
 
{{:{{FULLPAGENAME}}/box-header-sq|Security|{{FULLPAGENAME}}/Security|}}
 
{{:{{FULLPAGENAME}}/box-header-sq|Security|{{FULLPAGENAME}}/Security|}}
 
{{:{{FULLPAGENAME}}/Security}}
 
{{:{{FULLPAGENAME}}/Security}}
 +
{{:{{FULLPAGENAME}}/box-footer|}}
 +
{{:{{FULLPAGENAME}}/box-header-sq|Access Control|{{FULLPAGENAME}}/Access Control|}}
 +
{{:{{FULLPAGENAME}}/Access Control}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
{{:{{FULLPAGENAME}}/box-header-sq|Miscellaneous|{{FULLPAGENAME}}/Miscellaneous|}}
 
{{:{{FULLPAGENAME}}/box-header-sq|Miscellaneous|{{FULLPAGENAME}}/Miscellaneous|}}
Line 204: Line 57:
  
 
<div class="portal-column-right"> <!-- Switch to one column on narrow screens -->
 
<div class="portal-column-right"> <!-- Switch to one column on narrow screens -->
{{:{{FULLPAGENAME}}/box-header-sq|Categories|{{FULLPAGENAME}}/Categories|}}
+
{{:{{FULLPAGENAME}}/box-header-sq|Contributing to Joomla Development|{{FULLPAGENAME}}/Joomla Development contribution|}}
{{:{{FULLPAGENAME}}/Categories}}
+
{{:{{FULLPAGENAME}}/Joomla Development contribution}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
{{:{{FULLPAGENAME}}/box-header-sq|Platform Basics|{{FULLPAGENAME}}/Basics|}}
+
{{:{{FULLPAGENAME}}/box-header-sq|Contributing to Joomla Developer Documentation|{{FULLPAGENAME}}/Developer Documentation|}}
{{:{{FULLPAGENAME}}/Basics}}
+
{{:{{FULLPAGENAME}}/Developer Documentation }}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
</div>
 
</div>
Line 216: Line 69:
 
{{:{{FULLPAGENAME}}/Projects}}
 
{{:{{FULLPAGENAME}}/Projects}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
+
{{:{{FULLPAGENAME}}/box-header-sq|Joomla! Security Guide|{{FULLPAGENAME}}/Joomla! Security Guide|}}
{{:{{FULLPAGENAME}}/box-header-sq|Things to do|{{FULLPAGENAME}}/Opentask|}}
+
{{:{{FULLPAGENAME}}/Joomla! Security Guide}}
{{:{{FULLPAGENAME}}/Opentask}}
+
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
</div>
 
</div>
  
 
<div style="clear:both; width:100%">
 
<div style="clear:both; width:100%">
{{:{{FULLPAGENAME}}/box-header-sq|Documentation|{{FULLPAGENAME}}/Documentation|}}
 
{{:{{FULLPAGENAME}}/Documentation}}
 
{{:{{FULLPAGENAME}}/box-footer|}}
 
 
</div>
 
</div>
  

Revision as of 15:22, 30 August 2012

Information for Developers

The development of Joomla! itself is carried out by the Development Working Group and third party developers. This page is a starting point for developers interested in the development of components, modules, plugins and templates.

Tip-icon.png
Have an Interest in Core Contributions?

The development of Joomla itself is carried out by Production Working Groups and third party developers. For more information about Joomla! core development, how to contribute to code to core, or becoming more involved with the core code, you should go to Joomla! Code Contributors.

Resources

There are several ways of setting up your workstation in for Joomla! development. Some suggestions can be found at Setting up your workstation for Joomla development.

Next, you should familiarise yourself with Joomla! Secure coding guidelines and the short article on Development Best Practices.

Documentation on the Joomla! API can assist with becoming familiar with the foundations of the Joomla! code base.

Finally, Joomla! has many resources for developers. Our Joomla! Resources page get you pointed in the right direction if you need help and solutions.

Components

Components

There are many articles, tutorials, references and FAQs which focus on component development. If this is your first time developing a component for Joomla, you should start with the Absolute Basics of How a Component Functions. If needed, you can visualise the control flow of a component with these diagrams.

Next, you will want to read our  Joomla 2.5 Joomla 3.x MVC tutorial    Developing a Model-View-Controller Component

Once you have read the tutorial and/or tried the example component, you can focus more on the specifics of your component with additional articles. These are listed on the Component Development Portal or any of the supporting Portals for Development(Plugins, Modules or Templates).


For more articles and information, see the Component Development Portal page.

Templates

Templates

Recommended Reading

Our template development documentation contains many articles, FAQs and tutorials. A first step to developing a template is understanding how templates are executed.

Beginners

Intermediate

Historical

For more articles and information, see the Template Development Portal page.

Database

Localisation

Migration

Modules

Plugins

Plugins

Recommended Reading

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

Beginner

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

Intermediate

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

It is also advised 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

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.

For more articles and information, see the Plugin Development Portal page.

Parameters

Core extensions

Security

Access Control

Miscellaneous

Contributing to Joomla Development

Contributing to Joomla Developer Documentation

The development of Joomla developer documentation is carried out primarily by the Documentation Working Group. There is currently one sub-projects of interest to developers:

When creating a new page, ensure you place the following marker at the bottom of the page so it is included in the category list:

[[Category:Development]]

If you locate other articles you think are relevant to developers, please add this marker to those pages.

Projects

Suggested topics

This is a short list of articles that might be written to support developers. Please feel free to add further topic ideas.


Joomla! Security Guide