Portal

Difference between revisions of "Developers"

From Joomla! Documentation

m
 
(227 intermediate revisions by 51 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>}}
  
* Developer guidelines.
+
<translate>==There are four types of extensions development== <!--T:25--></translate>
* [[Participating in the community]]: a brief description of how people can get involved.
+
<br />
* [[Coding style and standards]].
+
{{section portal heading|icon=code|title=<translate><!--T:9-->
* Secure coding guidelines.
+
Components</translate>}}
* Error message conventions.
+
{{Portal:Component_Development/Reading_list/<translate><!--T:11-->
* Exception handling.
+
en</translate>}}{{tip|<translate><!--T:12-->
* [[Patch submission guidelines]].
+
See the [[S:MyLanguage/Portal:Component_Development|Component Development Portal page]].</translate>|title=<translate><!--T:13-->
* [[Filing bugs and issues]].
+
For more articles and information:</translate>}}
* [[How to release a distribution tarball]].
+
<br />
* Release numbering, compatibility and deprecation.
+
{{section portal heading|icon=plug|title=<translate><!--T:10-->
* [[Localisation]] (L18N): an explanation of how localisation is implemented in Joomla! 1.5 and how to use it.
+
Plugins</translate>}}{{Portal:Plugin_Development/Reading_list/<translate><!--T:14-->
* [[Routing]]: how it works and how to use it
+
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>}}
 +
{{-}}
  
* Complete/update/review the wiki API reference (assumes this has been moved from DocuWiki to MediaWiki).
+
<translate>==More Development Topics== <!--T:33--></translate>
* Update developer tutorials and how-to's currently on dev.joomla.org
+
<div class="large-4 column">
** Review all material under the tutorials heading at http://dev.joomla.org/component/option,com_jd-wiki/Itemid,32/
+
{{section portal heading|icon=database|title=<translate><!--T:27-->
** Recommend material to be migrated over to docs.joomla.org
+
Database</translate>}}{{Portal:Developers/Database/<translate><!--T:28-->
** Update material that is to be migrated over to docs.joomla.org
+
en</translate>}}
* [[How to debug your code]].
+
</div>
** Write a tutorial giving debugging tips for new developers.  Perhaps list different kinds of problems code might have and suggested approaches to locating the problem and fixing it.
+
<div class="large-4 column">
* [[Using the core parameter types]] (To be reviewed)
+
{{section portal heading|icon=language|title=<translate><!--T:29-->
* [[Creating custom XML parameter types]].
+
Localisation</translate>}}{{Portal:Developers/Localisation/<translate><!--T:31-->
** Write a document detailing the steps to creating a custom XML Parameter type.  Explain how these types can be used in templates, modules, components and plugins.
+
en</translate>}}
* [[Creating component preferences]] (ready for review).
+
</div>
** Write a document describing how to create an xml file for modifying component preferences and how to add a Parameters button to an administrator toolbar.
+
<div class="large-4 column">
* [[Adding JavaScript and CSS to the page]].
+
{{section portal heading|icon=users|title=<translate><!--T:30-->
** Write a document describing how to add JavaScript and CSS to the page.  Explain how to decide whether JavaScript should go in the head block or in the page itself and how to insert the JavaScript.
+
ACL Topics</translate>}}{{Portal:Developers/Access Control/<translate><!--T:32-->
* [[Accessing the current user object]].
+
en</translate>}}
** Write a document describing how to access the current user object and also indicate what type of information can be found in the object, and how that data should be retrieved and/or set.
+
</div>
* [[Adding AJAX to your component]].
+
{{-}}
** Write a document describing how to add AJAX to an MVC component.  If desired, use the MVC Hello World tutorial as a base.  Describe where various elements should go in the MVC design pattern.  Also describe how to implement MVC in a module (these need supporting components to do AJAX).
+
<div class="large-4 column">
* [[Using JPagination in your component]] (frontend and backend).
+
{{section portal heading|icon=edit|title=<translate><!--T:34-->
** Describe the steps necessary to add pagination to a component using the JPagination class.  Describe the differences between frontend and backend.
+
Forms</translate>}}{{Portal:Developers/Forms/<translate><!--T:35-->
* [[Creating a toolbar for your component]].
+
en</translate>}}
* [[Adding configuration objects to modules and plugins]].
+
</div>
* [[Storing data in the session between page loads]].
+
<div class="large-4 column">
* [[Using the caching system in your component]].
+
{{section portal heading|icon=book|title=<translate><!--T:46--> API Guides</translate>}}
* [[Creating a file uploader in your component]].
+
<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>
* [[Suppressing output of extra HTML]].
+
</div>
* [[Supporting plugins in your component]].
+
<div class="large-4 column">
** Explain how to add triggers so that your component can fire custom events.
+
{{section portal heading|icon=lock|title=<translate><!--T:36-->
* [[Adding multi-language support]].
+
Security</translate>}}{{Portal:Developers/Security/<translate><!--T:37-->
* [[Retrieving data from GET and POST requests]] - the Joomla! way.
+
en</translate>}}{{tip|<translate><!--T:42-->
* [[Adding view layout configuration parameters]].
+
See the [[S:MyLanguage/Security|Security Portal page]].</translate>|title=<translate><!--T:43-->
** Explain how to create an XML file that will allow users to configure views.
+
For more articles and information:</translate>}}
* [[Using the installer API to support package installation]].
+
</div>
** Explain how to use the JInstaller API to install add-ons to components
+
{{-}}
* [[How to implement XML-RPC in a component]]
+
{{section portal heading|icon=user-plus|title=<translate><!--T:38-->
** There are two ways to do this:
+
Contributing to Documentation</translate>}}
*** Implement it using an XML-RPC plugin
+
{{Portal:Developers/Developer_Documentation/<translate><!--T:44-->
*** Implement it in the component itself using raw views
+
en</translate>}}
* [[How to use the filesystem package]]
+
 
* [[How to use the filter package]]
+
__NOTOC__
** Describe how and when to use the Filter package and explain what needs to be filtered for various situations (for queries, for URLs, etc)
+
<noinclude>
* [[How to use the registry package]]
+
[[Category:Development{{#translation:}}]]
* [[How to use JSimpleXML]]
+
[[Category:Joomla! user profiles{{#translation:}}]]
** How to load and store XML files and how to work with them
+
</noinclude>
* [[How to use JDate]]
 
** What JDate does and how to use it...
 
* [[How to add CSRF anti-spoofing to forms]]
 
** How to use JHTML::_( 'form.token' ) and token checking to secure components
 
* [[How to add breadcrumbs]]
 
* [[How to use the JTable class]]
 
* [[How to create component feeds]] (RSS/ATOM)
 
* [[How to create PDF views]]
 
* [[How to send email from components]]
 
* [[What's available in the JFactory class]]
 
* [[How to generate paths for client side and server side]]
 
* How to access information from the request/browser
 
** This focuses on using the JBrowser class to retrieve information about the features available in the user's browser.
 
* [[How to create a search plugin]] (To be reviewed)
 
* [[How to create a content plugin]] (To be reviewed)
 
* [[How to create an editor plugin]]
 
* [[How to create a system plugin]]
 
* [[What can be done with a user plugin]]
 
* [[How to create a module]]
 
* [[How to create a stand-alone application using the Joomla! Framework]]
 
* [[How to work with parameters]]
 
* [[How to use the JToolBar class in the frontend]]
 
* [[How to create a custom button]]
 
* [[How to use the editor in a component]]
 
* [[How to use the JPane classes in a component]]
 
* [[How to cloak email addresses]]
 

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.