Portal

Difference between revisions of "Developers"

From Joomla! Documentation

m
 
(165 intermediate revisions by 30 users not shown)
Line 1: Line 1:
{{Developer profile}}
+
<noinclude><languages /></noinclude>
 +
{{Top portal heading|color=white-bkgd|icon=code|icon-color=#5091cd|size=5x|text-color=#333|title=
 +
<translate><!--T:45--> Joomla! Developers Portal</translate>}}
 +
__TOC__
 +
{{Portal:Developers/Intro/<translate><!--T:1-->
 +
en</translate>}}
 +
{{section portal heading|icon=book|title=<translate><!--T:2-->
 +
Getting Started!</translate>}}{{Portal:Developers/Resources/<translate><!--T:3-->
 +
en</translate>}}
  
A complete contents list of all pages of interest to developers can be found in the [[:Category:Development|development category]].
+
<translate>==There are four types of extensions development== <!--T:25--></translate>
 +
<br />
 +
{{section portal heading|icon=code|title=<translate><!--T:9-->
 +
Components</translate>}}
 +
{{Portal:Component_Development/Reading_list/<translate><!--T:11-->
 +
en</translate>}}{{tip|<translate><!--T:12-->
 +
See the [[S:MyLanguage/Portal:Component_Development|Component Development Portal page]].</translate>|title=<translate><!--T:13-->
 +
For more articles and information:</translate>}}
 +
<br />
 +
{{section portal heading|icon=plug|title=<translate><!--T:10-->
 +
Plugins</translate>}}{{Portal:Plugin_Development/Reading_list/<translate><!--T:14-->
 +
en</translate>}}{{tip|<translate><!--T:40-->
 +
See the [[S:MyLanguage/Portal:Plugin_Development|Plugin Development Portal page]].</translate>|title=<translate><!--T:41-->
 +
For more articles and information:</translate>}}
 +
<br />
 +
{{section portal heading|icon=cubes|title=<translate><!--T:21-->
 +
Modules</translate>}}{{Portal:Module_Development/Reading_list/<translate><!--T:22-->
 +
en</translate>}}{{tip|<translate><!--T:23-->
 +
See the [[S:MyLanguage/Portal:Module_Development|Module Development Portal page]].</translate>|title=<translate><!--T:24-->
 +
For more articles and information:</translate>}}
 +
<br />
 +
{{section portal heading|icon=desktop|title=<translate><!--T:17-->
 +
Templates</translate>}}{{Portal:Template_Development/Reading_list/<translate><!--T:18-->
 +
en</translate>}}{{tip|<translate><!--T:19-->
 +
See the [[S:MyLanguage/Portal:Template_Development|Template Development Portal page]].</translate>|title=<translate><!--T:20-->
 +
For more articles and information:</translate>}}
 +
{{-}}
  
== Reference Material ==
+
<translate>==More Development Topics== <!--T:33--></translate>
 +
<div class="large-4 column">
 +
{{section portal heading|icon=database|title=<translate><!--T:27-->
 +
Database</translate>}}{{Portal:Developers/Database/<translate><!--T:28-->
 +
en</translate>}}
 +
</div>
 +
<div class="large-4 column">
 +
{{section portal heading|icon=language|title=<translate><!--T:29-->
 +
Localisation</translate>}}{{Portal:Developers/Localisation/<translate><!--T:31-->
 +
en</translate>}}
 +
</div>
 +
<div class="large-4 column">
 +
{{section portal heading|icon=users|title=<translate><!--T:30-->
 +
ACL Topics</translate>}}{{Portal:Developers/Access Control/<translate><!--T:32-->
 +
en</translate>}}
 +
</div>
 +
{{-}}
 +
<div class="large-4 column">
 +
{{section portal heading|icon=edit|title=<translate><!--T:34-->
 +
Forms</translate>}}{{Portal:Developers/Forms/<translate><!--T:35-->
 +
en</translate>}}
 +
</div>
 +
<div class="large-4 column">
 +
{{section portal heading|icon=book|title=<translate><!--T:46--> API Guides</translate>}}
 +
