Difference between revisions of "Developers"
From Joomla! Documentation
m ({{inuse}}) |
m (new subpage) |
||
Line 154: | Line 154: | ||
Developers should also be aware of security issues. | Developers should also be aware of security issues. | ||
{{Security Guide}} | {{Security Guide}} | ||
+ | |||
+ | <div style="width:auto; margin:0; padding:8px; border:1px solid #4F91CD; background-color:#CAE1FF;"> | ||
+ | <!-- This portal was created using subst:box portal skeleton --> | ||
+ | |||
+ | <div style="clear:both; width:100%"> | ||
+ | |||
+ | {{:{{FULLPAGENAME}}/box-header-sq|<big>Information for {{PAGENAME}}</big>|{{FULLPAGENAME}}/Intro|}} | ||
+ | {{:{{FULLPAGENAME}}/Intro}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | </div> | ||
+ | <div style="clear:both; width:100%"> | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Resources|{{FULLPAGENAME}}/Resources|}} | ||
+ | {{:{{FULLPAGENAME}}/Resources}}<br/><br/> | ||
+ | <div class="portal-column-left"> <!-- Switch to one column on narrow screens --> | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Components|{{FULLPAGENAME}}/Components|}} | ||
+ | {{:{{FULLPAGENAME}}/Components}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Templates|{{FULLPAGENAME}}/Templates|}} | ||
+ | {{:{{FULLPAGENAME}}/Templates}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | </div> | ||
+ | <div class="portal-column-right"> <!-- Switch to one column on narrow screens --> | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Migration|{{FULLPAGENAME}}/Migration|}} | ||
+ | {{:{{FULLPAGENAME}}/Migration}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Modules|{{FULLPAGENAME}}/Modules|}} | ||
+ | {{:{{FULLPAGENAME}}/Modules}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Plugins|{{FULLPAGENAME}}/Plugins|}} | ||
+ | {{:{{FULLPAGENAME}}/Plugins}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Parameters|{{FULLPAGENAME}}/Parameters|}} | ||
+ | {{:{{FULLPAGENAME}}/Parameters}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Core extensions |{{FULLPAGENAME}}/Core extensions |}} | ||
+ | {{:{{FULLPAGENAME}}/Core extensions }} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Security|{{FULLPAGENAME}}/Security|}} | ||
+ | {{:{{FULLPAGENAME}}/Security}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Miscellaneous|{{FULLPAGENAME}}/Miscellaneous|}} | ||
+ | {{:{{FULLPAGENAME}}/Miscellaneous}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | </div> | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | </div> | ||
+ | |||
+ | <div style="clear:both; width:100%"></div> | ||
+ | |||
+ | <div class="portal-column-right"> <!-- Switch to one column on narrow screens --> | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Categories|{{FULLPAGENAME}}/Categories|}} | ||
+ | {{:{{FULLPAGENAME}}/Categories}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Platform Basics|{{FULLPAGENAME}}/Basics|}} | ||
+ | {{:{{FULLPAGENAME}}/Basics}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | </div> | ||
+ | |||
+ | <div class="portal-column-left"> <!-- Switch to one column on narrow screens --> | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Projects|{{FULLPAGENAME}}/Projects|}} | ||
+ | {{:{{FULLPAGENAME}}/Projects}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | |||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Things to do|{{FULLPAGENAME}}/Opentask|}} | ||
+ | {{:{{FULLPAGENAME}}/Opentask}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | </div> | ||
+ | |||
+ | <div style="clear:both; width:100%"> | ||
+ | {{:{{FULLPAGENAME}}/box-header-sq|Documentation|{{FULLPAGENAME}}/Documentation|}} | ||
+ | {{:{{FULLPAGENAME}}/Documentation}} | ||
+ | {{:{{FULLPAGENAME}}/box-footer|}} | ||
+ | </div> | ||
+ | |||
+ | </div><!-- top div close --> | ||
+ | __NOTOC__ __NOEDITSECTION__ | ||
+ | |||
[[Category:Development]] | [[Category:Development]] | ||
[[Category:JED]] | [[Category:JED]] | ||
[[Category:Joomla! user profiles]] | [[Category:Joomla! user profiles]] |
Revision as of 14:56, 30 August 2012
This portal page is actively undergoing a major edit for a short while.
As a courtesy, please do not edit this page while this message is displayed. The user who added this notice will be listed in the page history. This message is intended to help reduce edit conflicts; please remove it between editing sessions to allow others to edit the page.
If this page has not been edited for several hours, please remove this template, or replace it with {{underconstruction}} or {{incomplete}}.
<translate> As a developer you are tasked with altering or extending the functionality of Joomla! or one of its extensions. You will be proficient in a range of programming languages, including PHP, but may be less familiar with such things as JavaScript or CSS. If you are new to Joomla! you will need information about the Joomla! Framework API and how to use it and will probably make extensive use of best practice example code.</translate>
A complete contents list of all pages of interest to developers can be found in the development category.
Reference Material
- Joomla! Platform
- API documentation automatically generated using phpDocumentor.
- Platform Manual
- Coding Standards
- Developer Website Development policies and status
Joomla Magazine Articles
- Towards a more testable module
- Check username availability with Ajax
- Developing a Smart Search plugin
- Customising an extension's edit screen
- Integrating WebSocket to Joomla
- Customising Joomla help
- Write you own app using the Joomla Platform
- Sorting articles by recently touched date
- Using Doctrine ORM in Joomla
- Rapid development techniques - Templates within templates
- Rapid development techniques - Removing MooTools
- Rapid development techniques - Preventing code fragmentation
- 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
{{Portal:Component_Development/Intro/<translate> en</translate>}}
<translate>
Intro to Component Development</translate>
{{Portal:Component_Development/Reading list/<translate> en</translate>}}
<translate>
General Information</translate>
{{Portal:Component_Development/Information/<translate> en</translate>}}
<translate>
FAQs</translate>
{{Portal:Component_Development/FAQs/<translate> en</translate>}}
<translate>
Tutorials</translate>
{{Portal:Component_Development/Tutorials/<translate> en</translate>}}
For more information, see Component Development.
Modules
<translate> This page contains many links to selected documentation concerning Module Development for and . A good place to start is with the Recommended Reading articles below as they provide a good introductory base of knowledge to build on.</translate>
<translate>
Modules are lightweight and flexible extensions used for page rendering. These modules are often “boxes” arranged around a component on a typical page. A well-known example is the login module. Modules are assigned per menu item, so you can decide to show or hide (for example) the login module depending on which page (menu item) the user is currently on.
<translate>
Recommended Reading</translate>
{{Portal:Module_Development/Reading list/<translate> en</translate>}}
<translate>
FAQs</translate>
{{Portal:Module_Development/FAQs/<translate> en</translate>}}
<translate>
Module Development Tutorials</translate>
{{Portal:Module_Development/Tutorials/<translate> en</translate>}}
<translate>
Module Development Articles Needed</translate>
{{Portal:Module_Development_Projects/<translate> en</translate>}}
_
For more information, see Module Development.
Plugins
{{Portal:Plugin_Development/Intro/<translate> en</translate>}}
<translate>
Using Plugins</translate>
{{Portal:Plugin_Development/Using_Plugins/<translate> en</translate>}}
<translate>
Reading list</translate>
{{Portal:Plugin_Development/Reading list/<translate> en</translate>}}
<translate>
Tutorials</translate>
{{Portal:Plugin_Development/Tutorials/<translate> en</translate>}}
<translate>
Plugin Development Articles Needed</translate>
{{Portal:Plugin_Development/Projects/<translate> en</translate>}}
For more information, see Plugin Development.
Templates
{{:Portal:Template Development/Intro/<translate> en</translate>}}
<translate>
Recommended Reading</translate>
{{:Portal:Template_Development/Reading list/<translate> en</translate>}}
<translate>
FAQ</translate>
{{:Portal:Template Development/FAQs/<translate> en</translate>}}
<translate>
Template Development Tutorials</translate>
{{:Portal:Template Development/Tutorials/<translate> en</translate>}}
For more information, see Template Development.
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
Security
Database
- Accessing the database using JDatabase
- Using the JTable class
- Connecting to an external database
- Using nested sets
Localisation
- 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
- Language Metadata
- Loading extra language files
Access Control
Miscellaneous
- Retrieving request data using JInput and newer
- Retrieving data from GET and POST requests
- 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
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.
- 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:
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.
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. Template:Security Guide
<translate>
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.</translate>
<translate> 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.</translate>
<translate>
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.</translate>
<translate> Next, you should familiarise yourself with Joomla! Secure coding guidelines and the short article on Joomla! Development Best Practices.</translate>
<translate> Documentation on the Joomla! API can assist with becoming familiar with the foundations of the Joomla! code base.</translate>
<translate> 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.</translate>
Components
{{Portal:Component_Development/Intro/<translate> en</translate>}}
<translate>
Intro to Component Development</translate>
{{Portal:Component_Development/Reading list/<translate> en</translate>}}
<translate>
General Information</translate>
{{Portal:Component_Development/Information/<translate> en</translate>}}
<translate>
FAQs</translate>
{{Portal:Component_Development/FAQs/<translate> en</translate>}}
<translate>
Tutorials</translate>
{{Portal:Component_Development/Tutorials/<translate> en</translate>}}
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
- Changing the site favicon
- Using Firebug With Your Joomla Website
- Using Joomla's Default Icomoon Fonts
Intermediate
- jdoc statements
- How to cloak email addresses
- Understanding Output Overrides
- Layout Overrides in Joomla!
- Creating clickable background images using CSS
- Using Class Suffixes
List of all articles belonging to the "Migration" category
- Adapting a Joomla 1.5 extension to Joomla 2.5
- Changed parameters for template providers
- Compatibility
- How to Migrate from 3.x to 4.x
- J310-admin-extension-database-fix-en.png
- Joomla 1.5 to 4.x Step by Step Migration
- Joomla 1.5 to 4.x Step by Step Migration/de
- Joomla 1.5 to 4.x Step by Step Migration/en
- Joomla 1.5 to 4.x Step by Step Migration/fa
- Joomla 1.5 to 4.x Step by Step Migration/it
- Joomla 1.5 to 4.x Step by Step Migration/ja
- Joomla 1.5 to 4.x Step by Step Migration/sv
- Joomla 2.5 to 3.10 Step by Step Migration
- Joomla 2.5 to 3.10 Step by Step Migration/da
- Joomla 2.5 to 3.10 Step by Step Migration/en
- Joomla 2.5 to 3.10 Step by Step Migration/fa
- Joomla 2.5 to 3.10 Step by Step Migration/tr
- Joomla 2.5 to 3.10 Step by Step Migration/zh-tw
- Joomla 2.5 to 3.x Common Migration Errors
- Joomla 2.5 to 3.x Common Migration Errors/de
- Joomla 2.5 to 3.x Common Migration Errors/en
- Joomla 2.5 to 3.x Common Migration Errors/pt-br
- Joomla 3.10 Backports
- Joomla 3.10 to 4.x Common Migration Errors
- Joomla 3.10 to 4.x Common Migration Errors/de
- Joomla 3.10 to 4.x Common Migration Errors/en
- Joomla 3.10 to 4.x Common Migration Errors/es
- Joomla 3.x to 4.x Step by Step Migration
- Joomla 3.x to 4.x Step by Step Migration/es
- Joomla 4.4.x to 5.x Planning and Upgrade Step by Step
- Joomla 4.4.x to 5.x Planning and Upgrade Step by Step/en
- Joomla 4.4.x to 5.x Planning and Upgrade Step by Step/fr
- Joomla 4.4.x to 5.x Planning and Upgrade Step by Step/nl
- Joomla 4.4.x to 5.x Planning and Upgrade Step by Step/tr
- Making single installation packages for Joomla! 1.5 and 2.5 series
- Migrating a Template from Joomla 1.5 to 3.x
- Migrating a Template from Joomla 1.5 to 3.x/de
- Migrating a Template from Joomla 1.5 to 3.x/en
- Migrating a Template from Joomla 1.5 to 3.x/it
- Migrating from Joomla 1.5 to Joomla 2.5
- Migration Step by Step Self Assessment
- Migration Step by Step Self Assessment/en
- Migration Step by Step Self Assessment/et
- Migration Step by Step Self Assessment/th
- Migration Step by Step Self Assessment/zh-hant
- Planning Migration - Joomla 1.5 to 4
- Planning Migration - Joomla 1.5 to 4/en
- Planning Migration - Joomla 1.5 to 4/ja
- Planning Migration and Step by Step- Joomla 1.0 to 1.5
- Planning Migration and Step by Step- Joomla 1.0 to 1.5/en
- Planning for Migration
- Planning for Migration/de
- Planning for Migration/ja
- Planning for Migration/th
- Planning for Mini-Migration - Joomla 2.5 to 3.10
- Planning for Mini-Migration - Joomla 2.5 to 3.10/en
- Planning for Mini-Migration - Joomla 2.5 to 4.x
- Planning for Mini-Migration - Joomla 3.10.x to 4.x
- Planning for Mini-Migration - Joomla 3.10.x to 4.x/en
- Planning for Mini-Migration - Joomla 3.10.x to 4.x/fa
- Planning for Mini-Migration - Joomla 3.10.x to 4.x/it
- Planning for Mini-Migration - Joomla 3.10.x to 4.x/ru
- Planning for Mini-Migration - Joomla 3.10.x to 4.x/tr
- Potential backward compatibility issues in Joomla 1.7 and Joomla Platform 11.2
- Potential backward compatibility issues in Joomla 2.5 and Joomla Platform 11.4
- Potential backward compatibility issues in Joomla 3 and Joomla Platform 12.2
- Potential backward compatibility issues in Joomla 4
- Template Code Comparison of J1.5 and J3.x
- Template Code Comparison of J1.5 and J3.x/en
- Template Considerations During Migration
- Template Considerations During Migration/en
- Template Considerations During Migration/pt-br
- Upgrading Versions
- Upgrading Versions/en
- Upgrading Versions/fa
- Upgrading Versions/it
- Upgrading Versions/th
- Why Migrate
- Why Migrate/en
- Why Migrate/et
- Why Migrate/fa
- Why Migrate/th
{{Portal:Plugin_Development/Reading_list/<translate>
en</translate>}}
<translate>
- How to add CSRF anti-spoofing to forms
- Securing Joomla! extensions
- Why do most of the Joomla! PHP files start with defined(' JEXEC')?
- Register Globals best practices (only relevant if your Joomla Site runs on PHP 5.3 or below)</translate>
Misc
- Retrieving request data using JInput and newer
- Retrieving data from GET and POST requests
- 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.
- Create a stand-alone application using the Joomla! Framework
- How to use user state variables
- 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.
- Sharing layouts across views or extensions with JLayout
- Using JLog
- JSON Responses with JResponseJson
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.
- Using 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)
- Using the registry package
- How to load and store XML files and how to work with them
- Creating component feeds (RSS/ATOM)
- Generating paths for client side and server side
- Acessing information from the request
- This focuses on using the JBrowser class to retrieve information about the features available in the user's browser.
- Creating an editor plugin
- What can be done with a user plugin
- Cloaking email addresses
- Using the caching system in your component. This might be enough (for now?) → Cache
- Extending Joomla's MVC Architecture
- How to release a distribution tarball.
- Creating a library for your extension(s).