<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ddorothy</id>
	<title>Joomla! Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ddorothy"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Ddorothy"/>
	<updated>2026-08-12T01:06:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Search_Engine_Friendly_URLs&amp;diff=10540</id>
		<title>Search Engine Friendly URLs</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Search_Engine_Friendly_URLs&amp;diff=10540"/>
		<updated>2008-09-05T13:42:28Z</updated>

		<summary type="html">&lt;p&gt;Ddorothy: Joomla Routes and SeF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Joomla Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Joomla routes are created by the JRouter class.  This class looks in the component root of the component specified in the &amp;quot;option&amp;quot; portion of the query string and includes the reouter.php file in that component&#039;s root directory.  It then calls one of two functions: one for creating the SEF link and one for interpreting the SEF link.&lt;br /&gt;
&lt;br /&gt;
The JRouter class is overridden by the Joomla CMS in /includes/router.php.  In this file the build and parse functions are overridden to properly build and parse the URLs for the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
com_component/router.php&lt;br /&gt;
&lt;br /&gt;
The router.php file should contain the following two functions:&lt;br /&gt;
* ContentBuildRoute - this builds the SEF url&lt;br /&gt;
** Parameters&lt;br /&gt;
*** $query - this is a named array containing the querystring variables&lt;br /&gt;
** Returns: an array of segments where each segment is separated by a &#039;/&#039; when later combined to create the actual link (the items in the array should not contain &#039;/&#039; characters)&lt;br /&gt;
* ContentParseRoute - this interprets an SEF url&lt;br /&gt;
** Parameters&lt;br /&gt;
*** $segments - this is an array that contains the segments of the url requested.&lt;br /&gt;
** Returns: a name =&amp;gt; value array of the querystring variables that the link maps to&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The SEF Plugin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Joomla System SEF plugin inherits JPlugin and overrides the onAfterRender() function.  In this function the body of the response that will be sent to the browser is retrieved using JResponse::getBody().  The body of the response is then searched for links containing &amp;quot;/index.php...&amp;quot; and replaces them with a correct SEF url by calling JRoute::_(url).&lt;br /&gt;
&lt;br /&gt;
JRoute builds SEF URLs by instantiating a JRouter object and requesting that it build the correct link from the passed in URL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Handling SEF URLs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default the SEF URLs are handled by the the JRouterSite object (from /includes/router.php) and is called by a call to JApplication::route() in index.php.  This call is made on the $mainframe variable which is actually an instance of JSite (from /includes/application.php).&lt;br /&gt;
&lt;br /&gt;
JApplication::route() has a non-destructive result on the $_GET array.  By this I mean that JApplication::route() sets variables in $_GET by calling JRequest::set() with the overwrite flag set to false.  Thus if a variable name is returned from JRouter::route() that is already in $_GET then it will not put that value into $_GET.  This allows for custom routing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Routing&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Joomla allows you to create your own routing mechanism.  In order to create this mechanism you must have a plugin that overrides the JPlugin::onAfterInitialise() function.  This function then parses the URL and creates the needed variables in $_GET before the standard Joomla routing is done.&lt;/div&gt;</summary>
		<author><name>Ddorothy</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Portal:Developers&amp;diff=10539</id>
		<title>Portal:Developers</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Portal:Developers&amp;diff=10539"/>
		<updated>2008-09-05T13:42:06Z</updated>

		<summary type="html">&lt;p&gt;Ddorothy: /* Cookie Jar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Developer profile}}&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
* [[Participating in the community]]: a brief description of how people can get involved.&lt;br /&gt;
* [[Setting up your workstation for Joomla! development]]: a step-by-step guide for installing the Eclipse IDE on your local workstation for Joomla! development&lt;br /&gt;
* [[Coding style and standards]] (To be reviewed).&lt;br /&gt;
* [[Patch submission guidelines]].&lt;br /&gt;
* [[Filing bugs and issues]].&lt;br /&gt;
* [[How to release a distribution tarball]].&lt;br /&gt;
&lt;br /&gt;
== Reference Pages ==&lt;br /&gt;
&lt;br /&gt;
Peruse all pages in the [[:Category:Development]] category.&lt;br /&gt;
&lt;br /&gt;
When creating a new page, ensure you place the following marker at the top of the page so it is included in the category list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Development]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you locate other articles you thing that are relevant to developer, please add this marker to those pages.&lt;br /&gt;
&lt;br /&gt;
== Articles and Tutorials on developer.joomla.org ==&lt;br /&gt;
&lt;br /&gt;
[http://community.joomla.org/magazine/article/508-developer-localization-advancements-in-joomla-15.html Localization Advancements in Joomla! 1.5]&lt;br /&gt;
&lt;br /&gt;
[http://developer.joomla.org/tutorials/165-understanding-output-overrides-in-joomla.html Understanding Output Overrides in Joomla! 1.5]&lt;br /&gt;
&lt;br /&gt;
[http://developer.joomla.org/tutorials/181-preventing-sql-injections.html Preventing SQL Injections]&lt;br /&gt;
&lt;br /&gt;
[http://developer.joomla.org/tutorials/184-how-to-create-a-joomla-plugin.html How to create a Joomla! Plugin]&lt;br /&gt;
&lt;br /&gt;
[http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1 Developing a Model-View-Controller Component - Part 1]&lt;br /&gt;
&lt;br /&gt;
[http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_2_-_Adding_a_Model Developing a Model-View-Controller Component - Part 2 - Adding a Model]&lt;br /&gt;
&lt;br /&gt;
[http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_3_-_Using_the_Database Developing a Model-View-Controller Component - Part 3 - Using the Database]&lt;br /&gt;
&lt;br /&gt;
[http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_4_-_Creating_an_Administrator_Interface Developing a Model-View-Controller Component - Part 4 - Creating an Administrator Interface]&lt;br /&gt;
&lt;br /&gt;
== Cookie Jar ==&lt;br /&gt;
&lt;br /&gt;
Articles that need to be written.&lt;br /&gt;
&lt;br /&gt;
* Developer guidelines.&lt;br /&gt;
* Secure coding guidelines.&lt;br /&gt;
* Error message conventions.&lt;br /&gt;
* Exception handling.&lt;br /&gt;
* Release numbering, compatibility and deprecation.&lt;br /&gt;
* Complete/update/review the wiki API reference (assumes this has been moved from DocuWiki to MediaWiki).&lt;br /&gt;
* Update developer tutorials and how-to&#039;s currently on dev.joomla.org&lt;br /&gt;
** Review all material under the tutorials heading at http://dev.joomla.org/component/option,com_jd-wiki/Itemid,32/&lt;br /&gt;
** Recommend material to be migrated over to docs.joomla.org&lt;br /&gt;
** Update material that is to be migrated over to docs.joomla.org&lt;br /&gt;
* [[Adding AJAX to your component]].&lt;br /&gt;
** 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).&lt;br /&gt;
* [[Creating a toolbar for your component]].&lt;br /&gt;
* [[Adding configuration objects to modules and plugins]].&lt;br /&gt;
* [[Storing data in the session between page loads]].&lt;br /&gt;
* [[Using the caching system in your component]].&lt;br /&gt;
* [[Creating a file uploader in your component]].&lt;br /&gt;
* [[Suppressing output of extra HTML]].&lt;br /&gt;
* [[Adding view layout configuration parameters]].&lt;br /&gt;
** Explain how to create an XML file that will allow users to configure views.&lt;br /&gt;
* [[How to implement XML-RPC in a component]]&lt;br /&gt;
** There are two ways to do this:&lt;br /&gt;
*** Implement it using an XML-RPC plugin&lt;br /&gt;
*** Implement it in the component itself using raw views&lt;br /&gt;
* [[How to use the filesystem package]]&lt;br /&gt;
* [[How to use the filter package]]&lt;br /&gt;
** Describe how and when to use the Filter package and explain what needs to be filtered for various situations (for queries, for URLs, etc)&lt;br /&gt;
* [[How to use the registry package]]&lt;br /&gt;
* [[How to use JSimpleXML]]&lt;br /&gt;
** How to load and store XML files and how to work with them&lt;br /&gt;
* [[How to add breadcrumbs]]&lt;br /&gt;
* [[How to create component feeds]] (RSS/ATOM)&lt;br /&gt;
* [[How to create PDF views]]&lt;br /&gt;
* [[How to send email from components]]&lt;br /&gt;
* [[What&#039;s available in the JFactory class]]&lt;br /&gt;
* [[How to generate paths for client side and server side]]&lt;br /&gt;
* How to access information from the request/browser&lt;br /&gt;
** This focuses on using the JBrowser class to retrieve information about the features available in the user&#039;s browser.&lt;br /&gt;
* [[How to create an editor plugin]]&lt;br /&gt;
* [[What can be done with a user plugin]]&lt;br /&gt;
* [[How to work with parameters]]&lt;br /&gt;
* [[How to use the JToolBar class in the frontend]]&lt;br /&gt;
* [[How to use the editor in a component]]&lt;br /&gt;
* [[How to cloak email addresses]]&lt;br /&gt;
* [[Joomla Routes and SEF]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Ddorothy</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_Routes_%26_SEF&amp;diff=10538</id>
		<title>Joomla Routes &amp; SEF</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_Routes_%26_SEF&amp;diff=10538"/>
		<updated>2008-09-05T13:40:03Z</updated>

		<summary type="html">&lt;p&gt;Ddorothy: Joomla Routes &amp;amp; SEF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Joomla Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Joomla routes are created by the JRouter class.  This class looks in the component root of the component specified in the &amp;quot;option&amp;quot; portion of the query string and includes the reouter.php file in that component&#039;s root directory.  It then calls one of two functions: one for creating the SEF link and one for interpreting the SEF link.&lt;br /&gt;
&lt;br /&gt;
The JRouter class is overridden by the Joomla CMS in /includes/router.php.  In this file the build and parse functions are overridden to properly build and parse the URLs for the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
com_component/router.php&lt;br /&gt;
&lt;br /&gt;
The router.php file should contain the following two functions:&lt;br /&gt;
* ContentBuildRoute - this builds the SEF url&lt;br /&gt;
** Parameters&lt;br /&gt;
*** $query - this is a named array containing the querystring variables&lt;br /&gt;
** Returns: an array of segments where each segment is separated by a &#039;/&#039; when later combined to create the actual link (the items in the array should not contain &#039;/&#039; characters)&lt;br /&gt;
* ContentParseRoute - this interprets an SEF url&lt;br /&gt;
** Parameters&lt;br /&gt;
*** $segments - this is an array that contains the segments of the url requested.&lt;br /&gt;
** Returns: a name =&amp;gt; value array of the querystring variables that the link maps to&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The SEF Plugin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Joomla System SEF plugin inherits JPlugin and overrides the onAfterRender() function.  In this function the body of the response that will be sent to the browser is retrieved using JResponse::getBody().  The body of the response is then searched for links containing &amp;quot;/index.php...&amp;quot; and replaces them with a correct SEF url by calling JRoute::_(url).&lt;br /&gt;
&lt;br /&gt;
JRoute builds SEF URLs by instantiating a JRouter object and requesting that it build the correct link from the passed in URL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Handling SEF URLs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default the SEF URLs are handled by the the JRouterSite object (from /includes/router.php) and is called by a call to JApplication::route() in index.php.  This call is made on the $mainframe variable which is actually an instance of JSite (from /includes/application.php).&lt;br /&gt;
&lt;br /&gt;
JApplication::route() has a non-destructive result on the $_GET array.  By this I mean that JApplication::route() sets variables in $_GET by calling JRequest::set() with the overwrite flag set to false.  Thus if a variable name is returned from JRouter::route() that is already in $_GET then it will not put that value into $_GET.  This allows for custom routing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Routing&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Joomla allows you to create your own routing mechanism.  In order to create this mechanism you must have a plugin that overrides the JPlugin::onAfterInitialise() function.  This function then parses the URL and creates the needed variables in $_GET before the standard Joomla routing is done.&lt;/div&gt;</summary>
		<author><name>Ddorothy</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Portal:Developers&amp;diff=10537</id>
		<title>Portal:Developers</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Portal:Developers&amp;diff=10537"/>
		<updated>2008-09-05T13:35:20Z</updated>

		<summary type="html">&lt;p&gt;Ddorothy: /* Cookie Jar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Developer profile}}&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
* [[Participating in the community]]: a brief description of how people can get involved.&lt;br /&gt;
* [[Setting up your workstation for Joomla! development]]: a step-by-step guide for installing the Eclipse IDE on your local workstation for Joomla! development&lt;br /&gt;
* [[Coding style and standards]] (To be reviewed).&lt;br /&gt;
* [[Patch submission guidelines]].&lt;br /&gt;
* [[Filing bugs and issues]].&lt;br /&gt;
* [[How to release a distribution tarball]].&lt;br /&gt;
&lt;br /&gt;
== Reference Pages ==&lt;br /&gt;
&lt;br /&gt;
Peruse all pages in the [[:Category:Development]] category.&lt;br /&gt;
&lt;br /&gt;
When creating a new page, ensure you place the following marker at the top of the page so it is included in the category list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Development]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you locate other articles you thing that are relevant to developer, please add this marker to those pages.&lt;br /&gt;
&lt;br /&gt;
== Articles and Tutorials on developer.joomla.org ==&lt;br /&gt;
&lt;br /&gt;
[http://community.joomla.org/magazine/article/508-developer-localization-advancements-in-joomla-15.html Localization Advancements in Joomla! 1.5]&lt;br /&gt;
&lt;br /&gt;
[http://developer.joomla.org/tutorials/165-understanding-output-overrides-in-joomla.html Understanding Output Overrides in Joomla! 1.5]&lt;br /&gt;
&lt;br /&gt;
[http://developer.joomla.org/tutorials/181-preventing-sql-injections.html Preventing SQL Injections]&lt;br /&gt;
&lt;br /&gt;
[http://developer.joomla.org/tutorials/184-how-to-create-a-joomla-plugin.html How to create a Joomla! Plugin]&lt;br /&gt;
&lt;br /&gt;
[http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1 Developing a Model-View-Controller Component - Part 1]&lt;br /&gt;
&lt;br /&gt;
[http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_2_-_Adding_a_Model Developing a Model-View-Controller Component - Part 2 - Adding a Model]&lt;br /&gt;
&lt;br /&gt;
[http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_3_-_Using_the_Database Developing a Model-View-Controller Component - Part 3 - Using the Database]&lt;br /&gt;
&lt;br /&gt;
[http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_4_-_Creating_an_Administrator_Interface Developing a Model-View-Controller Component - Part 4 - Creating an Administrator Interface]&lt;br /&gt;
&lt;br /&gt;
== Cookie Jar ==&lt;br /&gt;
&lt;br /&gt;
Articles that need to be written.&lt;br /&gt;
&lt;br /&gt;
* Developer guidelines.&lt;br /&gt;
* Secure coding guidelines.&lt;br /&gt;
* Error message conventions.&lt;br /&gt;
* Exception handling.&lt;br /&gt;
* Release numbering, compatibility and deprecation.&lt;br /&gt;
* Complete/update/review the wiki API reference (assumes this has been moved from DocuWiki to MediaWiki).&lt;br /&gt;
* Update developer tutorials and how-to&#039;s currently on dev.joomla.org&lt;br /&gt;
** Review all material under the tutorials heading at http://dev.joomla.org/component/option,com_jd-wiki/Itemid,32/&lt;br /&gt;
** Recommend material to be migrated over to docs.joomla.org&lt;br /&gt;
** Update material that is to be migrated over to docs.joomla.org&lt;br /&gt;
* [[Adding AJAX to your component]].&lt;br /&gt;
** 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).&lt;br /&gt;
* [[Creating a toolbar for your component]].&lt;br /&gt;
* [[Adding configuration objects to modules and plugins]].&lt;br /&gt;
* [[Storing data in the session between page loads]].&lt;br /&gt;
* [[Using the caching system in your component]].&lt;br /&gt;
* [[Creating a file uploader in your component]].&lt;br /&gt;
* [[Suppressing output of extra HTML]].&lt;br /&gt;
* [[Adding view layout configuration parameters]].&lt;br /&gt;
** Explain how to create an XML file that will allow users to configure views.&lt;br /&gt;
* [[How to implement XML-RPC in a component]]&lt;br /&gt;
** There are two ways to do this:&lt;br /&gt;
*** Implement it using an XML-RPC plugin&lt;br /&gt;
*** Implement it in the component itself using raw views&lt;br /&gt;
* [[How to use the filesystem package]]&lt;br /&gt;
* [[How to use the filter package]]&lt;br /&gt;
** Describe how and when to use the Filter package and explain what needs to be filtered for various situations (for queries, for URLs, etc)&lt;br /&gt;
* [[How to use the registry package]]&lt;br /&gt;
* [[How to use JSimpleXML]]&lt;br /&gt;
** How to load and store XML files and how to work with them&lt;br /&gt;
* [[How to add breadcrumbs]]&lt;br /&gt;
* [[How to create component feeds]] (RSS/ATOM)&lt;br /&gt;
* [[How to create PDF views]]&lt;br /&gt;
* [[How to send email from components]]&lt;br /&gt;
* [[What&#039;s available in the JFactory class]]&lt;br /&gt;
* [[How to generate paths for client side and server side]]&lt;br /&gt;
* How to access information from the request/browser&lt;br /&gt;
** This focuses on using the JBrowser class to retrieve information about the features available in the user&#039;s browser.&lt;br /&gt;
* [[How to create an editor plugin]]&lt;br /&gt;
* [[What can be done with a user plugin]]&lt;br /&gt;
* [[How to work with parameters]]&lt;br /&gt;
* [[How to use the JToolBar class in the frontend]]&lt;br /&gt;
* [[How to use the editor in a component]]&lt;br /&gt;
* [[How to cloak email addresses]]&lt;br /&gt;
* [[Joomla Routes &amp;amp; SEF]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Ddorothy</name></author>
	</entry>
</feed>