<translate><!--T:47--> The Joomla API Guides provide explanations and sample code relating to the Joomla API functions, to help you understand how to use the APIs in your own extensions. [[S:MyLanguage/API Guides|Click here]] to get to the index of these guides.</translate>
 +
</div>
 +
<div class="large-4 column">
 +
{{section portal heading|icon=lock|title=<translate><!--T:36-->
 +
Security</translate>}}{{Portal:Developers/Security/<translate><!--T:37-->
 +
en</translate>}}{{tip|<translate><!--T:42-->
 +
See the [[S:MyLanguage/Security|Security Portal page]].</translate>|title=<translate><!--T:43-->
 +
For more articles and information:</translate>}}
 +
</div>
 +
{{-}}
 +
{{section portal heading|icon=user-plus|title=<translate><!--T:38-->
 +
Contributing to Documentation</translate>}}
 +
{{Portal:Developers/Developer_Documentation/<translate><!--T:44-->
 +
en</translate>}}
  
* [[Framework|Joomla Framework]].
+
__NOTOC__
* [http://api.joomla.org API documentation] automatically generated using phpDocumentor.
+
<noinclude>
 
+
[[Category:Development{{#translation:}}]]
== Articles and Tutorials ==
+
[[Category:Joomla! user profiles{{#translation:}}]]
 
+
</noinclude>
=== General ===
 
* [[Setting up your workstation for Joomla! development]].  A step-by-step guide to installing the Eclipse IDE on your local workstation for Joomla! development.
 
* [[Setting up your workstation for extension development]] A guide to Joomla Extension development
 
* [http://community.joomla.org/blogs/community/828-webinar-using-eclipse-for-joomla-development.html Using Eclipse for Joomla! Development] Video webinar demonstrating overview of Eclipse features for Joomla! development
 
* [[Do not use die to debug]]
 
* [[How to debug your code]]
 
* [[Tutorial:Adapting Joomla 1.0 extensions to Joomla 1.5]]
 
* [[Version 1.6 Developer Notes]] {{JVer|1.6}}
 
* [[Tutorial:Joomla Beginning Developer Course]]
 
 
 
=== Components ===
 
====Developing a Model-View-Controller (MVC) Component {{JVer|1.5}}====
 
* [[Developing a Model-View-Controller Component - Part 1]]
 
* [[Developing a Model-View-Controller Component - Part 2 - Adding a Model]]
 
* [[Developing a Model-View-Controller Component - Part 3 - Using the Database]]
 
* [[Developing a Model-View-Controller Component - Part 4 - Creating an Administrator Interface]]
 
* [[Developing a Model-View-Controller Component - Part 5 - Basic Backend Framework]]
 
* [[Developing a Model-View-Controller Component - Part 6 - Adding Backend Actions]]
 
 
 
====Developing a Model-View-Controller (MVC) Component {{JVer|1.6}}====
 
* [[Developing a Model-View-Controller (MVC) Component for Joomla!1.6|Introduction]]
 
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!1.6 - Contents}}
 
 
 
====Other component topics====
 
* [[File Structure and Naming Conventions]]
 
* [[Component parameters]]
 
* [[Components:xml installfile]].  An example component XML installation file.
 
* [[How to use the JPane classes in a component]]
 
* [[How to use the editor in a component]]
 
* [[Supporting plugins in your component]]
 
* [[Tutorial:Adding Javascript moo.fx to your component WIP]]
 
* [[Creating a toolbar for your component]]
 
* [[Adding view layout configuration parameters]]
 
* [[How to implement XML-RPC in a component]]
 
* [[Using JPagination in your component]]
 
* [[Adding sortable columns to a table in a component]]
 
* [[Using multiple models in an MVC component]]
 
* [[Ajax using MooTools]]
 
 
 
=== Modules ===
 
* [[Tutorial:Creating a Hello World Module for Joomla 1.5]]
 
* [[How to create a module]]
 
 
 
=== Plugins ===
 
* [[Plugin Developer Overview]]
 
* [[Tutorial:Plugins]]
 
* [http://developer.joomla.org/tutorials/184-how-to-create-a-joomla-plugin.html How to create a Joomla! Plugin]
 
* [[How to create a content plugin]]
 
* [[How to create a search plugin]]
 
* [[Supporting plugins in your component]]
 
* [[Tutorial:Creating an Authentication Plugin for Joomla 1.5]]
 
* [[Tutorial:Using plugins in your own extension]]
 
* [[Refactoring Plugins]] {{JVer|1.6}}
 
 
 
=== Templates ===
 
* [[Understanding Output Overrides]]
 
* [http://developer.joomla.org/tutorials/165-understanding-output-overrides-in-joomla.html Understanding Output Overrides in Joomla! 1.5]
 
* [[Creating custom template parameter types]]
 
* [[How are templates executed?]]
 
* [[How to determine if the user is viewing the front page]]
 
* [[Tutorial:Template parameters]]
 
 
 
===Parameters===
 
* [[Standard parameter types]]
 
* [[Custom parameter types]]
 
* [[Component parameters]]
 
* [[Creating custom template parameter types]]
 
See also: [[:Category:Parameters]]
 
 
 
=== 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]
 
* [[Tutorial:How to make your Joomla addon more secure WIP]]
 
 
 
=== Database ===
 
* [[How to use the database classes in your script]]
 
* [[How to use the JTable class]]
 
* [[How to connect to an external database]]
 
 
 
=== 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]]
 
* [[Adding Joomfish functionality to custom components]]
 
* [[Specification of language files]] {{JVer|1.6}}
 
* [[Language Metadata]] {{JVer|1.6}}
 
 
 
=== Miscellaneous ===
 
* [[How to use the filesystem package]]
 
* [[How to use the editor in a component]]
 
* [[Adding AJAX to your component]].
 
* [[How to send email from components]]
 
* [[How to use the JToolBar class in the frontend]]
 
* [[Routing]]
 
* [[Joomla Routes and SEF]]
 
* [[API Execution Order]]
 
* [[Accessing the current user object]]
 
* [[Adding JavaScript and CSS to the page]]
 
* [[Constants]] used in the Joomla [[Framework]].
 
* [[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]]
 
* [[Retrieving data from GET and POST requests]]
 
* [[Using caching to speed up your code]]
 
* [[Using a custom image in the menu bar title]]
 
* [[Using the installer API to support package installation]]
 
* [[Tutorial:How to add tooltips to your Joomla! website]]
 
* [[Xml-rpc|XML-RPC]]
 
* [[How to add breadcrumbs]]
 
* [[Creating a file uploader in your component]].
 
* [[Display error messages and notices]].
 
 
 
== Contributing to Joomla Development ==
 
The development of Joomla itself is carried out by the [[Development Working Group]] and third party developers.
 
 
 
* [[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]].
 
 
 
== 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 create PDF views]]
 
* [[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]].
 
 
 
==Joomla Security Guide==
 
Developers should also be aware of security issues.
 
{{Security Guide}}
 
[[Category:Development]]
 

Latest revision as of 16:27, 18 April 2020

Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Nederlands • ‎Türkçe • ‎eesti • ‎español • ‎français • ‎italiano • ‎português • ‎português do Brasil • ‎русский • ‎українська • ‎فارسی • ‎বাংলা • ‎ไทย • ‎中文(中国大陆)‎ • ‎中文(台灣)‎
Joomla! Developers Portal

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

Have an Interest in Core Contributions?

The development of Joomla itself is carried out by Production Department 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.


Getting Started!

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 Joomla! 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 will get you pointed in the right direction if you need help and solutions.


There are four types of extensions development[edit]


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 3.x MVC tutorial    Developing a Model-View-Controller Component. Remember to familiarise yourself with Joomla! Secure coding guidelines and Development Best Practices.

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.


Plugins

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.

For more articles and information:

See the Plugin Development Portal page.


Modules


For more articles and information:

See the Module Development Portal page.


Templates

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

Beginners[edit]

Intermediate[edit]

For more articles and information:

See the Template Development Portal page.

More Development Topics[edit]

API Guides

The Joomla API Guides provide explanations and sample code relating to the Joomla API functions, to help you understand how to use the APIs in your own extensions. Click here to get to the index of these guides.

Contributing to 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.