<?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=Sovainfo</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=Sovainfo"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Sovainfo"/>
	<updated>2026-05-18T11:31:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Updating_Joomla_(Install_Method)&amp;diff=307934</id>
		<title>J3.x:Updating Joomla (Install Method)</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Updating_Joomla_(Install_Method)&amp;diff=307934"/>
		<updated>2016-06-11T20:12:52Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: try to conform to STE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;{{note|&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please note!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
As of J3.5 you can no longer use this to update Joomla, use component Joomla! Update instead.&amp;lt;br /&amp;gt;&lt;br /&gt;
Your webserver requires access to internet. As of J3.6 you can also update with a downloaded patch.&amp;lt;/translate&amp;gt;|type=serious}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
In some cases it may not be possible to use the Extension Manager: Update method to update your site. One reason for this might be that you are using a non-standard distribution (for example, a distribution with a different default language installed). Another reason might be that you don&#039;t have a reliable Internet connection to support automatic installation.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
In this case, you can still do an easy installation using the Extension Manager: Install screen. Like the Update screen, this method will do the database updates automatically and will completely update your system without any further steps.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Step 1: Make sure you have a current backup of your site== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
In many cases, your host will make periodic site backups.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Step 2: Locate the update file== &amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
Locate the required archive file (for example, .zip, .tag.gz, or tar.bz2 archive) for your version. If you are updating to an x.x.0 release (for example, from 1.7.3 to 2.5.0), this will normally be a file like Joomla_2.5.0-Stable-Update_Package.zip. If you are updating within the same release series (for example, 2.5.0 to 2.5.1), then the file will be named something like Joomla_2.5.0_to_2.5.1-Stable-Patch_Package.zip.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
At this point, you have three options:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
# Install from URL&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
# Install from Directory&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
# Upload Package File&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
Install from URL is the easiest to do. With this option, the upgrade archive is loaded directly by the server, so it works well even if your local computer has a slow or unreliable Internet connection.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
Install from Directory is the safest method if the server itself has a slow Internet connection. With this method, you use FTP to load the unpacked update files into a temporary folder on the server. Then you point to that directory on the server for the installation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
Upload Package File is fairly simple, but it requires that you have a good connection between your local computer and the server.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The screen below shows the Extension Manager: Install screen with the three options labeled. &lt;br /&gt;
[[Image:Update-screenshot-20120124-03-&amp;lt;translate&amp;gt;&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Install from URL=== &amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
This option is the easiest if the archive file is available on a Website.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
# In the Extension Manager: Install screen, enter the URL for the archive file in the Install URL field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
# Press the Install button.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
The system will work for a period of time - up to two minutes or more for a full version update. Then a message indicating a successful installation will display.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Install from Directory=== &amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
This option requires that you unpack the archive file in a directory on your server. This is the best method if you have a slow Internet connection or you are experiencing timeouts during the update process.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
# Unpack the archive file in a temporary directory on your local machine.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
# Upload all the files in this directory (for example, using FTP) to a temporary directory that is visible to the Web server. For example, you can create a sub-directory under the tmp directory in your Joomla root. For this example, let&#039;s say the directory on the server is &amp;lt;code&amp;gt;/home/myuser/myjoomla/tmp/upgrade250&amp;lt;/code&amp;gt;).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
# In the Extension Manager: Install screen, enter the full path of the temporary directory (on the server) from step 2 (for example, &amp;lt;code&amp;gt;/home/myuser/myjoomla/tmp/upgrade250&amp;lt;/code&amp;gt;).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
# Press the Install button.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
The system will work for a short time (perhaps a minute or less, depending on your server). Then a message indicating a successful installation will display.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Upload a Package File=== &amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
This option requires that you first download the archive file to your local machine.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
# Download the file to your local computer.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
# In the Extension Manager: Install screen, click the Browse button next to the Package File field and browse to the archive file.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
# Press the Install button.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
The system will work for a period of time - up to two minutes or more for a full version update. Then a message indicating a successful installation will display.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
# Congratulations! At this point, your site is updated.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Clear your browser cache and check that your site is working correctly. See below Checking Your Site.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
[[Category:Installation]]	&lt;br /&gt;
[[Category:Joomla! 3.x]]	&lt;br /&gt;
[[Category:Joomla! 3.5]]	&lt;br /&gt;
[[Category:Joomla! 3.6]]	&lt;br /&gt;
[[Category:Upgrading]]	&lt;br /&gt;
[[Category:Update]]	&lt;br /&gt;
[[Category:FAQ]]	&lt;br /&gt;
&amp;lt;/translate&amp;gt; 	&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Updating_Joomla_(Install_Method)&amp;diff=307744</id>
		<title>J3.x:Updating Joomla (Install Method)</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Updating_Joomla_(Install_Method)&amp;diff=307744"/>
		<updated>2016-06-11T09:44:59Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: No longer supported since j3.5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;{{note|&amp;lt;translate&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please note!&#039;&#039;&#039;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
As of Joomla 3.5 the update distribution no longer contains the joomla.xml identifying it as a file extension.&amp;lt;br /&amp;gt;&lt;br /&gt;
The consequence is that you can no longer apply the update with Extensions-&amp;gt;Manage-&amp;gt;Install, you need to use the component Joomla! Update.&lt;br /&gt;
Which means your webserver needs access to internet. As of J3.6 the component Joomla! Update also allows you to update with a downloaded patch.&lt;br /&gt;
Be aware that it is not possible to validate the patch, you need to point to a valid Joomla update package.&amp;lt;!--T:10--&amp;gt;&amp;lt;/translate&amp;gt;|type=serious}}&lt;br /&gt;
In some cases it may not be possible to use the Extension Manager: Update method to update your site. One reason for this might be that you are using a non-standard distribution (for example, a distribution with a different default language installed). Another reason might be that you don&#039;t have a reliable Internet connection to support automatic installation. &lt;br /&gt;
&lt;br /&gt;
In this case, you can still do an easy installation using the Extension Manager: Install screen. Like the Update screen, this method will do the database updates automatically and will completely update your system without any further steps.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Make sure you have a current backup of your site==&lt;br /&gt;
In many cases, your host will make periodic site backups.&lt;br /&gt;
&lt;br /&gt;
==Step 2: Locate the update file==&lt;br /&gt;
Locate the required archive file (for example, .zip, .tag.gz, or tar.bz2 archive) for your version. If you are updating to an x.x.0 release (for example, from 1.7.3 to 2.5.0), this will normally be a file like Joomla_2.5.0-Stable-Update_Package.zip. If you are updating within the same release series (for example, 2.5.0 to 2.5.1), then the file will be named something like Joomla_2.5.0_to_2.5.1-Stable-Patch_Package.zip.&lt;br /&gt;
&lt;br /&gt;
At this point, you have three options:&lt;br /&gt;
# Install from URL&lt;br /&gt;
# Install from Directory&lt;br /&gt;
# Upload Package File&lt;br /&gt;
&lt;br /&gt;
Install from URL is the easiest to do. With this option, the upgrade archive is loaded directly by the server, so it works well even if your local computer has a slow or unreliable Internet connection. &lt;br /&gt;
&lt;br /&gt;
Install from Directory is the safest method if the server itself has a slow Internet connection. With this method, you use FTP to load the unpacked update files into a temporary folder on the server. Then you point to that directory on the server for the installation.&lt;br /&gt;
&lt;br /&gt;
Upload Package File is fairly simple, but it requires that you have a good connection between your local computer and the server. &lt;br /&gt;
&lt;br /&gt;
The screen below shows the Extension Manager: Install screen with the three options labeled. &lt;br /&gt;
[[Image:Update-screenshot-20120124-03.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
===Install from URL===&lt;br /&gt;
This option is the easiest if the archive file is available on a Website. &lt;br /&gt;
# In the Extension Manager: Install screen, enter the URL for the archive file in the Install URL field.&lt;br /&gt;
# Press the Install button. &lt;br /&gt;
The system will work for a period of time - up to two minutes or more for a full version update. Then a message indicating a successful installation will display.&lt;br /&gt;
&lt;br /&gt;
===Install from Directory===&lt;br /&gt;
This option requires that you unpack the archive file in a directory on your server. This is the best method if you have a slow Internet connection or you are experiencing timeouts during the update process.&lt;br /&gt;
# Unpack the archive file in a temporary directory on your local machine.&lt;br /&gt;
# Upload all the files in this directory (for example, using FTP) to a temporary directory that is visible to the Web server. For example, you can create a sub-directory under the tmp directory in your Joomla root. For this example, let&#039;s say the directory on the server is &amp;lt;code&amp;gt;/home/myuser/myjoomla/tmp/upgrade250&amp;lt;/code&amp;gt;).&lt;br /&gt;
# In the Extension Manager: Install screen, enter the full path of the temporary directory (on the server) from step 2 (for example, &amp;lt;code&amp;gt;/home/myuser/myjoomla/tmp/upgrade250&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Press the Install button. &lt;br /&gt;
The system will work for a short time (perhaps a minute or less, depending on your server). Then a message indicating a successful installation will display.&lt;br /&gt;
&lt;br /&gt;
===Upload a Package File===&lt;br /&gt;
This option requires that you first download the archive file to your local machine. &lt;br /&gt;
# Download the file to your local computer.&lt;br /&gt;
# In the Extension Manager: Install screen, click the Browse button next to the Package File field and browse to the archive file.&lt;br /&gt;
# Press the Install button. &lt;br /&gt;
The system will work for a period of time - up to two minutes or more for a full version update. Then a message indicating a successful installation will display.&lt;br /&gt;
&lt;br /&gt;
# Congratulations! At this point, your site is updated.&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Clear your browser cache and check that your site is working correctly. See below Checking Your Site&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Help310:Users_User_Manager&amp;diff=303477</id>
		<title>Help310:Users User Manager</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Help310:Users_User_Manager&amp;diff=303477"/>
		<updated>2016-05-13T09:53:10Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* How to access */  adjusted instructions to J3.5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User management interface.&lt;br /&gt;
==Description==&lt;br /&gt;
In this screen you have the ability to look at a list of your users and sort them in different ways. You can also edit and create users, groups and access levels.&lt;br /&gt;
&lt;br /&gt;
==How to access==&lt;br /&gt;
You can access the User Manager by clicking on the &#039;&#039;&#039;Users&#039;&#039;&#039; listed on the left in the Control Panel. Alternatively, use top menu bar, {{rarr|Users,Manage}}.&lt;br /&gt;
&lt;br /&gt;
==Screenshot==&lt;br /&gt;
[[Image:Help-3x-users-user-manager-users.png|670px]]&lt;br /&gt;
&lt;br /&gt;
==Column Headers==&lt;br /&gt;
In the table containing the users from your Joomla! site, you will see different columns. Here you can read what they mean and what is displayed in that column.&lt;br /&gt;
&lt;br /&gt;
{{Chunk30:colheader|Checkbox/en}}&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;. The full name of the user.&lt;br /&gt;
*&#039;&#039;&#039;User Name&#039;&#039;&#039;. The name the user will log in as.&lt;br /&gt;
*&#039;&#039;&#039;Enabled&#039;&#039;&#039;. Whether or not the user is enabled.&lt;br /&gt;
*&#039;&#039;&#039;Activated&#039;&#039;&#039;. Whether or not the user is activated. Normally when a user registers from the front end, some type of activation is required. This is controlled by the New User Account Activation parameter in the Users Configuration → Component screen. See [[Help31:Components_Users_Configuration|Users Options - Component Settings]] for more information.&lt;br /&gt;
*&#039;&#039;&#039;User Groups&#039;&#039;&#039;. The list of groups that the user belongs to. Note that a user may belong to more than one group.&lt;br /&gt;
{{colheader|E-mail}}&lt;br /&gt;
{{colheader|Lastvisit}}&lt;br /&gt;
* &#039;&#039;&#039;Registration Date&#039;&#039;&#039;. The date the user was registered.&lt;br /&gt;
{{Chunk30:colheader|Id/en}}&lt;br /&gt;
&lt;br /&gt;
==Toolbar==&lt;br /&gt;
At the top left you will see the toolbar:&lt;br /&gt;
&lt;br /&gt;
[[Image:Help30-New-Edit-Activate-Block-Unblock-Delete-Options-Help-toolbar.png]]&lt;br /&gt;
&lt;br /&gt;
The functions are:&lt;br /&gt;
{{Chunk30:Help_screen_toolbar_icon_New/en|user}}&lt;br /&gt;
{{Chunk30:Help_screen_toolbar_icon_Edit/en|user}}&lt;br /&gt;
{{Chunk30:Help_screen_toolbar_icon_Activate/en|users}}&lt;br /&gt;
{{Chunk30:Help_screen_toolbar_icon_Block/en|users}}&lt;br /&gt;
{{Chunk30:Help_screen_toolbar_icon_Unblock/en|users}}&lt;br /&gt;
{{Chunk30:Help_screen_toolbar_icon_Delete/en|users}}&lt;br /&gt;
{{Chunk30:Help_screen_toolbar_icon_Options/en}}&lt;br /&gt;
{{Chunk30:Help_screen_toolbar_icon_Help/en}}&lt;br /&gt;
&lt;br /&gt;
==List Filters==&lt;br /&gt;
&#039;&#039;&#039;Filter by Partial User Name&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Search Users&#039;&#039;&#039;. In the upper left is a Search field and two buttons, as shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Help30-Users-User-Manager-search-filter-subscreen.png]]&lt;br /&gt;
&lt;br /&gt;
Enter part of the user&#039;s name and press the Search to find matching names. Press Reset to clear the search field and restore the list of users.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filter by User State, Active, Group, or Registration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sidebar on left bottom, are four drop-down list boxes as shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Help30-Users-User-Manager-other-filter-subscreen.png]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;State&#039;&#039;&#039;. Select the desired state (Enabled or Disabled) to limit the list based on state. Select &amp;quot;- State -&amp;quot; to list Enabled and Disabled users.&lt;br /&gt;
*&#039;&#039;&#039;Active&#039;&#039;&#039;. Select &amp;quot;Activated&amp;quot; to list only users that have been Activated. Select &amp;quot;Unactivated&amp;quot; to select only users who have not yet been activated. Select &amp;quot;- Active -&amp;quot; to select both type of users.&lt;br /&gt;
*&#039;&#039;&#039;Group&#039;&#039;&#039;. Select a group from the list box to list only users who are members of that group. Select &amp;quot;- Group -&amp;quot; to select users regardless of group.&lt;br /&gt;
*&#039;&#039;&#039;Registration Date&#039;&#039;&#039;. Select time frame from a list to show only users who registered in a selected time frame. Select &amp;quot;-Registration Date-&amp;quot; to select users regardless of registration date.&lt;br /&gt;
&lt;br /&gt;
==Quick Tips==&lt;br /&gt;
*Click on the name of a user to edit the user&#039;s properties.&lt;br /&gt;
*Click on the icon in the Enabled column to toggle between Enabled and Disabled status.&lt;br /&gt;
*Click on the Column Headers to sort the users by that column, ascending or descending.&lt;br /&gt;
*To understand user and group permissions, read: [[Access Control List/1.6-2.5/Tutorial|ACL Tutorial for Joomla 1.6, 1.7 and 2.5]]&lt;br /&gt;
&lt;br /&gt;
==Related information==&lt;br /&gt;
{{relatedhelp|Users}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{cathelp|3.0,3.1,3.2,3.3,3.4,3.5|User Manager Help Screens}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:How_to_restore_a_Joomla_2.5_site_if_you_accidentally_migrate_to_Joomla_3.x.x&amp;diff=226294</id>
		<title>Talk:How to restore a Joomla 2.5 site if you accidentally migrate to Joomla 3.x.x</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:How_to_restore_a_Joomla_2.5_site_if_you_accidentally_migrate_to_Joomla_3.x.x&amp;diff=226294"/>
		<updated>2015-09-05T00:04:33Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: Created page with &amp;quot;== Propose to remove this document == Suggest to remove this document. The part of reverting the database is not correct! Which means you have J2.5 scripts running against J3...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Propose to remove this document ==&lt;br /&gt;
Suggest to remove this document. The part of reverting the database is not correct! Which means you have J2.5 scripts running against J3 structure of database. By now I guess everybody knows Extension manager-&amp;gt;Database-&amp;gt;Fix is very inappropriately named. Can&#039;t think of a situation where it actually fixes anything. It certainly can&#039;t be used to repair a failed update. Nor can it be used to revert a J3 to J2.5 structure. It only applies structural changes when the structure is older than the scripts. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 19:04, 4 September 2015 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Using_nested_sets&amp;diff=189581</id>
		<title>Using nested sets</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Using_nested_sets&amp;diff=189581"/>
		<updated>2015-06-08T12:12:35Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Deleting a node */  remove jrequest&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Starting with version 11.1 the Joomla Platform now includes native support for storing and retrieving hierarchical information in the form of &amp;quot;nested sets&amp;quot; in database tables.  This support is used in the implementation of menus and categories in the core Joomla CMS from version 1.6 onwards, but can of course be used in your own extensions too.  This document assumes that you are already familiar with using the [[:Category:JTable|JTable]], [[:Category:JDatabase|JDatabase]] and JDatabaseQuery classes to interact with a database, either the Joomla database itself, or some external database.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
In the nested sets model each data item is stored as a row in the database table in the normal manner.  However, additional columns are present in the table to express the hierarchical relationship between the data items.  Each data item is referred to as a node and the collection of nodes can be thought of as forming a tree.  Nodes can have zero, one or many child nodes.  A node that has no children is referred to as a leaf node.  A child node can itself have children and this nesting can carry on to arbitrary depth.  The table is assumed to hold a single tree with a single node being allocated as the root node.  If you need to be able to store multiple trees then simply make the root node of each such tree a child node under the single root node and adjust your code to take this into account.&lt;br /&gt;
&lt;br /&gt;
As each node contains columns labelled &amp;quot;lft&amp;quot; and &amp;quot;rgt&amp;quot; for &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; respectively, it is tempting to think that the data structure is a binary tree.  However, these columns do not store node ids as they are not links to other nodes in the tree, but instead store sequence information.  More information can be found on the theory behind nested sets here&amp;lt;ref&amp;gt;[[wikipedia:Nested set model]].&amp;lt;/ref&amp;gt;  The term &amp;quot;nested sets&amp;quot; is a little inaccurate as a set is, stricly speaking, an unordered collection of objects.  In the Joomla implementation the order of nodes under a parent node is preserved and API calls are available to manipulate the order.  A better term would perhaps be &amp;quot;nested ordered sets&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It should be noted that certain operations, such as inserting a new node, can be expensive in terms of disk access when dealing with a large tree and applications should be designed with this in mind.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
The essential class is JTableNested, which extends the base JTable class, so instead of extending JTable you should extend your table class from JTableNested instead.&lt;br /&gt;
&lt;br /&gt;
Your table must include a number of standard columns that are required for JTableNested to maintain the tree structure successfully.  These are:-&lt;br /&gt;
&lt;br /&gt;
* id (primary key)&lt;br /&gt;
* parent_id&lt;br /&gt;
* lft&lt;br /&gt;
* rgt&lt;br /&gt;
* level&lt;br /&gt;
* title&lt;br /&gt;
* alias&lt;br /&gt;
* access&lt;br /&gt;
* path&lt;br /&gt;
&lt;br /&gt;
The primary key does not need to be called &amp;quot;id&amp;quot;, but it is required.  Other columns must have the names listed above.&lt;br /&gt;
&lt;br /&gt;
For example, a suitable MySQL command to create a basic table compatible with JTableNested would be&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `#__nestedsets` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `parent_id` int(10) unsigned NOT NULL DEFAULT &#039;0&#039;,&lt;br /&gt;
  `lft` int(11) NOT NULL DEFAULT &#039;0&#039;,&lt;br /&gt;
  `rgt` int(11) NOT NULL DEFAULT &#039;0&#039;,&lt;br /&gt;
  `level` int(10) unsigned NOT NULL DEFAULT &#039;0&#039;,&lt;br /&gt;
  `title` varchar(255) NOT NULL,&lt;br /&gt;
  `alias` varchar(255) NOT NULL DEFAULT &#039;&#039;,&lt;br /&gt;
  `access` tinyint(3) unsigned NOT NULL DEFAULT &#039;0&#039;,&lt;br /&gt;
  `path` varchar(255) NOT NULL DEFAULT &#039;&#039;,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  KEY `idx_left_right` (`lft`,`rgt`)&lt;br /&gt;
) DEFAULT CHARSET=utf8;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You will, of course, need to add further columns for your specific data requirements.  For the purposes of this documentation a column called &amp;quot;payload&amp;quot; will be used to indicate this custom data.&lt;br /&gt;
&lt;br /&gt;
==Instantiating the table object==&lt;br /&gt;
You instantiate the nested sets table object in exactly the same way as you would for a regular table object.  For example, if your table class file is located in a &amp;lt;tt&amp;gt;/tables&amp;lt;/tt&amp;gt; directory in your component area, you could use code like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_COMPONENT . &#039;/tables&#039;);&lt;br /&gt;
$table = JTable::getInstance(&#039;nestedsets&#039;, &#039;Table&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This will instantiate your table class called &#039;TableNestedSets&#039; in the file &#039;nestedsets.php&#039;.  Remember to extend from JTableNested instead of JTable:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class TableNestedSets extends JTableNested&lt;br /&gt;
{&lt;br /&gt;
    // Your properties and methods go here.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Adding a root node==&lt;br /&gt;
The quickest way to add a root node to an otherwise empty table is to use code like this, which can be added to your table class:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Add the root node to an empty table.&lt;br /&gt;
 *&lt;br /&gt;
 * @return    mixed  The id of the new root node or false on error.&lt;br /&gt;
 */&lt;br /&gt;
public function addRoot()&lt;br /&gt;
{&lt;br /&gt;
    $db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
    $query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
        -&amp;gt;insert(&#039;#__profiles&#039;)&lt;br /&gt;
        -&amp;gt;set(&#039;parent_id = 0&#039;)&lt;br /&gt;
        -&amp;gt;set(&#039;lft = 0&#039;)&lt;br /&gt;
        -&amp;gt;set(&#039;rgt = 1&#039;)&lt;br /&gt;
        -&amp;gt;set(&#039;level = 0&#039;)&lt;br /&gt;
        -&amp;gt;set(&#039;title = &#039; . $db-&amp;gt;quote(&#039;root&#039;))&lt;br /&gt;
        -&amp;gt;set(&#039;alias = &#039; . $db-&amp;gt;quote(&#039;root&#039;))&lt;br /&gt;
        -&amp;gt;set(&#039;access = 1&#039;)&lt;br /&gt;
        -&amp;gt;set(&#039;path = &#039; . $db-&amp;gt;quote(&#039;&#039;));&lt;br /&gt;
    $db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
    if(!$db-&amp;gt;execute())&lt;br /&gt;
    {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    return $db-&amp;gt;insertid();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is perfectly reasonable to store payload data in the root node.  For example, you might like to store component configuration data in the payload column of the root node.&lt;br /&gt;
&lt;br /&gt;
==Getting the root node id==&lt;br /&gt;
To determine the id of the root node use the &amp;lt;tt&amp;gt;getRootId&amp;lt;/tt&amp;gt; method.  For example, in this example if the root node is not found, it is created.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$rootId = $table-&amp;gt;getRootId();&lt;br /&gt;
&lt;br /&gt;
if ($rootId === false)&lt;br /&gt;
{&lt;br /&gt;
    $rootId = $table-&amp;gt;addRoot();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Updating a node==&lt;br /&gt;
Updating the payload data in a node is done in exactly the same way as you would update a record in a regular database table using the JTable class.  Given an array of data fields, this code binds it to the table object, checks its validity then stores it in the database table.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$table-&amp;gt;bind($data_array);&lt;br /&gt;
$table-&amp;gt;check();&lt;br /&gt;
$table-&amp;gt;store();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Updating a node in such a way that it alters the structure of the tree, for example, by moving a node from one location to another, is a little more involved and is described below.  There are also some convenience methods for publishing/unpublished a node and these are also described in more detail below.&lt;br /&gt;
&lt;br /&gt;
==Adding a new node==&lt;br /&gt;
Adding a new node to the table is done in a similar way to adding a row to a normal Joomla table.  Data is bound to the Joomla table object using the bind method, followed by calls to check and store.  These methods have been overridden in the JTableNested class to provide the additional functionality required for storing nested sets.&lt;br /&gt;
&lt;br /&gt;
However, in order to determine where in the tree the new node is to be inserted, you need to make a call to the &amp;lt;tt&amp;gt;setLocation&amp;lt;/tt&amp;gt; method.  The setLocation method takes two arguments, the first is the id of a &amp;quot;reference&amp;quot; node in the tree.  The new node will be inserted relative to this node with the relationship being specified by the second argument.  Possible values for this relationship are:&lt;br /&gt;
* &#039;&#039;&#039;before&#039;&#039;&#039; - the new node will be inserted before the reference node but at the same level.&lt;br /&gt;
* &#039;&#039;&#039;after&#039;&#039;&#039; - the new node will be inserted after the reference node but at the same level.&lt;br /&gt;
* &#039;&#039;&#039;first-child&#039;&#039;&#039; - the new node will be inserted as the first child node of the reference node.&lt;br /&gt;
* &#039;&#039;&#039;last-child&#039;&#039;&#039; - the new node will be inserted as the last child node of the reference node.&lt;br /&gt;
&lt;br /&gt;
In this example a new node is inserted as the first child of the reference node.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Given an array of data fields in $data_array and a reference node id in $reference_id,&lt;br /&gt;
// this code will add the new node as the first child of the reference node.&lt;br /&gt;
&lt;br /&gt;
// Get the table object.&lt;br /&gt;
// Note that in a model you can replace this with $table = $this-&amp;gt;getTable();&lt;br /&gt;
$table = JTable::getInstance(&#039;yourtable&#039;);&lt;br /&gt;
&lt;br /&gt;
// Specify where to insert the new node.&lt;br /&gt;
$table-&amp;gt;setLocation($reference_id, &#039;first-child&#039;);&lt;br /&gt;
&lt;br /&gt;
// Bind data to the table object.&lt;br /&gt;
$table-&amp;gt;bind($data_array);&lt;br /&gt;
&lt;br /&gt;
// Force a new node to be created.&lt;br /&gt;
$table-&amp;gt;id = 0;&lt;br /&gt;
&lt;br /&gt;
// Check that the node data is valid.&lt;br /&gt;
$table-&amp;gt;check();&lt;br /&gt;
&lt;br /&gt;
// Store the node in the database table.&lt;br /&gt;
$table-&amp;gt;store();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In order to maintain the integrity of the data structure, the table is locked during a node insertion operation.  Bear in mind that adding a new node to a large table is an expensive operation so the table could potentially be locked for a considerable period.  You may need to take this into account when designing your application.&lt;br /&gt;
&lt;br /&gt;
==Retrieving a single node by id==&lt;br /&gt;
If you know the id of a node then retrieving it can be done in the same way that you would retrieve a row in a regular Joomla table.  For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get the node id from the request.&lt;br /&gt;
$id = JRequest::getInt(&#039;id&#039;);&lt;br /&gt;
&lt;br /&gt;
// Get the node from the table.&lt;br /&gt;
$table-&amp;gt;load($id);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Is it a leaf node?==&lt;br /&gt;
A leaf node is one that has no child nodes beneath it.  To determine if a node is a leaf node you can use code like the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// If $id is the id of a node, determine if it is a leaf node.&lt;br /&gt;
if ($table-&amp;gt;isLeaf($id))&lt;br /&gt;
{&lt;br /&gt;
  echo &#039;This is a leaf node&#039;;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  echo &#039;This is NOT a leaf node&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retrieving a subtree==&lt;br /&gt;
To retrieve an entire subtree given the id of the base node of the subtree, you can use code like the following&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// If $id is the id of a node, retrieve the subtree with this node as its root.&lt;br /&gt;
$subtree = $table-&amp;gt;getTree($id);&lt;br /&gt;
print_r($subtree);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This will retrieve an array of all the nodes in the subtree.  The array is one-dimensional and lists the nodes in preorder traversal order&amp;lt;ref&amp;gt;[[wikipedia:Tree traversal]]&amp;lt;/ref&amp;gt;.  Note that if your table is large calling getTree() from the root node will retrieve the entire table and very likely run you out of memory, so use it with caution.&lt;br /&gt;
&lt;br /&gt;
==Retrieving a path==&lt;br /&gt;
To retrieve all the nodes along the path leading to a specified node, you can use code like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$pathNodes = $table-&amp;gt;getPath($id);&lt;br /&gt;
print_r($pathNodes);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This will retrieve a one-dimensional array of all the nodes from the root node along the path leading to the specified node.&lt;br /&gt;
&lt;br /&gt;
==Publish or unpublish a node or an entire branch==&lt;br /&gt;
Supporting the publish/unpublish feature is a little more involved than with a regular flat database table as the state of parent and child nodes must also be taken into account.  Fortunately, the overridden publish and unpublish methods provided by JTableNested make the management of publish/unpublish almost transparent.&lt;br /&gt;
&lt;br /&gt;
To publish or unpublish one or more nodes use code like the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// $ids can be a single node id, or an array of node ids.&lt;br /&gt;
// 0 = unpublish, 1 = publish&lt;br /&gt;
$state = 1;&lt;br /&gt;
$userId = JFactory::getUser()-&amp;gt;id;&lt;br /&gt;
&lt;br /&gt;
if ($table-&amp;gt;publish($id, $state, $userId))&lt;br /&gt;
{&lt;br /&gt;
    echo &#039;State changed successfully&#039;;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
    echo &#039;State not changed&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The publish method respects rows checked out by other users and will attempt to checkin rows that it can after adjustments are made. The method will not allow you to set a publishing state higher than any ancestor node and will not allow you to set a publishing state on a node with a checked out child.&lt;br /&gt;
&lt;br /&gt;
TODO: Using publish/unpublish with checkin/out requires some additional columns in the table.  The documentation should be updated to reflect that.&lt;br /&gt;
&lt;br /&gt;
==Changing the order of nodes in a branch==&lt;br /&gt;
There are a number of different ways of moving a node to a new location in the tree.&lt;br /&gt;
&lt;br /&gt;
To move a node one position before or after its current position, but keeping it at the same level, you can use the orderUp or orderDown methods using code like the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if ($table-&amp;gt;orderUp($id))&lt;br /&gt;
{&lt;br /&gt;
    echo &#039;Success&#039;;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
    echo &#039;Failed to move node&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More generally, you can move a node by more than one position at a time using the &amp;lt;tt&amp;gt;move&amp;lt;/tt&amp;gt; method.  For example, the following code moves the node 2 positions before its current position, at the same level.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get the node id to be moved from the request.&lt;br /&gt;
$key = $this-&amp;gt;_tbl_key;&lt;br /&gt;
$this-&amp;gt;$key = JRequest::getInt(&#039;id&#039;);&lt;br /&gt;
&lt;br /&gt;
// Set the direction and magnitude of the move.&lt;br /&gt;
// Negative indicates &amp;quot;before&amp;quot;, positive &amp;quot;after&amp;quot;&lt;br /&gt;
$delta = -2;&lt;br /&gt;
&lt;br /&gt;
// Do the move.&lt;br /&gt;
// Notice that the node id is not passed as an argument to&lt;br /&gt;
// move; it must already be set in the table object.&lt;br /&gt;
if ($table-&amp;gt;move($delta))&lt;br /&gt;
{&lt;br /&gt;
    echo &#039;Success&#039;;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
    echo &#039;Failed to move node&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the most general case, a node can be moved to an arbitrary position in the tree using the &amp;lt;tt&amp;gt;moveByReference&amp;lt;/tt&amp;gt; method.  This is very similar to adding a completely new node to the tree in that you need to specify the location to move the node to by reference to some other node.&lt;br /&gt;
&lt;br /&gt;
In this example a new node is inserted as the last child of the reference node.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Determine the reference node id.&lt;br /&gt;
$reference_id = JRequest::getInt(&#039;reference&#039;);&lt;br /&gt;
&lt;br /&gt;
// Determine the relationship with the reference node.  Possible values are:-&lt;br /&gt;
// before - the new node will be inserted before the reference node but at the same level.&lt;br /&gt;
// after - the new node will be inserted after the reference node but at the same level.&lt;br /&gt;
// first-child - the new node will be inserted as the first child node of the reference node.&lt;br /&gt;
// last-child  - the new node will be inserted as the last child node of the reference node.&lt;br /&gt;
$relation = &#039;last-child&#039;;&lt;br /&gt;
&lt;br /&gt;
// Determine the node to be moved.&lt;br /&gt;
$node_id = JRequest::getInt(&#039;id&#039;);&lt;br /&gt;
&lt;br /&gt;
// Do the move.&lt;br /&gt;
if ($table-&amp;gt;moveByReference($reference_id, $relation, $node_id))&lt;br /&gt;
{&lt;br /&gt;
    echo &#039;Success&#039;;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
    echo &#039;Failed to move node&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deleting a node==&lt;br /&gt;
Deleting a node given its node id is very simple as the following example illustrates:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Determine the node id from the request.&lt;br /&gt;
$node_id = JFactory::getApplication()-&amp;gt;input-&amp;gt;get(&#039;id&#039;);&lt;br /&gt;
&lt;br /&gt;
// Delete the node.&lt;br /&gt;
if ($table-&amp;gt;delete($node_id))&lt;br /&gt;
{&lt;br /&gt;
    echo &#039;Node deleted&#039;;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
    echo &#039;Failed to delete node&#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Note that this operation will also delete all child nodes of the node being deleted, if any are present.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Platform 11.1]][[Category:Development Tips and Tricks]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5:Using_the_JTable_class&amp;diff=189578</id>
		<title>J1.5:Using the JTable class</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5:Using_the_JTable_class&amp;diff=189578"/>
		<updated>2015-06-08T11:34:10Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Using a JTable class extension */  remove &amp;amp;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is for {{JVer|1.5}} In Joomla! 1.5.&lt;br /&gt;
&lt;br /&gt;
== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The [http://api.joomla.org/1.5/Joomla-Framework/Table/JTable.html JTable] class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( &#039;#__recipes&#039;, &#039;id&#039;, $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with &#039;Table&#039;, then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table&#039;s name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than &#039;null&#039; as the default.&lt;br /&gt;
&lt;br /&gt;
An important thing to note here, is that the file containing your table class, has to be named the same as the class minus prefix in lowercase. So for this example, you would have to name your table class file &#039;recipes.php&#039;.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called &#039;Recipes&#039;, you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
You can use this functionallity just as well outside components, i.e. in plugins and modules. As a general rule you should avoid writing to the database from a module, and use plugins/components for this. Remember to use the built-in [[constants]] when linking to a custom path (outside the &#039;adminstrator/{com_yourcomponent}/tables&#039; folder).&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension&#039;s source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR . &#039;/components/com_recipes/tables&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an instance of the object, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row = JTable::getInstance(&#039;recipes&#039;, &#039;Table&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If doesn&#039;t work use:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row = JTable::getInstance(&#039;recipes&#039;, &#039;NAMEOFCOMPONENTTable&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(Where NAMEOFCOMPONENT is the name of the component that contais the table).&lt;br /&gt;
&lt;br /&gt;
Notice that the lowercase version of the suffix of your class name is used as the first parameter, with the prefix &#039;Table&#039; as the second. Also, the getInstance() member function of JTable returns the object by reference instead of value; use =&amp;amp; to enforce this. &lt;br /&gt;
&lt;br /&gt;
In a model class (extends JModel) you can also use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row = $this-&amp;gt;getTable(&#039;recipes&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that if you have not used the standard naming convention, you can supply the class prefix as the optional second parameter.&lt;br /&gt;
&lt;br /&gt;
=== Checkout/Checkin ===&lt;br /&gt;
Common scenario is when multiple users are editing identical item (e.g article, category, user and etc) simultaneously, which in turn, may results in arbitrary data when saved by the users (depends on who last saved the item). Joomla! solves such cases of unknown modification ownership using Checkouts and Checkins in order to provide access only to one user at a time. For example, if one user began editing an article, then it is said that the article was &#039;&#039;&#039;checked out&#039;&#039;&#039; by the user, when finished working with the article (usually by closing it using a button), the article is &#039;&#039;&#039;checked in&#039;&#039;&#039; by the user. At the time the user was editing the article, no other user could edit the same article, unless manually specified by a user with the right permissions. You can find further explanation [http://help.joomla.org/content/view/202/153/ here].&lt;br /&gt;
The following examples demonstrate how Checkout/Checkin may be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Checkout&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// retrieve item identifier from request&lt;br /&gt;
$itemId  = JRequest::getInt(&#039;itemId&#039;);&lt;br /&gt;
// the user to test checkout with, could be any other user you want&lt;br /&gt;
$user     = JFactory::getUser();&lt;br /&gt;
&lt;br /&gt;
// load the item&#039;s data so we&#039;ll know with what item were dealing with&lt;br /&gt;
if (!$row-&amp;gt;load($itemId)) {&lt;br /&gt;
    return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// check out the item&lt;br /&gt;
if ($row-&amp;gt;checkout($user-&amp;gt;id)) {&lt;br /&gt;
    echo &#039;Item was checked out by the user.&#039;;&lt;br /&gt;
} else {&lt;br /&gt;
    return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;checkout()&#039;&#039;&#039; will signal the item was checked out by the user whom ID we provided as an argument to the method.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Checkin&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// retrieve item identifier from request&lt;br /&gt;
$itemId  = JRequest::getInt(&#039;itemId&#039;);&lt;br /&gt;
// the user to test checkout with, could be any other user you want&lt;br /&gt;
$user     = JFactory::getUser();&lt;br /&gt;
&lt;br /&gt;
// load the item&#039;s data so we&#039;ll know with what item were dealing with&lt;br /&gt;
if (!$row-&amp;gt;load($itemId)) {&lt;br /&gt;
    return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// check if the item was checked out, and if it does - whether or not it was checked out by the user&lt;br /&gt;
if($row-&amp;gt;isCheckedOut($user-&amp;gt;id)) {&lt;br /&gt;
    // check in the item&lt;br /&gt;
    if ($row-&amp;gt;checkin()) {&lt;br /&gt;
        echo &#039;The item was checked in, and can now be edited by other users.&#039;;&lt;br /&gt;
    } else {&lt;br /&gt;
        return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
We use &#039;&#039;&#039;isCheckedOut()&#039;&#039;&#039; to find out whether the item was checked out,  it returns TRUE in the following cases:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Item is empty (i.e no data was loaded to the item).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The item does not support checkout, which can be as a result of database design.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The supplied user ID does not match the ID of the user who checked out the item, meaning the item is probably being edited by another user already, or the user who last checked out the item did not properly checked in the item. &#039;&#039;&#039;This is probably the most common scenario&#039;&#039;&#039; when dealing with items in the backend.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;isCheckedOut()&#039;&#039;&#039; returns FALSE in the following cases:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The item was not checked out by any user.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The item was checked out, but by the same user who checked it out (i.e the user with the ID we passed to isCheckedOut()).&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;checkin()&#039;&#039;&#039; will purge any checkout state that was applied to the item.&lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
In a typical situation, you will have an HTML form submitted by the user which will PHP will interpret for you as an associative array. The JRequest class in Joomla! has functions ready to assist with retrieving this data safely. Use JRequest::get(&#039;post&#039;) to retrieve all of the elements in the HTTP POST request as a sanitized array.&lt;br /&gt;
&lt;br /&gt;
Once you have this array, you can pass it into the bind() method of JTable. Doing this will match the associated items of the array with member variables of the class. In the following example, the array is retrieved from JRequest::get(&#039;post&#039;) and immediately passed into bind(). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;bind( JRequest::get( &#039;post&#039; ) )) {&lt;br /&gt;
	return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If bind() fails, you want to stop the application and explain the failure before your extension attempts to send the data. The raiseWarning() function of JError allows you to stop Joomla!, while the getError() function returns the error message stored in the JTable object.&lt;br /&gt;
&lt;br /&gt;
When binding succeeds and your object is ready, call the store() function. Again, if something goes wrong, stop the application and explain why. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;store()) {&lt;br /&gt;
	JError::raiseError(500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* If any member variables of your JTable object are null when store() is called, they are ignored by default. This allows you to update specific columns of your table, while leaving the others untouched. If you wish to override this behavior to ensure that all columns have a value, pass true into store().&lt;br /&gt;
* The JTable::bind() and JRequest::get() functions do not enforce data types. If you need a column to be a specific type (for instance, integer), you need to add this logic to your code before calling store().&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
To load a specific row of the database with JTable, pass the key into the load() member function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row-&amp;gt;load( $id );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This relies on the key column you specified in the second parameter of parent::__construct() when you extended JTable.&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
Like read(), delete() allows you to destroy a specific row in the table based on the key specified earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row-&amp;gt;delete( $id );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to delete multiple rows at once, you will need to write the query manually.&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
{{jfr summary|class=JTable|methods=yes}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
When properly extended, JTable gives you all of the basic functions you need for managing and retrieving records in a database table. Member functions take care of the rest when you add member variables, the table name, and the key column.&lt;br /&gt;
&lt;br /&gt;
[[Category:Archived version Joomla! 1.5]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5:Using_the_JTable_class&amp;diff=189577</id>
		<title>J1.5:Using the JTable class</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5:Using_the_JTable_class&amp;diff=189577"/>
		<updated>2015-06-08T11:33:26Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Using a JTable class extension */  remove &amp;amp;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is for {{JVer|1.5}} In Joomla! 1.5.&lt;br /&gt;
&lt;br /&gt;
== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The [http://api.joomla.org/1.5/Joomla-Framework/Table/JTable.html JTable] class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( &#039;#__recipes&#039;, &#039;id&#039;, $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with &#039;Table&#039;, then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table&#039;s name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than &#039;null&#039; as the default.&lt;br /&gt;
&lt;br /&gt;
An important thing to note here, is that the file containing your table class, has to be named the same as the class minus prefix in lowercase. So for this example, you would have to name your table class file &#039;recipes.php&#039;.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called &#039;Recipes&#039;, you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
You can use this functionallity just as well outside components, i.e. in plugins and modules. As a general rule you should avoid writing to the database from a module, and use plugins/components for this. Remember to use the built-in [[constants]] when linking to a custom path (outside the &#039;adminstrator/{com_yourcomponent}/tables&#039; folder).&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension&#039;s source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR . &#039;/components/com_recipes/tables&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an instance of the object, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row = JTable::getInstance(&#039;recipes&#039;, &#039;Table&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If doesn&#039;t work use:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row = JTable::getInstance(&#039;recipes&#039;, &#039;NAMEOFCOMPONENTTable&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(Where NAMEOFCOMPONENT is the name of the component that contais the table).&lt;br /&gt;
&lt;br /&gt;
Notice that the lowercase version of the suffix of your class name is used as the first parameter, with the prefix &#039;Table&#039; as the second. Also, the getInstance() member function of JTable returns the object by reference instead of value; use =&amp;amp; to enforce this. &lt;br /&gt;
&lt;br /&gt;
In a model class (extends JModel) you can also use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row =&amp;amp; $this-&amp;gt;getTable(&#039;recipes&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that if you have not used the standard naming convention, you can supply the class prefix as the optional second parameter.&lt;br /&gt;
&lt;br /&gt;
=== Checkout/Checkin ===&lt;br /&gt;
Common scenario is when multiple users are editing identical item (e.g article, category, user and etc) simultaneously, which in turn, may results in arbitrary data when saved by the users (depends on who last saved the item). Joomla! solves such cases of unknown modification ownership using Checkouts and Checkins in order to provide access only to one user at a time. For example, if one user began editing an article, then it is said that the article was &#039;&#039;&#039;checked out&#039;&#039;&#039; by the user, when finished working with the article (usually by closing it using a button), the article is &#039;&#039;&#039;checked in&#039;&#039;&#039; by the user. At the time the user was editing the article, no other user could edit the same article, unless manually specified by a user with the right permissions. You can find further explanation [http://help.joomla.org/content/view/202/153/ here].&lt;br /&gt;
The following examples demonstrate how Checkout/Checkin may be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Checkout&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// retrieve item identifier from request&lt;br /&gt;
$itemId  = JRequest::getInt(&#039;itemId&#039;);&lt;br /&gt;
// the user to test checkout with, could be any other user you want&lt;br /&gt;
$user     = JFactory::getUser();&lt;br /&gt;
&lt;br /&gt;
// load the item&#039;s data so we&#039;ll know with what item were dealing with&lt;br /&gt;
if (!$row-&amp;gt;load($itemId)) {&lt;br /&gt;
    return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// check out the item&lt;br /&gt;
if ($row-&amp;gt;checkout($user-&amp;gt;id)) {&lt;br /&gt;
    echo &#039;Item was checked out by the user.&#039;;&lt;br /&gt;
} else {&lt;br /&gt;
    return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;checkout()&#039;&#039;&#039; will signal the item was checked out by the user whom ID we provided as an argument to the method.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Checkin&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// retrieve item identifier from request&lt;br /&gt;
$itemId  = JRequest::getInt(&#039;itemId&#039;);&lt;br /&gt;
// the user to test checkout with, could be any other user you want&lt;br /&gt;
$user     = JFactory::getUser();&lt;br /&gt;
&lt;br /&gt;
// load the item&#039;s data so we&#039;ll know with what item were dealing with&lt;br /&gt;
if (!$row-&amp;gt;load($itemId)) {&lt;br /&gt;
    return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// check if the item was checked out, and if it does - whether or not it was checked out by the user&lt;br /&gt;
if($row-&amp;gt;isCheckedOut($user-&amp;gt;id)) {&lt;br /&gt;
    // check in the item&lt;br /&gt;
    if ($row-&amp;gt;checkin()) {&lt;br /&gt;
        echo &#039;The item was checked in, and can now be edited by other users.&#039;;&lt;br /&gt;
    } else {&lt;br /&gt;
        return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
We use &#039;&#039;&#039;isCheckedOut()&#039;&#039;&#039; to find out whether the item was checked out,  it returns TRUE in the following cases:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Item is empty (i.e no data was loaded to the item).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The item does not support checkout, which can be as a result of database design.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The supplied user ID does not match the ID of the user who checked out the item, meaning the item is probably being edited by another user already, or the user who last checked out the item did not properly checked in the item. &#039;&#039;&#039;This is probably the most common scenario&#039;&#039;&#039; when dealing with items in the backend.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;isCheckedOut()&#039;&#039;&#039; returns FALSE in the following cases:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The item was not checked out by any user.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The item was checked out, but by the same user who checked it out (i.e the user with the ID we passed to isCheckedOut()).&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;checkin()&#039;&#039;&#039; will purge any checkout state that was applied to the item.&lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
In a typical situation, you will have an HTML form submitted by the user which will PHP will interpret for you as an associative array. The JRequest class in Joomla! has functions ready to assist with retrieving this data safely. Use JRequest::get(&#039;post&#039;) to retrieve all of the elements in the HTTP POST request as a sanitized array.&lt;br /&gt;
&lt;br /&gt;
Once you have this array, you can pass it into the bind() method of JTable. Doing this will match the associated items of the array with member variables of the class. In the following example, the array is retrieved from JRequest::get(&#039;post&#039;) and immediately passed into bind(). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;bind( JRequest::get( &#039;post&#039; ) )) {&lt;br /&gt;
	return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If bind() fails, you want to stop the application and explain the failure before your extension attempts to send the data. The raiseWarning() function of JError allows you to stop Joomla!, while the getError() function returns the error message stored in the JTable object.&lt;br /&gt;
&lt;br /&gt;
When binding succeeds and your object is ready, call the store() function. Again, if something goes wrong, stop the application and explain why. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;store()) {&lt;br /&gt;
	JError::raiseError(500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* If any member variables of your JTable object are null when store() is called, they are ignored by default. This allows you to update specific columns of your table, while leaving the others untouched. If you wish to override this behavior to ensure that all columns have a value, pass true into store().&lt;br /&gt;
* The JTable::bind() and JRequest::get() functions do not enforce data types. If you need a column to be a specific type (for instance, integer), you need to add this logic to your code before calling store().&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
To load a specific row of the database with JTable, pass the key into the load() member function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row-&amp;gt;load( $id );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This relies on the key column you specified in the second parameter of parent::__construct() when you extended JTable.&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
Like read(), delete() allows you to destroy a specific row in the table based on the key specified earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row-&amp;gt;delete( $id );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to delete multiple rows at once, you will need to write the query manually.&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
{{jfr summary|class=JTable|methods=yes}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
When properly extended, JTable gives you all of the basic functions you need for managing and retrieving records in a database table. Member functions take care of the rest when you add member variables, the table name, and the key column.&lt;br /&gt;
&lt;br /&gt;
[[Category:Archived version Joomla! 1.5]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5:Using_the_JTable_class&amp;diff=189575</id>
		<title>J1.5:Using the JTable class</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5:Using_the_JTable_class&amp;diff=189575"/>
		<updated>2015-06-08T11:29:40Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Using a JTable class extension */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is for {{JVer|1.5}} In Joomla! 1.5.&lt;br /&gt;
&lt;br /&gt;
== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The [http://api.joomla.org/1.5/Joomla-Framework/Table/JTable.html JTable] class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( &#039;#__recipes&#039;, &#039;id&#039;, $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with &#039;Table&#039;, then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table&#039;s name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than &#039;null&#039; as the default.&lt;br /&gt;
&lt;br /&gt;
An important thing to note here, is that the file containing your table class, has to be named the same as the class minus prefix in lowercase. So for this example, you would have to name your table class file &#039;recipes.php&#039;.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called &#039;Recipes&#039;, you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
You can use this functionallity just as well outside components, i.e. in plugins and modules. As a general rule you should avoid writing to the database from a module, and use plugins/components for this. Remember to use the built-in [[constants]] when linking to a custom path (outside the &#039;adminstrator/{com_yourcomponent}/tables&#039; folder).&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension&#039;s source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR . &#039;/components/com_recipes/tables&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an instance of the object, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row =&amp;amp; JTable::getInstance(&#039;recipes&#039;, &#039;Table&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If doesn&#039;t work use:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row =&amp;amp; JTable::getInstance(&#039;recipes&#039;, &#039;NAMEOFCOMPONENTTable&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(Where NAMEOFCOMPONENT is the name of the component that contais the table).&lt;br /&gt;
&lt;br /&gt;
Notice that the lowercase version of the suffix of your class name is used as the first parameter, with the prefix &#039;Table&#039; as the second. Also, the getInstance() member function of JTable returns the object by reference instead of value; use =&amp;amp; to enforce this. &lt;br /&gt;
&lt;br /&gt;
In a model class (extends JModel) you can also use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row =&amp;amp; $this-&amp;gt;getTable(&#039;recipes&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that if you have not used the standard naming convention, you can supply the class prefix as the optional second parameter.&lt;br /&gt;
&lt;br /&gt;
=== Checkout/Checkin ===&lt;br /&gt;
Common scenario is when multiple users are editing identical item (e.g article, category, user and etc) simultaneously, which in turn, may results in arbitrary data when saved by the users (depends on who last saved the item). Joomla! solves such cases of unknown modification ownership using Checkouts and Checkins in order to provide access only to one user at a time. For example, if one user began editing an article, then it is said that the article was &#039;&#039;&#039;checked out&#039;&#039;&#039; by the user, when finished working with the article (usually by closing it using a button), the article is &#039;&#039;&#039;checked in&#039;&#039;&#039; by the user. At the time the user was editing the article, no other user could edit the same article, unless manually specified by a user with the right permissions. You can find further explanation [http://help.joomla.org/content/view/202/153/ here].&lt;br /&gt;
The following examples demonstrate how Checkout/Checkin may be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Checkout&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// retrieve item identifier from request&lt;br /&gt;
$itemId  = JRequest::getInt(&#039;itemId&#039;);&lt;br /&gt;
// the user to test checkout with, could be any other user you want&lt;br /&gt;
$user     = JFactory::getUser();&lt;br /&gt;
&lt;br /&gt;
// load the item&#039;s data so we&#039;ll know with what item were dealing with&lt;br /&gt;
if (!$row-&amp;gt;load($itemId)) {&lt;br /&gt;
    return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// check out the item&lt;br /&gt;
if ($row-&amp;gt;checkout($user-&amp;gt;id)) {&lt;br /&gt;
    echo &#039;Item was checked out by the user.&#039;;&lt;br /&gt;
} else {&lt;br /&gt;
    return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;checkout()&#039;&#039;&#039; will signal the item was checked out by the user whom ID we provided as an argument to the method.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Checkin&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// retrieve item identifier from request&lt;br /&gt;
$itemId  = JRequest::getInt(&#039;itemId&#039;);&lt;br /&gt;
// the user to test checkout with, could be any other user you want&lt;br /&gt;
$user     = JFactory::getUser();&lt;br /&gt;
&lt;br /&gt;
// load the item&#039;s data so we&#039;ll know with what item were dealing with&lt;br /&gt;
if (!$row-&amp;gt;load($itemId)) {&lt;br /&gt;
    return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// check if the item was checked out, and if it does - whether or not it was checked out by the user&lt;br /&gt;
if($row-&amp;gt;isCheckedOut($user-&amp;gt;id)) {&lt;br /&gt;
    // check in the item&lt;br /&gt;
    if ($row-&amp;gt;checkin()) {&lt;br /&gt;
        echo &#039;The item was checked in, and can now be edited by other users.&#039;;&lt;br /&gt;
    } else {&lt;br /&gt;
        return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
We use &#039;&#039;&#039;isCheckedOut()&#039;&#039;&#039; to find out whether the item was checked out,  it returns TRUE in the following cases:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Item is empty (i.e no data was loaded to the item).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The item does not support checkout, which can be as a result of database design.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The supplied user ID does not match the ID of the user who checked out the item, meaning the item is probably being edited by another user already, or the user who last checked out the item did not properly checked in the item. &#039;&#039;&#039;This is probably the most common scenario&#039;&#039;&#039; when dealing with items in the backend.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;isCheckedOut()&#039;&#039;&#039; returns FALSE in the following cases:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The item was not checked out by any user.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The item was checked out, but by the same user who checked it out (i.e the user with the ID we passed to isCheckedOut()).&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;checkin()&#039;&#039;&#039; will purge any checkout state that was applied to the item.&lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
In a typical situation, you will have an HTML form submitted by the user which will PHP will interpret for you as an associative array. The JRequest class in Joomla! has functions ready to assist with retrieving this data safely. Use JRequest::get(&#039;post&#039;) to retrieve all of the elements in the HTTP POST request as a sanitized array.&lt;br /&gt;
&lt;br /&gt;
Once you have this array, you can pass it into the bind() method of JTable. Doing this will match the associated items of the array with member variables of the class. In the following example, the array is retrieved from JRequest::get(&#039;post&#039;) and immediately passed into bind(). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;bind( JRequest::get( &#039;post&#039; ) )) {&lt;br /&gt;
	return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If bind() fails, you want to stop the application and explain the failure before your extension attempts to send the data. The raiseWarning() function of JError allows you to stop Joomla!, while the getError() function returns the error message stored in the JTable object.&lt;br /&gt;
&lt;br /&gt;
When binding succeeds and your object is ready, call the store() function. Again, if something goes wrong, stop the application and explain why. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;store()) {&lt;br /&gt;
	JError::raiseError(500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* If any member variables of your JTable object are null when store() is called, they are ignored by default. This allows you to update specific columns of your table, while leaving the others untouched. If you wish to override this behavior to ensure that all columns have a value, pass true into store().&lt;br /&gt;
* The JTable::bind() and JRequest::get() functions do not enforce data types. If you need a column to be a specific type (for instance, integer), you need to add this logic to your code before calling store().&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
To load a specific row of the database with JTable, pass the key into the load() member function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row-&amp;gt;load( $id );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This relies on the key column you specified in the second parameter of parent::__construct() when you extended JTable.&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
Like read(), delete() allows you to destroy a specific row in the table based on the key specified earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$row-&amp;gt;delete( $id );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to delete multiple rows at once, you will need to write the query manually.&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
{{jfr summary|class=JTable|methods=yes}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
When properly extended, JTable gives you all of the basic functions you need for managing and retrieving records in a database table. Member functions take care of the rest when you add member variables, the table name, and the key column.&lt;br /&gt;
&lt;br /&gt;
[[Category:Archived version Joomla! 1.5]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla&amp;diff=180842</id>
		<title>J3.x:Creating a Plugin for Joomla</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla&amp;diff=180842"/>
		<updated>2015-05-15T16:30:13Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: remove text from die&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
series&amp;lt;/translate&amp;gt;}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The plugin structure for Joomla! 1.5 was very flexible and powerful. Not only can plugins be used to handle events triggered by the core application and extensions, but plugins can also be used to make third party extensions extensible and powerful. The main change from Joomla! 1.5 to the 2.5/3.x series was the change in the names of events.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
This How-To should provide you with the basics of what you need to know to develop your own plugin. Most plugins consist of just a single code file but to correctly install the plugin code it must be packaged into an installation file which can be processed by the Joomla! installer.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Creating the Installation File === &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
As with all extensions in Joomla, plugins are easily installed as a .zip file (.tar.gz is also supported) but a correctly formatted XML file must be included. As an example, here is the XML installation file for the categories search plugin.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;search&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;plg_search_categories&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Joomla! Project&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2005&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License version 2 or later; see LICENSE.txt&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;admin@joomla.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;www.joomla.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;PLG_SEARCH_CATEGORIES_XML_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;categories&amp;quot;&amp;gt;categories.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;languages&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
	&amp;lt;/languages&amp;gt;&lt;br /&gt;
	&amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_limit&amp;quot; type=&amp;quot;text&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					size=&amp;quot;5&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_content&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ALL_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_archived&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
As you can see, the system is similar to other Joomla! XML installation files. You only have to look out for the &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; entry in the &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt; tag and the extended information in the &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; tag. This information tells Joomla! into which folder to copy the file and to which group the plugin should be added.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
If you are creating a plugin that responds to existing core events, the &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; attribute would be changed to reflect the name of existing plugin folder for the event type you wish to augment. e.g. &amp;lt;code&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt;. See [[S:MyLanguage/Plugin/Events|Plugin/Events]] for a complete list of existing core event categories. In creating a new plugin to respond to core events it is important that your plugin&#039;s name is unique and does not conflict with any of the other plugins that may also be responding to the core event you wish to service as well.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
If you are creating a plugin to respond to non-core system events your choice for the &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; tag should be different than any of the existing core categories.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Tip&#039;&#039;&#039; If you add the attribute &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot;&amp;lt;/code&amp;gt; to the tag &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, this plugin can be installed without uninstalling an earlier version. All existing files will be overwritten, but old files will not be deleted.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Creating the Plugin === &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
The object-oriented way of writing plugins involves writing a subclass of [http://api.joomla.org/Joomla-Platform/Plugin/JPlugin.html JPlugin], a base class that implements the basic properties of plugins. In your methods, the following properties are available:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: the [[S:MyLanguage/Parameter|parameters]] set for this plugin by the administrator&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: the name of the plugin&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: the group (type) of the plugin&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: the db object (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: the application object (since {{JVer|3.1}})&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
In the following code example, &amp;lt;code&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/code&amp;gt; represents the group (type) of the plugin, and &amp;lt;code&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/code&amp;gt; represents its name. Note that class and function names in PHP are case-insensitive.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die;&lt;br /&gt;
&lt;br /&gt;
class plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation. Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var    boolean&lt;br /&gt;
	 * @since  3.1&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method with the same name as the event will be called automatically.&lt;br /&gt;
	 */&lt;br /&gt;
	 function &amp;lt;EventName&amp;gt;()&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access database and application objects and parameters via $this-&amp;gt;db,&lt;br /&gt;
		 * $this-&amp;gt;app and $this-&amp;gt;params respectively&lt;br /&gt;
		 */&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Using Plugins in Your Code === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Now that you&#039;ve created your plugin, you will probably want to call it in your code. You might not: the Joomla! core has a number of built-in events that you might want your plugin code to be registered to. In that case you don&#039;t need to do the following.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
If you want to trigger an event then you use code like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher = JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger( &#039;&amp;lt;EventName&amp;gt;&#039;, &amp;lt;ParameterArray&amp;gt; );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
It is important to note that the parameters have to be in an array. The plugin function itself will get the parameters as single values. The return value will consist of an array of return values from the different plugins (so it can also contain multilevel arrays).&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
If you are creating a plugin for a new, non-core event, remember to activate your plugin after you install it. Precede any reference to your new plugin with the &amp;lt;code&amp;gt;JPluginHelper::importPlugin()&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Migrating_a_Template_from_Joomla_1.5_to_3.x&amp;diff=179060</id>
		<title>Migrating a Template from Joomla 1.5 to 3.x</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Migrating_a_Template_from_Joomla_1.5_to_3.x&amp;diff=179060"/>
		<updated>2015-05-07T17:15:13Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: Changed to die;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
When considering a manual update to your 1.5 template there are a few considerations you need to think about.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
First, what skills do you need? To make template changes, minimally you need to be familiar with the basics of PHP, HTML, XML, CSS and possibly some Javascript. If you don’t have a basic grasp of these skills a lot of what you’ll be looking at will look foreign so either brush up on those skills or hire a professional.&lt;br /&gt;
&amp;lt;/translate&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Second, the extent that your template needs to change must be measured in terms of the new enhancements or design changes that have developed in planning your migration. Is the change going to take advantage of new Bootstrap framework styling that is available in Joomla 3? Or is it a strict move that mirrors the current site. While some of the changes that are new to Joomla 3 are mandatory ( meaning your template will not load ) others are enhancements and your template will load but might not look the way you want it to.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
For purposes of this document we will be assuming the simplest example and suggest a mirror image of the current 1.5 template. For more complex templates or for major enhancements you may need to do some research or hire someone who has more experience with templates.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Review the Basics of Templates == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Some things haven&#039;t changed. You still need to be familiar with the basics of a JoomlaTemplate: The folder directory structure is one of those things. Minimally at the root level you need 2 files: “index.php” and &amp;quot;templateDetails.xml&amp;quot; ( notice the case! ). Most templates include at least 2 folders: an images folder to hold all the graphics that your template uses and a folder for your css styling. More advanced templates might contain folders with names like these for example: “html” for component and module customization,  a “language” folder for custom language overrides, “javascript” to hold custom javascript routines.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Just be sure if the folder is listed in the XML file it exists in the template you upload to Joomla. If you declare a file in the xml then it must exist or your template will not load.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
One example of an improvement in versions greater than 1.5, is the dropping of the requirement that all the subfolder filenames be listed. For templates in Joomla 3, you simply list the folder name.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
For more information on the basics of a template see this link: [[S:MyLanguage/Creating a basic Joomla! template|Creating a basic Joomla! template]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== XML File Changes === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
What needs to change in the templateDetails.xml file ( Template Manifest File )&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The template manifest file provides the information Joomla needs to install your template. The XML manifest file has been almost completely modified since 1.5 so make sure you study up and are familiar with the basics and the modifications. Your template will not load if this file is not exactly right.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Document Reference Type Tag &amp;amp; the Install/Extension Tag ==== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
The XML Install tag is now an “extension” tag. Additionally, any reference in the DOCTYPE Tag  or version numbers now needs to refer to 3.0.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
The old lines are something like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE install PUBLIC &amp;quot;-//Joomla! 1.5//DTD template 1.0//EN&amp;quot; &amp;quot;http://dev.joomla.org/xml/1.5/template-install.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
This now needs to look like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE install PUBLIC &amp;quot;-//Joomla! 2.5//DTD template 1.0//EN&amp;quot; &amp;quot;http://www.joomla.org/xml/dtd/2.5/template-install.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;template&amp;quot; client=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Folder and File tags ==== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
This rule has always been true and still is: If you list the Filename or Folder in the XML it must exist in the uploaded template. This has not changed in Joomla 3. What did change is the 1.5 requirement that all the filenames in a folder be listed. Now you can refer to just the folder name. For example, previously in 1.5 your xml filenames were listed individually as follows:&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;images&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/arrow.png&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/arrow2.png&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/arrow3.png&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/author.gif&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/images&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
For a Joomla 3 template this statement suffices:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folder&amp;gt;images&amp;lt;/folder&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Module Tags ==== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
For 1.5, module positions were defined in the template. This has not changed. They still need to be listed.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Parameters ==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Parameters are an optional feature of templates that allow the template author to offer options for styling of the template in the Joomla Administrator. In Joomla 1.5 templates the parameters were listed in a &amp;quot;parameters.ini&amp;quot; file at the root level. This file has been eliminated and the parameters are now tags in the XML file.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Here is an example of the contents of a parameters.ini file:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
colorVariation=blue&lt;br /&gt;
backgroundVariation=blue&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
To define the parameters in Joomla 3 you must add these lines to the XML file:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
		     &amp;lt;fieldset name=&amp;quot;advanced&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;colorVariation&amp;quot; class=&amp;quot;&amp;quot; type=&amp;quot;color&amp;quot; default=&amp;quot;#08C&amp;quot;&lt;br /&gt;
					label=&amp;quot;TPL PROTOSTAR COLOR LABEL&amp;quot;&lt;br /&gt;
					description=&amp;quot;TPL PROTOSTAR COLOR DESC&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;backgroundVariation&amp;quot; class=&amp;quot;&amp;quot; type=&amp;quot;color&amp;quot; default=&amp;quot;#F4F6F7&amp;quot;&lt;br /&gt;
					label=&amp;quot;TPL PROTOSTAR BACKGROUND COLOR LABEL&amp;quot;&lt;br /&gt;
					description=&amp;quot;TPL PROTOSTAR BACKGROUND COLOR DESC&amp;quot; /&amp;gt;&lt;br /&gt;
		    &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
     &amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
For more complex parameter XML tags you may have to refer to more complex documentation. Also note that the index.php that reference the parameter variables will also need to be changed.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
See these links for more information about: &lt;br /&gt;
*[[S:MyLanguage/Standard form field and parameter types|Standard form field and parameter types]]&lt;br /&gt;
*[[S:MyLanguage/Creating a basic templateDetails.xml file|Creating a basic templateDetails.xml file]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== index.php file === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
What needs to change in the index.php file?&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;Index.php&amp;lt;/tt&amp;gt; files are as widely varied as there are designers and programmers that write them. The index.php in a template for Joomla 3 is the compilation of the many versions that came before including 1.5, 1.6, 1.7,2.5, etc. This template file is the &amp;quot;bloodstream&amp;quot; providing life to your skin, and it has access to every piece of Joomla&#039;s framework available and can use these pieces to manipulate what your site is going to look like to your users. This has always been true and still is. Template designers and programmers have taken advantage of this fact in previous versions and will continue to, so this file needs the most careful research and planning.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Changes that were made to the framework for Joomla 3 may cause problems to some older templates and when rendered could produce errors. Other templates may not have referenced the same piece of framework at all and work fine with almost no changes. For example, a 1.5 template that accesses the variable value &amp;quot;frontpage&amp;quot; to determine if they are on the home page or not. This doesn&#039;t work in Joomla 3. (See table below for code ) If a template referenced a changed piece or not will be the determining factor of how many issues you will have when trying to implement your updated template.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Be prepared to make some changes based on “best practices”. Although your index.php may function, it needs to be secure and execute efficiently. Consider that every page served to your audience uses the index.php file so make sure you are familiar with the recommended methods for the Joomla framework and building blocks for a template. A thorough study of the index.php file in both the Protostar Template and the Beez Template that is included with the Joomla 3 installation package can provide examples and best practices for more complex templates.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Guidelines ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Here are some guidelines for your Joomla 3 template index.php file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
1. Again, some things haven&#039;t changed: all index.php templates need to start with this statement:&lt;br /&gt;
&amp;lt;/translate&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php defined( &#039;_JEXEC&#039; ) or die;?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
True for Joomla 1.5 and still true for Joomla 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
2. For Joomla 3 the recommended DOCTYPE ( Document Type Declaration ) should be HTML5 as this is used throughout Joomla 3. Here is an example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
    &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;en&amp;quot; lang=&amp;quot;en&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
3. To make use of Joomla 3&#039;s application framework:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
In 1.5 access to the framework was done through the $mainframe variable. You might see something like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php require_once (‘includes/../framework.php&#039; );&lt;br /&gt;
$mainframe =&amp;amp; JFactory::getApplication(&#039;site&#039;); ?&amp;gt;&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
:replace it with this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $app = Jfactory::getApplication();?&amp;gt;&lt;br /&gt;
      &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
4. To retrieve the Heading code use this statement directly beneath your heading tag and follow it with your stylesheets. This has not changed with the Joomla 3 but always bears repeating:&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
5. To retrieve the sitename in 1.5 you might see this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $mainframe-&amp;gt;getCfg(&#039;sitename&#039;);?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
For Joomla 3 use this code:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php  $app-&amp;gt;getCfg(&#039;sitename&#039;);?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
6. Error Codes and Messages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
A better methodology for retrieving error codes is in place for Joomla 3. You might see this in your 1.5 template:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;code; ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
:replace it with this Joomla 3 convention:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;getCode(); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
For error messages, this is a typical 1.5 statement:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;message; ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
:Replace it with this statement for Joomla 3&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;getMessage(); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
7. To access the template parameters in replace code that looks like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $color = $this-&amp;gt;params-&amp;gt;get(&#039;colorVariation&#039;); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
:with this recommended methodology:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $app = Jfactory::getApplication();&lt;br /&gt;
$template = $app-&amp;gt;getTemplate(true);&lt;br /&gt;
$params = $template-&amp;gt;params;&lt;br /&gt;
$color = $params-&amp;gt;get(&#039;colorVariation&#039;); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
This will work equally well as an example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $app = Jfactory::getApplication();&lt;br /&gt;
$params = $app-&amp;gt;getParams();&lt;br /&gt;
$color = $params-&amp;gt;get(&#039;colorVariation&#039;); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
8. Access to the Global Document Object classes in the index.php template file is typically coded this way:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $doc = Jfactory::getDocument(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
This statement is the same in Joomla 3. However, it is valid to note that this statement is not necessary to access the page classes so it might be there or it might not depending on the original programmer. &lt;br /&gt;
For example: given the code:&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $doc =&amp;amp; JFactory::getDocument();&lt;br /&gt;
echo &#039;Current title is: &#039; . $doc-&amp;gt;getTitle(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
is equivalent to this code:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php echo &#039;Current title is: &#039; . $this-&amp;gt;getTitle(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== In Summary ==== &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Template_Code_Comparison_of_J1.5_and_J3.x/&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Bootstrap Styling and Joomla 3 == &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
To incorporate the new Bootstrap Styling ( 2.3.2 ) into your updated template, use these three lines at the very top of your index.php, replacing the one line php block.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php defined( &#039;_JEXEC&#039; ) or die;&lt;br /&gt;
JHtml::_(&#039;bootstrap.framework&#039;);&lt;br /&gt;
JHtml::_(&#039;bootstrap.loadCss&#039;, true, $this-&amp;gt;direction); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
After these statements, you can add Bootstrap (2.3.2 ) classes wherever you need to and take advantage of the Bootstrap Framework offered in Joomla 3.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== This bears repeating... == &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
There are many variations of coding practices and your success with translating a 1.5 template into a template fit for Joomla 3 depends on the complexity of the old and new design, and the original coding. Your template might have been previously converted from Joomla 1.0! Your best strategy is to research the documentation available and become familiar with the Protostar and Beez templates in Joomla 3. Techniques for coding and structuring in these 2 templates have undergone the scrutiny of the Joomla community and volunteer developers – the true experts on how to best make your template secure and function reliably.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== References == &amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
*[[S:MyLanguage/Creating a basic Joomla! template|Creating a basic Joomla! template]]&lt;br /&gt;
*[[S:MyLanguage/Creating a basic index file|Creating a basic index file]]&lt;br /&gt;
*[[S:MyLanguage/Creating a basic templateDetails.xml file|Creating a basic templateDetails.xml file]]&lt;br /&gt;
*[[S:MyLanguage/Understanding Joomla! templates|Understanding Joomla! templates]]&lt;br /&gt;
*[[S:MyLanguage/Standard form field and parameter types|Standard form field and parameter types]]&lt;br /&gt;
*[[S:MyLanguage/Talk:Creating a basic Joomla! template|Talk:Creating a basic Joomla! template]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Migration|Migration]]&lt;br /&gt;
[[Category:Template Development|Template Development]]&lt;br /&gt;
[[Category:Tutorials|Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Migrating_a_Template_from_Joomla_1.5_to_3.x&amp;diff=179059</id>
		<title>Migrating a Template from Joomla 1.5 to 3.x</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Migrating_a_Template_from_Joomla_1.5_to_3.x&amp;diff=179059"/>
		<updated>2015-05-07T17:08:25Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: $this-&amp;gt;params is different from $params&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
When considering a manual update to your 1.5 template there are a few considerations you need to think about.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
First, what skills do you need? To make template changes, minimally you need to be familiar with the basics of PHP, HTML, XML, CSS and possibly some Javascript. If you don’t have a basic grasp of these skills a lot of what you’ll be looking at will look foreign so either brush up on those skills or hire a professional.&lt;br /&gt;
&amp;lt;/translate&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Second, the extent that your template needs to change must be measured in terms of the new enhancements or design changes that have developed in planning your migration. Is the change going to take advantage of new Bootstrap framework styling that is available in Joomla 3? Or is it a strict move that mirrors the current site. While some of the changes that are new to Joomla 3 are mandatory ( meaning your template will not load ) others are enhancements and your template will load but might not look the way you want it to.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
For purposes of this document we will be assuming the simplest example and suggest a mirror image of the current 1.5 template. For more complex templates or for major enhancements you may need to do some research or hire someone who has more experience with templates.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Review the Basics of Templates == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Some things haven&#039;t changed. You still need to be familiar with the basics of a JoomlaTemplate: The folder directory structure is one of those things. Minimally at the root level you need 2 files: “index.php” and &amp;quot;templateDetails.xml&amp;quot; ( notice the case! ). Most templates include at least 2 folders: an images folder to hold all the graphics that your template uses and a folder for your css styling. More advanced templates might contain folders with names like these for example: “html” for component and module customization,  a “language” folder for custom language overrides, “javascript” to hold custom javascript routines.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Just be sure if the folder is listed in the XML file it exists in the template you upload to Joomla. If you declare a file in the xml then it must exist or your template will not load.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
One example of an improvement in versions greater than 1.5, is the dropping of the requirement that all the subfolder filenames be listed. For templates in Joomla 3, you simply list the folder name.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
For more information on the basics of a template see this link: [[S:MyLanguage/Creating a basic Joomla! template|Creating a basic Joomla! template]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== XML File Changes === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
What needs to change in the templateDetails.xml file ( Template Manifest File )&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The template manifest file provides the information Joomla needs to install your template. The XML manifest file has been almost completely modified since 1.5 so make sure you study up and are familiar with the basics and the modifications. Your template will not load if this file is not exactly right.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Document Reference Type Tag &amp;amp; the Install/Extension Tag ==== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
The XML Install tag is now an “extension” tag. Additionally, any reference in the DOCTYPE Tag  or version numbers now needs to refer to 3.0.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
The old lines are something like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE install PUBLIC &amp;quot;-//Joomla! 1.5//DTD template 1.0//EN&amp;quot; &amp;quot;http://dev.joomla.org/xml/1.5/template-install.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
This now needs to look like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE install PUBLIC &amp;quot;-//Joomla! 2.5//DTD template 1.0//EN&amp;quot; &amp;quot;http://www.joomla.org/xml/dtd/2.5/template-install.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;template&amp;quot; client=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Folder and File tags ==== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
This rule has always been true and still is: If you list the Filename or Folder in the XML it must exist in the uploaded template. This has not changed in Joomla 3. What did change is the 1.5 requirement that all the filenames in a folder be listed. Now you can refer to just the folder name. For example, previously in 1.5 your xml filenames were listed individually as follows:&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;images&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/arrow.png&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/arrow2.png&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/arrow3.png&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/author.gif&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/images&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
For a Joomla 3 template this statement suffices:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folder&amp;gt;images&amp;lt;/folder&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Module Tags ==== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
For 1.5, module positions were defined in the template. This has not changed. They still need to be listed.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Parameters ==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Parameters are an optional feature of templates that allow the template author to offer options for styling of the template in the Joomla Administrator. In Joomla 1.5 templates the parameters were listed in a &amp;quot;parameters.ini&amp;quot; file at the root level. This file has been eliminated and the parameters are now tags in the XML file.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Here is an example of the contents of a parameters.ini file:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
colorVariation=blue&lt;br /&gt;
backgroundVariation=blue&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
To define the parameters in Joomla 3 you must add these lines to the XML file:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
		     &amp;lt;fieldset name=&amp;quot;advanced&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;colorVariation&amp;quot; class=&amp;quot;&amp;quot; type=&amp;quot;color&amp;quot; default=&amp;quot;#08C&amp;quot;&lt;br /&gt;
					label=&amp;quot;TPL PROTOSTAR COLOR LABEL&amp;quot;&lt;br /&gt;
					description=&amp;quot;TPL PROTOSTAR COLOR DESC&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;backgroundVariation&amp;quot; class=&amp;quot;&amp;quot; type=&amp;quot;color&amp;quot; default=&amp;quot;#F4F6F7&amp;quot;&lt;br /&gt;
					label=&amp;quot;TPL PROTOSTAR BACKGROUND COLOR LABEL&amp;quot;&lt;br /&gt;
					description=&amp;quot;TPL PROTOSTAR BACKGROUND COLOR DESC&amp;quot; /&amp;gt;&lt;br /&gt;
		    &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
     &amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
For more complex parameter XML tags you may have to refer to more complex documentation. Also note that the index.php that reference the parameter variables will also need to be changed.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
See these links for more information about: &lt;br /&gt;
*[[S:MyLanguage/Standard form field and parameter types|Standard form field and parameter types]]&lt;br /&gt;
*[[S:MyLanguage/Creating a basic templateDetails.xml file|Creating a basic templateDetails.xml file]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== index.php file === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
What needs to change in the index.php file?&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;Index.php&amp;lt;/tt&amp;gt; files are as widely varied as there are designers and programmers that write them. The index.php in a template for Joomla 3 is the compilation of the many versions that came before including 1.5, 1.6, 1.7,2.5, etc. This template file is the &amp;quot;bloodstream&amp;quot; providing life to your skin, and it has access to every piece of Joomla&#039;s framework available and can use these pieces to manipulate what your site is going to look like to your users. This has always been true and still is. Template designers and programmers have taken advantage of this fact in previous versions and will continue to, so this file needs the most careful research and planning.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Changes that were made to the framework for Joomla 3 may cause problems to some older templates and when rendered could produce errors. Other templates may not have referenced the same piece of framework at all and work fine with almost no changes. For example, a 1.5 template that accesses the variable value &amp;quot;frontpage&amp;quot; to determine if they are on the home page or not. This doesn&#039;t work in Joomla 3. (See table below for code ) If a template referenced a changed piece or not will be the determining factor of how many issues you will have when trying to implement your updated template.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Be prepared to make some changes based on “best practices”. Although your index.php may function, it needs to be secure and execute efficiently. Consider that every page served to your audience uses the index.php file so make sure you are familiar with the recommended methods for the Joomla framework and building blocks for a template. A thorough study of the index.php file in both the Protostar Template and the Beez Template that is included with the Joomla 3 installation package can provide examples and best practices for more complex templates.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Guidelines ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Here are some guidelines for your Joomla 3 template index.php file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
1. Again, some things haven&#039;t changed: all index.php templates need to start with this statement:&lt;br /&gt;
&amp;lt;/translate&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php defined( &#039;_JEXEC&#039; ) or die;?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
True for Joomla 1.5 and still true for Joomla 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
2. For Joomla 3 the recommended DOCTYPE ( Document Type Declaration ) should be HTML5 as this is used throughout Joomla 3. Here is an example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
    &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;en&amp;quot; lang=&amp;quot;en&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
3. To make use of Joomla 3&#039;s application framework:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
In 1.5 access to the framework was done through the $mainframe variable. You might see something like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php require_once (‘includes/../framework.php&#039; );&lt;br /&gt;
$mainframe =&amp;amp; JFactory::getApplication(&#039;site&#039;); ?&amp;gt;&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
:replace it with this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $app = Jfactory::getApplication();?&amp;gt;&lt;br /&gt;
      &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
4. To retrieve the Heading code use this statement directly beneath your heading tag and follow it with your stylesheets. This has not changed with the Joomla 3 but always bears repeating:&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
5. To retrieve the sitename in 1.5 you might see this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $mainframe-&amp;gt;getCfg(&#039;sitename&#039;);?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
For Joomla 3 use this code:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php  $app-&amp;gt;getCfg(&#039;sitename&#039;);?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
6. Error Codes and Messages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
A better methodology for retrieving error codes is in place for Joomla 3. You might see this in your 1.5 template:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;code; ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
:replace it with this Joomla 3 convention:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;getCode(); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
For error messages, this is a typical 1.5 statement:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;message; ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
:Replace it with this statement for Joomla 3&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;getMessage(); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
7. To access the template parameters in replace code that looks like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $color = $this-&amp;gt;params-&amp;gt;get(&#039;colorVariation&#039;); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
:with this recommended methodology:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $app = Jfactory::getApplication();&lt;br /&gt;
$template = $app-&amp;gt;getTemplate(true);&lt;br /&gt;
$params = $template-&amp;gt;params;&lt;br /&gt;
$color = $params-&amp;gt;get(&#039;colorVariation&#039;); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
This will work equally well as an example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $app = Jfactory::getApplication();&lt;br /&gt;
$params = $app-&amp;gt;getParams();&lt;br /&gt;
$color = $params-&amp;gt;get(&#039;colorVariation&#039;); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
8. Access to the Global Document Object classes in the index.php template file is typically coded this way:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $doc = Jfactory::getDocument(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
This statement is the same in Joomla 3. However, it is valid to note that this statement is not necessary to access the page classes so it might be there or it might not depending on the original programmer. &lt;br /&gt;
For example: given the code:&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $doc =&amp;amp; JFactory::getDocument();&lt;br /&gt;
echo &#039;Current title is: &#039; . $doc-&amp;gt;getTitle(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
is equivalent to this code:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php echo &#039;Current title is: &#039; . $this-&amp;gt;getTitle(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== In Summary ==== &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Template_Code_Comparison_of_J1.5_and_J3.x/&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Bootstrap Styling and Joomla 3 == &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
To incorporate the new Bootstrap Styling ( 2.3.2 ) into your updated template, use these three lines at the very top of your index.php, replacing the one line php block.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php defined( &#039;_JEXEC&#039; ) or die(&#039;Restricted access&#039;);&lt;br /&gt;
JHtml::_(&#039;bootstrap.framework&#039;);&lt;br /&gt;
JHtml::_(&#039;bootstrap.loadCss&#039;, true, $this-&amp;gt;direction); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
After these statements, you can add Bootstrap (2.3.2 ) classes wherever you need to and take advantage of the Bootstrap Framework offered in Joomla 3.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== This bears repeating... == &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
There are many variations of coding practices and your success with translating a 1.5 template into a template fit for Joomla 3 depends on the complexity of the old and new design, and the original coding. Your template might have been previously converted from Joomla 1.0! Your best strategy is to research the documentation available and become familiar with the Protostar and Beez templates in Joomla 3. Techniques for coding and structuring in these 2 templates have undergone the scrutiny of the Joomla community and volunteer developers – the true experts on how to best make your template secure and function reliably.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== References == &amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
*[[S:MyLanguage/Creating a basic Joomla! template|Creating a basic Joomla! template]]&lt;br /&gt;
*[[S:MyLanguage/Creating a basic index file|Creating a basic index file]]&lt;br /&gt;
*[[S:MyLanguage/Creating a basic templateDetails.xml file|Creating a basic templateDetails.xml file]]&lt;br /&gt;
*[[S:MyLanguage/Understanding Joomla! templates|Understanding Joomla! templates]]&lt;br /&gt;
*[[S:MyLanguage/Standard form field and parameter types|Standard form field and parameter types]]&lt;br /&gt;
*[[S:MyLanguage/Talk:Creating a basic Joomla! template|Talk:Creating a basic Joomla! template]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Migration|Migration]]&lt;br /&gt;
[[Category:Template Development|Template Development]]&lt;br /&gt;
[[Category:Tutorials|Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Migrating_a_Template_from_Joomla_1.5_to_3.x&amp;diff=179058</id>
		<title>Migrating a Template from Joomla 1.5 to 3.x</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Migrating_a_Template_from_Joomla_1.5_to_3.x&amp;diff=179058"/>
		<updated>2015-05-07T16:56:13Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: Changed to die;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
When considering a manual update to your 1.5 template there are a few considerations you need to think about.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
First, what skills do you need? To make template changes, minimally you need to be familiar with the basics of PHP, HTML, XML, CSS and possibly some Javascript. If you don’t have a basic grasp of these skills a lot of what you’ll be looking at will look foreign so either brush up on those skills or hire a professional.&lt;br /&gt;
&amp;lt;/translate&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Second, the extent that your template needs to change must be measured in terms of the new enhancements or design changes that have developed in planning your migration. Is the change going to take advantage of new Bootstrap framework styling that is available in Joomla 3? Or is it a strict move that mirrors the current site. While some of the changes that are new to Joomla 3 are mandatory ( meaning your template will not load ) others are enhancements and your template will load but might not look the way you want it to.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
For purposes of this document we will be assuming the simplest example and suggest a mirror image of the current 1.5 template. For more complex templates or for major enhancements you may need to do some research or hire someone who has more experience with templates.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Review the Basics of Templates == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Some things haven&#039;t changed. You still need to be familiar with the basics of a JoomlaTemplate: The folder directory structure is one of those things. Minimally at the root level you need 2 files: “index.php” and &amp;quot;templateDetails.xml&amp;quot; ( notice the case! ). Most templates include at least 2 folders: an images folder to hold all the graphics that your template uses and a folder for your css styling. More advanced templates might contain folders with names like these for example: “html” for component and module customization,  a “language” folder for custom language overrides, “javascript” to hold custom javascript routines.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Just be sure if the folder is listed in the XML file it exists in the template you upload to Joomla. If you declare a file in the xml then it must exist or your template will not load.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
One example of an improvement in versions greater than 1.5, is the dropping of the requirement that all the subfolder filenames be listed. For templates in Joomla 3, you simply list the folder name.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
For more information on the basics of a template see this link: [[S:MyLanguage/Creating a basic Joomla! template|Creating a basic Joomla! template]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== XML File Changes === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
What needs to change in the templateDetails.xml file ( Template Manifest File )&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The template manifest file provides the information Joomla needs to install your template. The XML manifest file has been almost completely modified since 1.5 so make sure you study up and are familiar with the basics and the modifications. Your template will not load if this file is not exactly right.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Document Reference Type Tag &amp;amp; the Install/Extension Tag ==== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
The XML Install tag is now an “extension” tag. Additionally, any reference in the DOCTYPE Tag  or version numbers now needs to refer to 3.0.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
The old lines are something like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE install PUBLIC &amp;quot;-//Joomla! 1.5//DTD template 1.0//EN&amp;quot; &amp;quot;http://dev.joomla.org/xml/1.5/template-install.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
This now needs to look like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE install PUBLIC &amp;quot;-//Joomla! 2.5//DTD template 1.0//EN&amp;quot; &amp;quot;http://www.joomla.org/xml/dtd/2.5/template-install.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;template&amp;quot; client=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Folder and File tags ==== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
This rule has always been true and still is: If you list the Filename or Folder in the XML it must exist in the uploaded template. This has not changed in Joomla 3. What did change is the 1.5 requirement that all the filenames in a folder be listed. Now you can refer to just the folder name. For example, previously in 1.5 your xml filenames were listed individually as follows:&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;images&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/arrow.png&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/arrow2.png&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/arrow3.png&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;filename&amp;gt;images/author.gif&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/images&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
For a Joomla 3 template this statement suffices:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folder&amp;gt;images&amp;lt;/folder&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Module Tags ==== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
For 1.5, module positions were defined in the template. This has not changed. They still need to be listed.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Parameters ==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Parameters are an optional feature of templates that allow the template author to offer options for styling of the template in the Joomla Administrator. In Joomla 1.5 templates the parameters were listed in a &amp;quot;parameters.ini&amp;quot; file at the root level. This file has been eliminated and the parameters are now tags in the XML file.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Here is an example of the contents of a parameters.ini file:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
colorVariation=blue&lt;br /&gt;
backgroundVariation=blue&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
To define the parameters in Joomla 3 you must add these lines to the XML file:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
		     &amp;lt;fieldset name=&amp;quot;advanced&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;colorVariation&amp;quot; class=&amp;quot;&amp;quot; type=&amp;quot;color&amp;quot; default=&amp;quot;#08C&amp;quot;&lt;br /&gt;
					label=&amp;quot;TPL PROTOSTAR COLOR LABEL&amp;quot;&lt;br /&gt;
					description=&amp;quot;TPL PROTOSTAR COLOR DESC&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;backgroundVariation&amp;quot; class=&amp;quot;&amp;quot; type=&amp;quot;color&amp;quot; default=&amp;quot;#F4F6F7&amp;quot;&lt;br /&gt;
					label=&amp;quot;TPL PROTOSTAR BACKGROUND COLOR LABEL&amp;quot;&lt;br /&gt;
					description=&amp;quot;TPL PROTOSTAR BACKGROUND COLOR DESC&amp;quot; /&amp;gt;&lt;br /&gt;
		    &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
     &amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
For more complex parameter XML tags you may have to refer to more complex documentation. Also note that the index.php that reference the parameter variables will also need to be changed.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
See these links for more information about: &lt;br /&gt;
*[[S:MyLanguage/Standard form field and parameter types|Standard form field and parameter types]]&lt;br /&gt;
*[[S:MyLanguage/Creating a basic templateDetails.xml file|Creating a basic templateDetails.xml file]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== index.php file === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
What needs to change in the index.php file?&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;Index.php&amp;lt;/tt&amp;gt; files are as widely varied as there are designers and programmers that write them. The index.php in a template for Joomla 3 is the compilation of the many versions that came before including 1.5, 1.6, 1.7,2.5, etc. This template file is the &amp;quot;bloodstream&amp;quot; providing life to your skin, and it has access to every piece of Joomla&#039;s framework available and can use these pieces to manipulate what your site is going to look like to your users. This has always been true and still is. Template designers and programmers have taken advantage of this fact in previous versions and will continue to, so this file needs the most careful research and planning.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Changes that were made to the framework for Joomla 3 may cause problems to some older templates and when rendered could produce errors. Other templates may not have referenced the same piece of framework at all and work fine with almost no changes. For example, a 1.5 template that accesses the variable value &amp;quot;frontpage&amp;quot; to determine if they are on the home page or not. This doesn&#039;t work in Joomla 3. (See table below for code ) If a template referenced a changed piece or not will be the determining factor of how many issues you will have when trying to implement your updated template.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Be prepared to make some changes based on “best practices”. Although your index.php may function, it needs to be secure and execute efficiently. Consider that every page served to your audience uses the index.php file so make sure you are familiar with the recommended methods for the Joomla framework and building blocks for a template. A thorough study of the index.php file in both the Protostar Template and the Beez Template that is included with the Joomla 3 installation package can provide examples and best practices for more complex templates.&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Guidelines ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Here are some guidelines for your Joomla 3 template index.php file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
1. Again, some things haven&#039;t changed: all index.php templates need to start with this statement:&lt;br /&gt;
&amp;lt;/translate&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php defined( &#039;_JEXEC&#039; ) or die;?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
True for Joomla 1.5 and still true for Joomla 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
2. For Joomla 3 the recommended DOCTYPE ( Document Type Declaration ) should be HTML5 as this is used throughout Joomla 3. Here is an example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
    &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;en&amp;quot; lang=&amp;quot;en&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
3. To make use of Joomla 3&#039;s application framework:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
In 1.5 access to the framework was done through the $mainframe variable. You might see something like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php require_once (‘includes/../framework.php&#039; );&lt;br /&gt;
$mainframe =&amp;amp; JFactory::getApplication(&#039;site&#039;); ?&amp;gt;&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
:replace it with this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $app = Jfactory::getApplication();?&amp;gt;&lt;br /&gt;
      &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
4. To retrieve the Heading code use this statement directly beneath your heading tag and follow it with your stylesheets. This has not changed with the Joomla 3 but always bears repeating:&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
5. To retrieve the sitename in 1.5 you might see this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $mainframe-&amp;gt;getCfg(&#039;sitename&#039;);?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
For Joomla 3 use this code:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php  $app-&amp;gt;getCfg(&#039;sitename&#039;);?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
6. Error Codes and Messages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
A better methodology for retrieving error codes is in place for Joomla 3. You might see this in your 1.5 template:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;code; ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
:replace it with this Joomla 3 convention:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;getCode(); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
For error messages, this is a typical 1.5 statement:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;message; ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
:Replace it with this statement for Joomla 3&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;error-&amp;gt;getMessage(); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
7. To access the template parameters in replace code that looks like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $color = $this-&amp;gt;params-&amp;gt;get(&#039;colorVariation&#039;); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
:with this recommended methodology:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $app = Jfactory::getApplication();&lt;br /&gt;
$template = $app-&amp;gt;getTemplate(true);&lt;br /&gt;
$params = $template-&amp;gt;params;&lt;br /&gt;
$color = $params-&amp;gt;get(&#039;colorVariation&#039;); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
This will work equally well as an example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $app = Jfactory::getApplication();&lt;br /&gt;
$params = $app-&amp;gt;getParams();&lt;br /&gt;
$color = $this-&amp;gt;params-&amp;gt;get(&#039;colorVariation&#039;); ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
8. Access to the Global Document Object classes in the index.php template file is typically coded this way:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $doc = Jfactory::getDocument(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
This statement is the same in Joomla 3. However, it is valid to note that this statement is not necessary to access the page classes so it might be there or it might not depending on the original programmer. &lt;br /&gt;
For example: given the code:&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $doc =&amp;amp; JFactory::getDocument();&lt;br /&gt;
echo &#039;Current title is: &#039; . $doc-&amp;gt;getTitle(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
is equivalent to this code:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php echo &#039;Current title is: &#039; . $this-&amp;gt;getTitle(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== In Summary ==== &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Template_Code_Comparison_of_J1.5_and_J3.x/&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Bootstrap Styling and Joomla 3 == &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
To incorporate the new Bootstrap Styling ( 2.3.2 ) into your updated template, use these three lines at the very top of your index.php, replacing the one line php block.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php defined( &#039;_JEXEC&#039; ) or die(&#039;Restricted access&#039;);&lt;br /&gt;
JHtml::_(&#039;bootstrap.framework&#039;);&lt;br /&gt;
JHtml::_(&#039;bootstrap.loadCss&#039;, true, $this-&amp;gt;direction); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
After these statements, you can add Bootstrap (2.3.2 ) classes wherever you need to and take advantage of the Bootstrap Framework offered in Joomla 3.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== This bears repeating... == &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
There are many variations of coding practices and your success with translating a 1.5 template into a template fit for Joomla 3 depends on the complexity of the old and new design, and the original coding. Your template might have been previously converted from Joomla 1.0! Your best strategy is to research the documentation available and become familiar with the Protostar and Beez templates in Joomla 3. Techniques for coding and structuring in these 2 templates have undergone the scrutiny of the Joomla community and volunteer developers – the true experts on how to best make your template secure and function reliably.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== References == &amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
*[[S:MyLanguage/Creating a basic Joomla! template|Creating a basic Joomla! template]]&lt;br /&gt;
*[[S:MyLanguage/Creating a basic index file|Creating a basic index file]]&lt;br /&gt;
*[[S:MyLanguage/Creating a basic templateDetails.xml file|Creating a basic templateDetails.xml file]]&lt;br /&gt;
*[[S:MyLanguage/Understanding Joomla! templates|Understanding Joomla! templates]]&lt;br /&gt;
*[[S:MyLanguage/Standard form field and parameter types|Standard form field and parameter types]]&lt;br /&gt;
*[[S:MyLanguage/Talk:Creating a basic Joomla! template|Talk:Creating a basic Joomla! template]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Migration|Migration]]&lt;br /&gt;
[[Category:Template Development|Template Development]]&lt;br /&gt;
[[Category:Tutorials|Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Using_Tags_in_an_Extension&amp;diff=177931</id>
		<title>J3.x:Using Tags in an Extension</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Using_Tags_in_an_Extension&amp;diff=177931"/>
		<updated>2015-05-03T08:23:27Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Introduction */  typo: one be too many&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{copyedit}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla&#039;s tagging system is used in all core content extensions and  is designed to be easy to integrate into other extensions that use standard Joomla design patterns. &lt;br /&gt;
&lt;br /&gt;
Using tags in an extension is fairly straightforward. It requires these changes to a typical extension:&lt;br /&gt;
&lt;br /&gt;
* Register a &#039;Content type&#039; for the extension view(s)&lt;br /&gt;
* Add &#039;Observer methods&#039; to the extension table class(es)&lt;br /&gt;
* Add &#039;Tag fields&#039; to the extension edit forms&lt;br /&gt;
* Add &#039;Tag display&#039; code to the extension view files &lt;br /&gt;
* Optionally, add a batch tagging method to the extension administration&lt;br /&gt;
&lt;br /&gt;
== Register a content type for each view ==&lt;br /&gt;
&lt;br /&gt;
In Joomla! 3 content types e.g. articles, weblinks, contacts, . . . are registered in the &amp;lt;tt&amp;gt;#__content_types&amp;lt;/tt&amp;gt; table with a separate record for each content view e.g. article, weblink, article category, weblink category, . . .&lt;br /&gt;
&lt;br /&gt;
Your extension installer needs to create a new record for each view.&lt;br /&gt;
&lt;br /&gt;
Here is the structure of the &amp;lt;tt&amp;gt;#__content_types&amp;lt;/tt&amp;gt; table; each column is described in the following sections.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column name !! Column type !! Purpose &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;type_id&amp;lt;/tt&amp;gt; || int(10) || Record key&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;type_title&amp;lt;/tt&amp;gt;|| varchar(255)|| Type title e.g. &amp;lt;tt&amp;gt;Article&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;type_alias&amp;lt;/tt&amp;gt; || varchar(255)|| Type alias e.g. &amp;lt;tt&amp;gt;com_content.article&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;table&amp;lt;/tt&amp;gt; || varchar(255)|| Information about the Table class&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt; || text || Not currently used&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;field_mappings&amp;lt;/tt&amp;gt; || text || Maps the table column names to standard Joomla! names &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;router&amp;lt;/tt&amp;gt; || varchar(255)|| Optional: name of a router method&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;content_history_options&amp;lt;/tt&amp;gt; || varchar(5120)|| Optional: ????&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===type_id===&lt;br /&gt;
This is the auto-incremented record key, nothing to be done here.&lt;br /&gt;
&lt;br /&gt;
===type_title===&lt;br /&gt;
The title for your Content Type e.g. Article, Contact, Weblink,  &lt;br /&gt;
You can do this either using sql or postflight by creating an instance of JTableContenttype. Don&#039;t forget a category type if you use the Joomla categories API.&lt;br /&gt;
&lt;br /&gt;
===type_alias===&lt;br /&gt;
A string identifying the component and view (that would be in the page request, typically matching the model name) e.g. &amp;lt;tt&amp;gt;com_contact.contact&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;com_weblinks.weblink&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===table===&lt;br /&gt;
You need to identify which tables used by your component contain records to be tagged. For example the &#039;Contact&#039; view of the Contacts component uses &amp;lt;tt&amp;gt;#__contact_details&amp;lt;/tt&amp;gt; and similarly the &#039;Weblinks&#039; view of the Weblinks component uses &amp;lt;tt&amp;gt;#__weblinks &amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Each of these components uses a class to write to the table: &amp;lt;tt&amp;gt;ContactTableContact&amp;lt;/tt&amp;gt; for the Contacts component and &amp;lt;tt&amp;gt;WeblinksTableWeblink&amp;lt;/tt&amp;gt; for the Weblinks component. You will need the class prefixes e.g. &amp;lt;tt&amp;gt;ContactTable&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;WeblinksTable&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that Category types all use the &amp;lt;tt&amp;gt;#__categories&amp;lt;/tt&amp;gt; table.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;type_table&amp;lt;/tt&amp;gt; entry gives the complete table class information for the table class as a JSON object with two elements. The first element represents your &amp;quot;special&amp;quot; table and the second an optional common table (otherwise it will default the &amp;lt;tt&amp;gt;JTableCorecontent&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Here is the JSON entry for the Weblink content type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;special&amp;quot;: {&lt;br /&gt;
    &amp;quot;dbtable&amp;quot;: &amp;quot;#__weblinks&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;id&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Weblink&amp;quot;,&lt;br /&gt;
    &amp;quot;prefix&amp;quot;: &amp;quot;WeblinksTable&amp;quot;,&lt;br /&gt;
    &amp;quot;config&amp;quot;: &amp;quot;array()&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;common&amp;quot;: {&lt;br /&gt;
    &amp;quot;dbtable&amp;quot;: &amp;quot;#__ucm_content&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;ucm_id&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;Corecontent&amp;quot;,&lt;br /&gt;
    &amp;quot;prefix&amp;quot;: &amp;quot;JTable&amp;quot;,&lt;br /&gt;
    &amp;quot;config&amp;quot;: &amp;quot;array()&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
The values to be included are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Entry name !! Content &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;dbtable&amp;lt;/tt&amp;gt; || Table name&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;key&amp;lt;/tt&amp;gt;|| Primary key name&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;type&amp;lt;/tt&amp;gt; || Content type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;prefix&amp;lt;/tt&amp;gt; || Class prefix&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;config&amp;lt;/tt&amp;gt; || An option array, as used in your component constructor and getInstance() methods, may be empty&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This information enables the tagging system (and other APIs) to access your table easily. &lt;br /&gt;
&lt;br /&gt;
If you are using Joomla categories make sure to create a category type so that they can be tagged. In Joomla 3.1 and 3.1.1 there is an error where the tag field will show even if there is not a type, but this is corrected in 3.1.4.  &lt;br /&gt;
  &lt;br /&gt;
====Notes====&lt;br /&gt;
* The table name for the common table is &amp;lt;tt&amp;gt;#__ucm_content&amp;lt;/tt&amp;gt;; this is incorrect in 3.1 and 3.1.1 data but is not currently used. The data was updated in 3.1.4.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;tt&amp;gt;type_title&amp;lt;/tt&amp;gt; field would potentially be used for display although this is not implemented currently except in the contenttype field.  Usually it should begin with an upper case letter if it is in English. See note about how to make this translatable. To make your type names translatable add &amp;lt;tt&amp;gt;COM_TAGS_CONTENT_TYPE_+type_title=&amp;quot;Type Title&amp;quot;&amp;lt;/tt&amp;gt; in both the ini and sys.ini files.&lt;br /&gt;
&lt;br /&gt;
===rules===&lt;br /&gt;
Rules is currently not used. It will likely be removed in favor of an &amp;lt;tt&amp;gt;asset_id&amp;lt;/tt&amp;gt; for each type, but currently you can ignore this field which will be managed by &amp;lt;tt&amp;gt;JTable&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===field_mappings===&lt;br /&gt;
This entry maps the names of specific fields in your table to a set of standard Joomla! names. This mapping is stored as a JSON array with the first &#039;common&#039; element mapping to the common fields and the second &#039;special&#039; element mapping the other fields from the table. &lt;br /&gt;
&lt;br /&gt;
Here is the field_mappings entry for the Banner Content Type (chosen because it is a richer example than Article or WebLink). Note that &#039;common&#039; mappings that have no equivalent are included as &#039;null&#039; (leaving them blank may cause sql issues); and the names and values in the &#039;special&#039; element all match as they are limited to this component.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;common&amp;quot;: {&lt;br /&gt;
    &amp;quot;core_content_item_id&amp;quot;: &amp;quot;id&amp;quot;,&lt;br /&gt;
    &amp;quot;core_title&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;core_state&amp;quot;: &amp;quot;published&amp;quot;,&lt;br /&gt;
    &amp;quot;core_alias&amp;quot;: &amp;quot;alias&amp;quot;,&lt;br /&gt;
    &amp;quot;core_created_time&amp;quot;: &amp;quot;created&amp;quot;,&lt;br /&gt;
    &amp;quot;core_modified_time&amp;quot;: &amp;quot;modified&amp;quot;,&lt;br /&gt;
    &amp;quot;core_body&amp;quot;: &amp;quot;description&amp;quot;,&lt;br /&gt;
    &amp;quot;core_hits&amp;quot;: &amp;quot;null&amp;quot;,&lt;br /&gt;
    &amp;quot;core_publish_up&amp;quot;: &amp;quot;publish_up&amp;quot;,&lt;br /&gt;
    &amp;quot;core_publish_down&amp;quot;: &amp;quot;publish_down&amp;quot;,&lt;br /&gt;
    &amp;quot;core_access&amp;quot;: &amp;quot;access&amp;quot;,&lt;br /&gt;
    &amp;quot;core_params&amp;quot;: &amp;quot;params&amp;quot;,&lt;br /&gt;
    &amp;quot;core_featured&amp;quot;: &amp;quot;null&amp;quot;,&lt;br /&gt;
    &amp;quot;core_metadata&amp;quot;: &amp;quot;metadata&amp;quot;,&lt;br /&gt;
    &amp;quot;core_language&amp;quot;: &amp;quot;language&amp;quot;,&lt;br /&gt;
    &amp;quot;core_images&amp;quot;: &amp;quot;images&amp;quot;,&lt;br /&gt;
    &amp;quot;core_urls&amp;quot;: &amp;quot;link&amp;quot;,&lt;br /&gt;
    &amp;quot;core_version&amp;quot;: &amp;quot;version&amp;quot;,&lt;br /&gt;
    &amp;quot;core_ordering&amp;quot;: &amp;quot;ordering&amp;quot;,&lt;br /&gt;
    &amp;quot;core_metakey&amp;quot;: &amp;quot;metakey&amp;quot;,&lt;br /&gt;
    &amp;quot;core_metadesc&amp;quot;: &amp;quot;metadesc&amp;quot;,&lt;br /&gt;
    &amp;quot;core_catid&amp;quot;: &amp;quot;catid&amp;quot;,&lt;br /&gt;
    &amp;quot;core_xreference&amp;quot;: &amp;quot;null&amp;quot;,&lt;br /&gt;
    &amp;quot;asset_id&amp;quot;: &amp;quot;null&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;special&amp;quot;: {&lt;br /&gt;
    &amp;quot;imptotal&amp;quot;: &amp;quot;imptotal&amp;quot;,&lt;br /&gt;
    &amp;quot;impmade&amp;quot;: &amp;quot;impmade&amp;quot;,&lt;br /&gt;
    &amp;quot;clicks&amp;quot;: &amp;quot;clicks&amp;quot;,&lt;br /&gt;
    &amp;quot;clickurl&amp;quot;: &amp;quot;clickurl&amp;quot;,&lt;br /&gt;
    &amp;quot;custombannercode&amp;quot;: &amp;quot;custombannercode&amp;quot;,&lt;br /&gt;
    &amp;quot;cid&amp;quot;: &amp;quot;cid&amp;quot;,&lt;br /&gt;
    &amp;quot;purchase_type&amp;quot;: &amp;quot;purchase_type&amp;quot;,&lt;br /&gt;
    &amp;quot;track_impressions&amp;quot;: &amp;quot;track_impressions&amp;quot;,&lt;br /&gt;
    &amp;quot;track_clicks&amp;quot;: &amp;quot;track_clicks&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
At a minimum for common fields you need to map: content_item_id, alias and title in order to successfully create urls in the tagged items list.  You also will probably want: access, status, and language. The special fields are optional.  &lt;br /&gt;
&lt;br /&gt;
====Note====&lt;br /&gt;
* The &amp;lt;tt&amp;gt;JHelperTags&amp;lt;/tt&amp;gt; and JUcm APIs at 3.1.1 supported arrays for this field, but as of 3.1.4 either arrays or objects are supported; the default is objects.&lt;br /&gt;
&lt;br /&gt;
===router===&lt;br /&gt;
This is an optional entry to include the name of a static helper router method for this type found in its front end helpers folder e.g. &amp;lt;tt&amp;gt;WeblinksHelperRoute::getWeblinkRoute&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you do not have a custom router then Tags falls back to the rules in &amp;lt;tt&amp;gt;JHelperRoute&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you only store data in &amp;lt;tt&amp;gt;#__ucm_content&amp;lt;/tt&amp;gt; you will eventually be able to leave the router field blank although this option is not currently implemented.&lt;br /&gt;
&lt;br /&gt;
===content_history_options===&lt;br /&gt;
This section was added in Joomla! 3.2 to link to the Content History component.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s the entry for the Banner Content Type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;formFile&amp;quot;: &amp;quot;administrator\/components\/com_banners\/models\/forms\/banner.xml&amp;quot;,&lt;br /&gt;
  &amp;quot;hideFields&amp;quot;: [&lt;br /&gt;
    &amp;quot;checked_out&amp;quot;,&lt;br /&gt;
    &amp;quot;checked_out_time&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;,&lt;br /&gt;
    &amp;quot;reset&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;ignoreChanges&amp;quot;: [&lt;br /&gt;
    &amp;quot;modified_by&amp;quot;,&lt;br /&gt;
    &amp;quot;modified&amp;quot;,&lt;br /&gt;
    &amp;quot;checked_out&amp;quot;,&lt;br /&gt;
    &amp;quot;checked_out_time&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;,&lt;br /&gt;
    &amp;quot;imptotal&amp;quot;,&lt;br /&gt;
    &amp;quot;impmade&amp;quot;,&lt;br /&gt;
    &amp;quot;reset&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;convertToInt&amp;quot;: [&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;displayLookup&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;sourceColumn&amp;quot;: &amp;quot;catid&amp;quot;,&lt;br /&gt;
      &amp;quot;targetTable&amp;quot;: &amp;quot;#__categories&amp;quot;,&lt;br /&gt;
      &amp;quot;targetColumn&amp;quot;: &amp;quot;id&amp;quot;,&lt;br /&gt;
      &amp;quot;displayColumn&amp;quot;: &amp;quot;title&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;sourceColumn&amp;quot;: &amp;quot;cid&amp;quot;,&lt;br /&gt;
      &amp;quot;targetTable&amp;quot;: &amp;quot;#__banner_clients&amp;quot;,&lt;br /&gt;
      &amp;quot;targetColumn&amp;quot;: &amp;quot;id&amp;quot;,&lt;br /&gt;
      &amp;quot;displayColumn&amp;quot;: &amp;quot;name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;sourceColumn&amp;quot;: &amp;quot;created_by&amp;quot;,&lt;br /&gt;
      &amp;quot;targetTable&amp;quot;: &amp;quot;#__users&amp;quot;,&lt;br /&gt;
      &amp;quot;targetColumn&amp;quot;: &amp;quot;id&amp;quot;,&lt;br /&gt;
      &amp;quot;displayColumn&amp;quot;: &amp;quot;name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;sourceColumn&amp;quot;: &amp;quot;modified_by&amp;quot;,&lt;br /&gt;
      &amp;quot;targetTable&amp;quot;: &amp;quot;#__users&amp;quot;,&lt;br /&gt;
      &amp;quot;targetColumn&amp;quot;: &amp;quot;id&amp;quot;,&lt;br /&gt;
      &amp;quot;displayColumn&amp;quot;: &amp;quot;name&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating the record===&lt;br /&gt;
You can create records in the installer in one of three ways:&lt;br /&gt;
* in the [[J2.5:Managing_Component_Updates_(Script.php)#postflight|postflight]] method&lt;br /&gt;
* by creating a &amp;lt;tt&amp;gt;JTableContenttype&amp;lt;/tt&amp;gt; instance and adding a row, or&lt;br /&gt;
* by using SQL to create a record directly&lt;br /&gt;
&lt;br /&gt;
== Modify your component&#039;s table class (or classes if you have multiple tables) ==&lt;br /&gt;
&lt;br /&gt;
Add the following to your JTable constructor:&lt;br /&gt;
&lt;br /&gt;
$this-&amp;gt;_observers = new JObserverUpdater($this);&lt;br /&gt;
JObserverMapper::attachAllObservers($this);&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The addition material formerly located here is no longer needed after 3.1.4&#039;&#039;&#039; Please read the document history for this page if you are required to support 3.1.0 or 3.1.1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For joomla 3.2 I needed this line:&#039;&#039;&#039; ( Dont forget to replace weblinks by your component name )&lt;br /&gt;
&lt;br /&gt;
JObserverMapper::addObserverClassToClass(&#039;JTableObserverTags&#039;, &#039;WeblinksTableWeblink&#039;, array(&#039;typeAlias&#039; =&amp;gt; &#039;com_weblinks.weblink&#039;));&lt;br /&gt;
&lt;br /&gt;
== Add tags to the getItem() method of the model ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: this was only required in 3.1.0 and 3.1.1. It should not be used in 3.1.4 or later.&#039;&#039;&#039; Please read the history of this page if you need instructions for older versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Add a tag field to edit screens ==&lt;br /&gt;
&lt;br /&gt;
In any edit layouts where you want to allow tagging, you need to add the field to the xml and the appropriate layouts if necessary. The core layouts us a JLayout to manage this and the same layout by any extension.&lt;br /&gt;
&lt;br /&gt;
Update: Note that in &#039;&#039;&#039;3.1.1 only&#039;&#039;&#039; there is special handling of this in the core.  Tags in the edit screen &#039;&#039;&#039;MUST&#039;&#039;&#039; be part of a metadata &amp;lt;fields&amp;gt;&amp;lt;/fields&amp;gt; group.  The core provides two JLayouts to help you manage standard layouts, one (details) for the metadata and one for the sidebar that includes the tabs. In update an extension to 3.1.4 you may need to fix adjust your edit views.&lt;br /&gt;
&lt;br /&gt;
In 3.1.4 or later this special handling is not necessary.  Best practice is to use the standard JLayouts since this provides a consistent experience for users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;field name=&amp;quot;tags&amp;quot; type=&amp;quot;tag&amp;quot;&lt;br /&gt;
			label=&amp;quot;JTAG&amp;quot; description=&amp;quot;JTAG_DESC&amp;quot;&lt;br /&gt;
			class=&amp;quot;inputbox span12 small&amp;quot; multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		&amp;gt;&lt;br /&gt;
		&amp;lt;/field&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The field loads all the Javascript libraries required. You don&#039;t need to worry about that.&lt;br /&gt;
&lt;br /&gt;
The field supports two modes:  &lt;br /&gt;
* &#039;&#039;&#039;Nested tags mode.&#039;&#039;&#039; Hierarchical tag list. Doesn&#039;t support on the fly tag creation.&lt;br /&gt;
* &#039;&#039;&#039;AJAX mode.&#039;&#039;&#039;  Tags are searched while user types (3 min. chars required to launch the AJAX search). Custom tags are added by pressing ENTER or COMMA keys. Tags show the global route/path. Example: &amp;lt;code&amp;gt;grandpa/parent/tag&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The field mode can be forced or use the com_tags setting &amp;lt;code&amp;gt;Tag field mode&amp;lt;/code&amp;gt; to determine its mode. To set/force the field mode we have to add &#039;&#039;&#039;mode=&amp;quot;ajax&amp;quot;&#039;&#039;&#039; or &#039;&#039;&#039;mode=&amp;quot;nested&amp;quot;&#039;&#039;&#039; to the tag field definition.  &lt;br /&gt;
&lt;br /&gt;
Example of forced AJAX mode:  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;field name=&amp;quot;tags&amp;quot; type=&amp;quot;tag&amp;quot; mode=&amp;quot;ajax&amp;quot;&lt;br /&gt;
			label=&amp;quot;JTAG&amp;quot; description=&amp;quot;JTAG_DESC&amp;quot;&lt;br /&gt;
			class=&amp;quot;inputbox span12 small&amp;quot; multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		&amp;gt;&lt;br /&gt;
		&amp;lt;/field&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The field also includes an attribute to allow/deny the user to enter custom values. Currently this only works in AJAX mode. The attribute has to be added to the field definition like **custom=&amp;quot;allow&amp;quot;** or **custom=&amp;quot;deny&amp;quot;**  &lt;br /&gt;
&lt;br /&gt;
Example field definition with custom tags denied:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;field name=&amp;quot;tags&amp;quot; type=&amp;quot;tag&amp;quot; mode=&amp;quot;ajax&amp;quot; custom=&amp;quot;denied&amp;quot;&lt;br /&gt;
			label=&amp;quot;JTAG&amp;quot; description=&amp;quot;JTAG_DESC&amp;quot;&lt;br /&gt;
			class=&amp;quot;inputbox span12 small&amp;quot; multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		&amp;gt;&lt;br /&gt;
		&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
if it is not already there. Usually multiple should be true unless you have a specific reason for it not to be.&lt;br /&gt;
In the core components in administrator, the field is in the group shown on the right, below the language field.&lt;br /&gt;
&lt;br /&gt;
Note: As of 3.1.2 if you wish to use the field to designate parent tags you must add parent=&amp;quot;parent&amp;quot; to the xml definition of the field.&lt;br /&gt;
&lt;br /&gt;
== Prepare the view ==&lt;br /&gt;
&lt;br /&gt;
Add an appropriate version of this to your view.html.php file before loading the layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$item-&amp;gt;tags = new JHelperTags;&lt;br /&gt;
$item-&amp;gt;tags-&amp;gt;getItemTags(&#039;com_newsfeeds.newsfeed.&#039; , $this-&amp;gt;item-&amp;gt;id); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first parameter should match a type in the types table. The second parameter is the primary key under which this record is stored in your table. This would be used in any display in any view where you want the tags associated with the item to display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Set up the display ==&lt;br /&gt;
&lt;br /&gt;
In any layout where you want to display the tags associated with an item add:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php $this-&amp;gt;item-&amp;gt;tagLayout = new JLayoutFile(&#039;joomla.content.tags&#039;); ?&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo $this-&amp;gt;item-&amp;gt;tagLayout-&amp;gt;render($this-&amp;gt;item-&amp;gt;tags-&amp;gt;itemTags); ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Changing the object and property names as appropriate.&lt;br /&gt;
&lt;br /&gt;
You will most likely want to add the show_tags parameter to the item parameters, the menu item parameters and component configuration as appropriate for your use case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;?php if ($this-&amp;gt;params-&amp;gt;get(&#039;show_tags&#039;, 1) &amp;amp;&amp;amp; !empty($this-&amp;gt;item-&amp;gt;tags)) : ?&amp;gt;&lt;br /&gt;
		&amp;lt;?php $this-&amp;gt;item-&amp;gt;tagLayout = new JLayoutFile(&#039;joomla.content.tags&#039;); ?&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo $this-&amp;gt;item-&amp;gt;tagLayout-&amp;gt;render($this-&amp;gt;item-&amp;gt;tags-&amp;gt;itemTags); ?&amp;gt;&lt;br /&gt;
	&amp;lt;?php endif; ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Batch processing ==&lt;br /&gt;
If you want to add the ability to do batch tagging to a backend list view do the following.&lt;br /&gt;
&lt;br /&gt;
Add tag to the default_batch layout&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
        &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;control-group&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;div class=&amp;quot;controls&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;?php echo JHtml::_(&#039;batch.tag&#039;);?&amp;gt;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/div&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And add tag to the button class in the modal footer (Not totally necessary at this point, but good for potential future changes e.g. if unTag is added.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;button class=&amp;quot;btn&amp;quot; type=&amp;quot;button&amp;quot; onclick=&amp;quot;document.id(&#039;batch-category-id&#039;).value=&#039;&#039;;document.id(&#039;batch-access&#039;).value=&#039;&#039;;document.id(&#039;batch-language-id&#039;).value=&#039;&#039;;document.id(&#039;batch-user-id&#039;).value=&#039;&#039;;document.id(&#039;batch-tag-id)&#039;).value=&#039;&#039;&amp;quot; data-dismiss=&amp;quot;modal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add a batch method to your model if you are not extending JModelAdmin or overriding the batch method. ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Batch tag a list of item.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   integer  $value     The value of the new tag.&lt;br /&gt;
	 * @param   array    $pks       An array of row IDs.&lt;br /&gt;
	 * @param   array    $contexts  An array of item contexts.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  void.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   3.1&lt;br /&gt;
	 */&lt;br /&gt;
	protected function batchTag($value, $pks, $contexts)&lt;br /&gt;
	{&lt;br /&gt;
		$tagsHelper = new JHelperTags();&lt;br /&gt;
		$tagsHelper-&amp;gt;tagItems($value, $pks, $contexts);&lt;br /&gt;
&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And modify your batch method by adding&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
		if (!empty($commands[&#039;tag&#039;]))&lt;br /&gt;
		{&lt;br /&gt;
			if (!$this-&amp;gt;batchTag($commands[&#039;tag&#039;], $pks, $contexts))&lt;br /&gt;
			{&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$done = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay attention to any JSON encoded strings that you need special handling for in batch processing -- remember that you are saving a copy of the core fields and you need save to work as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That’s it, now create some tags, tag some items and you are set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]][[Category:Content Tags]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Adding_JavaScript&amp;diff=164276</id>
		<title>Adding JavaScript</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Adding_JavaScript&amp;diff=164276"/>
		<updated>2015-03-17T22:44:57Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Important notes for 3rd party developers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|1.5,2.5,3.1}}&lt;br /&gt;
&lt;br /&gt;
JavaScript (also known as ECMAScript) is a scripting language primarily used in client-side web site development to extend and enhance an end-user&#039;s experience. Joomla provides developers with easy-to-use mechanisms to include JavaScript in their extensions using existing API methods.&lt;br /&gt;
&lt;br /&gt;
There are a number of methods for including JavaScript in your Joomla extensions; some of these are described below.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
There are three methods for embedding JavaScript into your code using the Joomla API; [http://api.joomla.org/1.5/Joomla-Framework/Document/JDocument.html#addScriptDeclaration JDocument::addScriptDeclaration], [http://api.joomla.org/1.5/Joomla-Framework/Document/JDocument.html#addScript JDocument::addScript] and [http://api.joomla.org/1.5/Joomla-Framework/HTML/JHTML.html#script script]. These methods should be called either in your component&#039;s View class (&amp;lt;yourcomponent&amp;gt;/views/&amp;lt;yourview&amp;gt;/view.html.php) or template script (&amp;lt;yourcomponent&amp;gt;/views/&amp;lt;yourview&amp;gt;/tmpl/&amp;lt;yourtemplate&amp;gt;.php or in the case of a module, in its template script (&amp;lt;yourmodule&amp;gt;/tmpl/&amp;lt;yourtemplate&amp;gt;.php). &lt;br /&gt;
&lt;br /&gt;
===Inline JavaScript===&lt;br /&gt;
&lt;br /&gt;
Blocks of JavaScript code can be declared directly within a component or module&#039;s display template using the [http://api.joomla.org/1.5/Joomla-Framework/Document/JDocument.html JDocument] class&#039; [http://api.joomla.org/1.5/Joomla-Framework/Document/JDocument.html#addScriptDeclaration addScriptDeclaration] method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$document = JFactory::getDocument();&lt;br /&gt;
$document-&amp;gt;addScriptDeclaration(&#039;&lt;br /&gt;
    window.event(&amp;quot;domready&amp;quot;, function() {&lt;br /&gt;
        alert(&amp;quot;An inline JavaScript Declaration&amp;quot;);&lt;br /&gt;
    });&lt;br /&gt;
&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===External JavaScript===&lt;br /&gt;
&lt;br /&gt;
Alternatively, you may wish to separate your JavaScript into a separate file. Separating your JavaScript into an external file can make your template code easier to read especially if the JavaScript is lengthy or complex.&lt;br /&gt;
&lt;br /&gt;
There are two ways to include a JavaScript file using the Joomla API. The first involves using the [http://api.joomla.org/1.5/Joomla-Framework/Document/JDocument.html JDocument] class&#039; [http://api.joomla.org/1.5/Joomla-Framework/Document/JDocument.html#addScript addScript] method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$document = JFactory::getDocument();&lt;br /&gt;
$document-&amp;gt;addScript(&#039;/media/system/js/sample.js&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second uses the [http://api.joomla.org/1.5/Joomla-Framework/HTML/JHTML.html JHTML] class&#039; [http://api.joomla.org/1.5/Joomla-Framework/HTML/JHTML.html#script script] method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Add the path parameter if the path is different than &#039;media/system/js/&#039;&lt;br /&gt;
JHTML::script(&#039;sample.js&#039;, &#039;templates/custom/js/&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
API has changed in 3.x, so the second parameter cannot be a string. If you really need to use this method, you must include the absolute link to your javacript file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
JHtml::script(Juri::base() . &#039;templates/custom/js/sample.js&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
The Joomla API&#039;s [http://api.joomla.org/1.5/Joomla-Framework/Document/JDocument.html#addScriptDeclaration JDocument::addScriptDeclaration], [http://api.joomla.org/1.5/Joomla-Framework/Document/JDocument.html#addScript JDocument::addScript] and [http://api.joomla.org/1.5/Joomla-Framework/HTML/JHTML.html#script script] methods embed JavaScript into Joomla&#039;s index.php via the jdoc head tag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;head&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the [http://api.joomla.org/1.5/Joomla-Framework/Document/JDocument.html#addScript JDocument::addScript] or [http://api.joomla.org/1.5/Joomla-Framework/HTML/JHTML.html#script script] methods to embed JavaScript includes would result in the index.php rendering the following HTML:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javaScript&amp;quot; src=&amp;quot;/media/system/js/sample.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Calling the class method [http://api.joomla.org/1.5/Joomla-Framework/Document/JDocument.html#addScriptDeclaration JDocument::addScriptDeclaration] would render the following HTML:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javaScript&amp;quot;&amp;gt;&lt;br /&gt;
window.addEvent(&amp;quot;domready&amp;quot;, function() {&lt;br /&gt;
    alert(&amp;quot;Embedded block of JS here&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using these methods is highly recommended as it clearly differentiates another scripting language (JavaScript) from the main PHP code, ensures all JavaScript is correctly embedded between the &amp;lt;head&amp;gt;&amp;lt;/head&amp;gt; tags and, in the case of JDocument::addScript and JHTML::script ensures that a JavaScript file is included only once (I.e. there is no .js file duplication).&lt;br /&gt;
&lt;br /&gt;
== Using a JavaScript Framework ==&lt;br /&gt;
&lt;br /&gt;
A Javascript framework provides developers with generic functionality for handling various coding tasks in a familiar, consistent and platform-independent way. A framework enables the developer to forget about the intricacies of implementing a certain function in different web browsers and focus on the requirements of the software.&lt;br /&gt;
&lt;br /&gt;
Two [[Javascript Frameworks]] are provided as part of Joomla 3.x; jQuery and Mootools. jQuery is a newly introduced framework which integrates with Joomla&#039;s new Bootstrap HTML framework; Mootools is Joomla&#039;s legacy Javascript library which is now superseded by jQuery and is included for backwards compatibility with 3rd party extensions.&lt;br /&gt;
&lt;br /&gt;
In nearly all cases you should use a framework when developing Javascript in your extensions or templates and including one is very simple with Joomla&#039;s API.&lt;br /&gt;
&lt;br /&gt;
===Joomla 3.x jQuery ===&lt;br /&gt;
Please see the guide on [[Javascript_Frameworks|Javascript Frameworks in Joomla 3.x]] for information about including a framework in Joomla 3.x&lt;br /&gt;
&lt;br /&gt;
=== Joomla 1.5/2.5 Mootools ===&lt;br /&gt;
&lt;br /&gt;
Unless you are maintaining Javascript code which leverages Mootools or you are developing an extension for Joomla 2.5 or earlier it is recommended you use jQuery instead.&lt;br /&gt;
&lt;br /&gt;
Firstly, you will need to include the Mootools code in your extension. To include the Mootools framework in your extension, you add the following code to your view.html.php or tmpl file:&lt;br /&gt;
&lt;br /&gt;
FOR JOOMLA 1.5&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JHTML::_(&#039;behavior.mootools&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOR JOOMLA 2.5&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JHtml::_(&#039;behavior.framework&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above code results in the same outcome as the similar jQuery framework statement; that is it ensures Mootools is included correctly and only once.&lt;br /&gt;
&lt;br /&gt;
Then using Mootools is almost identical to jQuery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
JFactory::getDocument()-&amp;gt;addScriptDeclaration(&#039;&lt;br /&gt;
window.addEvent(&amp;quot;domready&amp;quot;, function() {&lt;br /&gt;
    alert($(&amp;quot;list&amp;quot;).getElements(&amp;quot;li&amp;quot;).length);&lt;br /&gt;
});&lt;br /&gt;
&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More information about Mootools is available at http://mootools.net/. For API documentation, visit http://mootools.net/docs/core.&lt;br /&gt;
&lt;br /&gt;
== Important notes for 3rd party developers ==&lt;br /&gt;
&lt;br /&gt;
If you are creating a custom template override or extension that needs to add a custom JS file, make sure to add important dependencies such as Jquery or Mootools before your custom JS files. JS framework fiels must always be  loaded before any other files to make sure they get executed first, otherwise other files that load before the frameworks they need are likely to end in JS exceptions.&lt;br /&gt;
&lt;br /&gt;
Some templates like Protostar or Beez insert all the dependencies you need using functions like&lt;br /&gt;
&lt;br /&gt;
 JHtml::_(&#039;bootstrap.framework&#039;);&lt;br /&gt;
&lt;br /&gt;
to load Jquery + Bootstrap, but you should not rely in this fact on your extensions or custom templates overrides. Always make sure your extension or custom override load the dependencies you need before the template does it, I will explain why later:&lt;br /&gt;
&lt;br /&gt;
For example if you got a custom template override that needs to insert a JS file with some Jquery scripts that does fancy things on all the pages where that template override is being used. In that case you should declare this on the top section of that override file:&lt;br /&gt;
&lt;br /&gt;
 JHtml::_(&#039;jquery.framework&#039;);&lt;br /&gt;
 $doc-&amp;gt;addScript(&#039;templates/&#039;.$this-&amp;gt;template.&#039;/js/fancy-script.js&#039;);&lt;br /&gt;
&lt;br /&gt;
If you are developing a 3rd party extension that you plan to put on the Joomla! extension directory you should do something like this:&lt;br /&gt;
&lt;br /&gt;
 if($params-&amp;gt;get(&#039;add_extension_resources&#039;, false))&lt;br /&gt;
 {&lt;br /&gt;
     JHtml::_(&#039;jquery.framework&#039;);&lt;br /&gt;
     $doc-&amp;gt;addScript(&#039;media/com_fancy/js/fancy-script.js&#039;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The conditional clause to decide whether to add or not the extension resources is &#039;&#039;&#039;strongly encouraged&#039;&#039;&#039; and considered a &#039;&#039;&#039;good practice&#039;&#039;&#039; because it gives flexibility to 3rd party developers who don&#039;t want to use your extension resources and use custom/modified files without having to battle with Joomla! using workarounds and hacks to be able to remove your original extensions resources in order to avoid duplicates and conflicts.&lt;br /&gt;
&lt;br /&gt;
==== Explanation ====&lt;br /&gt;
&lt;br /&gt;
If you check the source code of the index.php from the Protostar template, you can see that the statements&lt;br /&gt;
&lt;br /&gt;
 JHtml::_(&#039;bootstrap.framework&#039;);&lt;br /&gt;
&lt;br /&gt;
is added way before the statement&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this can make you think that the framework files and your 3rd party files using methods like &lt;br /&gt;
&lt;br /&gt;
 $doc-&amp;gt;addScript(&#039;templates/&#039;.$this-&amp;gt;template.&#039;/js/fancy-script.js&#039;);&lt;br /&gt;
 $doc-&amp;gt;addScript(&#039;media/com_fancy/js/fancy-script.js&#039;);&lt;br /&gt;
&lt;br /&gt;
will be added in the right order at the right spot, &#039;&#039;&#039;but that is not the case&#039;&#039;&#039;, because extension files and template override files are processed &#039;&#039;&#039;first&#039;&#039;&#039; and the index.php file of your current template is processed the &#039;&#039;&#039;last&#039;&#039;&#039;. This will cause that your custom JS files get inserted first and the framework files inserted from the template get inserted after. &lt;br /&gt;
&lt;br /&gt;
This happens because the Joomla API (such as $doc-&amp;gt;addScript) uses an array to store the JS files paths and they get rendered in the document in the same order they where inserted into that array (FIFO stack), also once a file path is inserted on the array and another API call tries to insert the same file this action is ignored to avid duplicates, it also means that the order of the files is not altered when the same files is attempted to be inserted several times.&lt;br /&gt;
&lt;br /&gt;
Having said that doing this &lt;br /&gt;
&lt;br /&gt;
 JHtml::_(&#039;jquery.framework&#039;);&lt;br /&gt;
 $doc-&amp;gt;addScript(&#039;templates/&#039;.$this-&amp;gt;template.&#039;/js/fancy-script.js&#039;);&lt;br /&gt;
&lt;br /&gt;
at your custom templates overrides and extension, is &#039;&#039;&#039;required&#039;&#039;&#039; and does not cause harm or conflict with the call &lt;br /&gt;
&lt;br /&gt;
 JHtml::_(&#039;bootstrap.framework&#039;);&lt;br /&gt;
&lt;br /&gt;
at your template index.php file.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[JHtmlBehavior::framework/11.1| JHtmlBehaviour::framework method]] from the Joomla! Framework 11.1 documentation&lt;br /&gt;
&lt;br /&gt;
[[Ajax using MooTools]]&lt;br /&gt;
&lt;br /&gt;
[[Adding Javascript moo.fx to your component]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
http://api.joomla.org/Joomla-Platform/HTML/JHtmlBehavior.html#methodframework&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/JavaScript&lt;br /&gt;
&lt;br /&gt;
http://www.w3schools.com/js/default.asp&lt;br /&gt;
&lt;br /&gt;
http://mootools.net/&lt;br /&gt;
&lt;br /&gt;
http://jquery.com/&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Modules]]&lt;br /&gt;
[[Category:Components]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:JavaScript]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=How_do_you_put_a_module_inside_an_article%3F&amp;diff=163965</id>
		<title>How do you put a module inside an article?</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=How_do_you_put_a_module_inside_an_article%3F&amp;diff=163965"/>
		<updated>2015-03-17T13:31:33Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: Added syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|2.5,3.1}}&lt;br /&gt;
&lt;br /&gt;
You will usually want to associate modules with articles in some way.  The modules are allocated to module positions and the module positions appear somewhere on the Web page as determined by the template.  However, it is sometimes useful to have a module actually embedded within the article. Joomla core provides two ways to do that: loadposition and loadmodule.&lt;br /&gt;
Syntax:&lt;br /&gt;
*{loadposition position[, style]}&lt;br /&gt;
*{loadmodule module[, title[, style]]}&lt;br /&gt;
===loadpostion===&lt;br /&gt;
To insert a module inside an article, you publish the module to a position and load that position in the article as follows:&lt;br /&gt;
&lt;br /&gt;
#Create a module and set its position to &#039;&#039;&#039;&#039;&#039;myposition&#039;&#039;&#039;&#039;&#039;. &#039;&#039;&#039;&#039;&#039;myposition&#039;&#039;&#039;&#039;&#039; can be any value that doesn&#039;t conflict with an existing template position. Type in the position &#039;&#039;&#039;&#039;&#039;myposition&#039;&#039;&#039;&#039;&#039; and press enter instead of selecting it from the drop-down list. &lt;br /&gt;
#Assign the module to &#039;&#039;&#039;All&#039;&#039;&#039; the Menu Items. This will make sure that it always appears, no matter how the visitor got to the article. The module will not show unless you put the command to load the module in an [[article]].&lt;br /&gt;
#Edit the articles where you want this module to appear and insert the text &#039;&#039;&#039;&#039;&#039;{loadposition myposition}&#039;&#039;&#039;&#039;&#039; in the article at the place where you want the module.&lt;br /&gt;
&lt;br /&gt;
{{dablink|*Note that this only works when the [[Help25:Extensions_Plugin_Manager_Edit#Content_-_Load_Modules|&#039;&#039;Content - Load Module&#039;&#039; plugin is enabled]]. If this plugin is disabled, the text &#039;&#039;{loadposition myposition}&#039;&#039; shows unchanged in the article.&lt;br /&gt;
&lt;br /&gt;
Also, the name of the position should be all lowercase.  CamelCapitalization will fail.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===loadmodule===&lt;br /&gt;
An alternative to &amp;quot;{loadposition xx}&amp;quot; is the &amp;quot;{loadmodule yyy}&amp;quot; variation which is handled by the same plugin.&lt;br /&gt;
&lt;br /&gt;
In this case the plugin looks for the first module who&#039;s &#039;&#039;&#039;type&#039;&#039;&#039; matches the string &#039;yyy&#039;. So, you could load a &amp;quot;mod_login&amp;quot; module by placing {loadmodule login} in your text. If you wish to load a specific instance of a module, because you have more than one login module e.g. titled as login1, login2, etc. you have to use {loadmodule login,login2} for the module titled as login2. You can also add the a style that is used for rendering the module, to do so add the style as third parameter like {loadmodule login,login2,xhtml}. If you don&#039;t add a style then &amp;quot;none&amp;quot; is used.&lt;br /&gt;
&lt;br /&gt;
===Modules within Modules===&lt;br /&gt;
It is possible in Joomla! 2.5+ and Joomla! 3.x+ to include a module within a &amp;quot;Custom HTML&amp;quot; module as they are processed by content plugins in the same way as articles.&lt;br /&gt;
&lt;br /&gt;
To make this work, the option &#039;&#039;&#039;Prepare content&#039;&#039;&#039; must be enabled as shown in this screenshot.&lt;br /&gt;
&lt;br /&gt;
[[File:j3x_custom_html_prepare_content_option.png||Showing the Prepare Content option in a Custom HTML module.]]&lt;br /&gt;
&lt;br /&gt;
You should remember when doing this that you may experience formatting issues as the &amp;quot;chrome&amp;quot; of the &amp;quot;Custom HTML&amp;quot; module will surround the &amp;quot;chrome&amp;quot; of the included module potential having undesirable effects of the formatting or layout.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Content Management FAQ]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Article Management FAQ]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Category_talk:Upgrading_Issues&amp;diff=154060</id>
		<title>Category talk:Upgrading Issues</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Category_talk:Upgrading_Issues&amp;diff=154060"/>
		<updated>2015-01-15T08:41:51Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Link to Known issues and solutions results in blank screen ==&lt;br /&gt;
&lt;br /&gt;
Link to Known issues and solutions results in blank screen.[[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 07:25, 7 October 2014 (CDT)&lt;br /&gt;
* Seems to work now! [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 02:41, 15 January 2015 (CST)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Joomla_2.5_to_3.x_Common_Migration_Errors&amp;diff=145931</id>
		<title>Talk:Joomla 2.5 to 3.x Common Migration Errors</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Joomla_2.5_to_3.x_Common_Migration_Errors&amp;diff=145931"/>
		<updated>2014-12-28T18:38:45Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Errors and solutions&lt;br /&gt;
The topic that initiated this discussion is about a BLANK screen http://forum.joomla.org/viewtopic.php?f=710&amp;amp;t=869414. Expect this to be general and not specific to Migration. Would expect a link here to the topic explainig what to do. What about disabling system plugins, checking joomla_update.php? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 12:27, 28 December 2014 (CST)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Joomla_2.5_to_3.x_Common_Migration_Errors&amp;diff=145930</id>
		<title>Talk:Joomla 2.5 to 3.x Common Migration Errors</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Joomla_2.5_to_3.x_Common_Migration_Errors&amp;diff=145930"/>
		<updated>2014-12-28T18:27:43Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: Created page with &amp;quot;Errors and solutions The topic that initiated this discussion is about a BLANK screen. Expect this to be general and not specific to Migration. Would expect a link here to the...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Errors and solutions&lt;br /&gt;
The topic that initiated this discussion is about a BLANK screen. Expect this to be general and not specific to Migration. Would expect a link here to the topic explainig what to do. What about disabling system plugins, checking joomla_update.php? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 12:27, 28 December 2014 (CST)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_2.5_to_3.10_Step_by_Step_Migration&amp;diff=141561</id>
		<title>Joomla 2.5 to 3.10 Step by Step Migration</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_2.5_to_3.10_Step_by_Step_Migration&amp;diff=141561"/>
		<updated>2014-12-16T16:28:14Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Going to Joomla! 3.x */  Adding Purge Cache when update not showing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following are step by step instructions to migrate your 2.5.x site to Joomla 3.x. While there are hundreds of different scenarios, this will give you the basic procedure to follow. Very complex migrations will likely be as a result of third-party extensions. You are encouraged to contact the developers of third-party extensions for their suggested path to migrate their extensions.&lt;br /&gt;
&lt;br /&gt;
== Intro ==&lt;br /&gt;
&lt;br /&gt;
The migration from Joomla 2.5 to 3.x is considered a mini-migration. This is because the Joomla core extensions will upgrade with a “one-click” upgrade via the Joomla! Update component in the backend administrator side of Joomla. Many third-party extensions are a one-click upgrade too. Some are not. You need to look at each one and determine what path the extension needs to follow to get from 2.5 to 3.x. If you haven&#039;t already, you might be interested in reading the [[Migration Step by Step Self Assessment|Self Assessment]] and [[Planning for Mini-Migration - Joomla 2.5 to 3.x|Planning for 2.5 to 3.x Migration]] prior to following the steps below.&lt;br /&gt;
&lt;br /&gt;
Joomla Core Extensions:&lt;br /&gt;
&lt;br /&gt;
* Categories&lt;br /&gt;
* Articles&lt;br /&gt;
* Menus&lt;br /&gt;
* Modules (core modules - not third-party)&lt;br /&gt;
* Banners&lt;br /&gt;
* Contacts&lt;br /&gt;
* Messaging&lt;br /&gt;
* Newsfeeds&lt;br /&gt;
* Redirect&lt;br /&gt;
* Search&lt;br /&gt;
* Smart Search&lt;br /&gt;
* Weblinks&lt;br /&gt;
&lt;br /&gt;
=== For very large or complex 2.5 to 3.x migrations ===&lt;br /&gt;
&lt;br /&gt;
The one-click update will be fine and work well for many. For some larger, more complex sites, the one-click update may not be the best route. For large or very complex sites, you may want to follow instructions for a regular migration and bypass the one-click update functionality. To do this, follow the same instructions for [[Planning Migration - Joomla 1.5 to 3|planning 1.5 to 3.x]] and [[Joomla 1.5 to 3.x Step by Step Migration|migrating from Joomla 1.5 to 3.x]], simply substitute 2.5 for 1.5 while reading.&lt;br /&gt;
&lt;br /&gt;
== Step by Step ==&lt;br /&gt;
&lt;br /&gt;
=== Set up a Development Location ===&lt;br /&gt;
# Take a backup of your live 2.5 site. You can use a suggested tool (see bottom of page) or you can do this manually&lt;br /&gt;
#*[[Backup_Basics_for_a_Joomla!_Web_Site|Backup Basics for a Joomla! Web Site]]&lt;br /&gt;
#*[[What_are_the_best_practices_for_site_backups%3F|What are the best practices for site backups?]]&lt;br /&gt;
# Make sure your environment meets the [http://www.joomla.org/about-joomla/technical-requirements.html technical requirements for Joomla 3] before proceeding&lt;br /&gt;
# Create a new database and new user to restore your 2.5 site to. &lt;br /&gt;
# Create a testing site or build area to work in and restore the back up copy of your 2.5 site in one of the following places:&lt;br /&gt;
#* A subdomain&lt;br /&gt;
#* A subdirectory&lt;br /&gt;
#* A local device via [http://www.wampserver.com/en/ WAMP], [http://www.mamp.info/en/ MAMP], [http://sourceforge.net/projects/lampas/ LAMP], [http://sourceforge.net/projects/xampp/ XAMPP].&lt;br /&gt;
#* A new hosting account on a temporary domain in the root (if you would like to change hosts in the process of migration)&lt;br /&gt;
#**Restoring a site on a local device. See [[Installing Joomla locally]] and [[Setting up your workstation for Joomla development]].&lt;br /&gt;
#**Restoring a site with a tool listed at bottom of page (read the developer documentation)&#039;&#039;&lt;br /&gt;
# In your test location, update your Joomla 2.5 instance to the latest maintenance release (currently 2.5.28).&lt;br /&gt;
# Test.&lt;br /&gt;
# Backup again.&lt;br /&gt;
&lt;br /&gt;
=== Assess Each Extension ===&lt;br /&gt;
&lt;br /&gt;
# You are going to be looking at every single extension installed on your site. You will be determining if they need to update to the latest version or be uninstalled. In Joomla 2.5.28 you can go to {{rarr|Extension Manager,Update tab}} and click &#039;&#039;&#039;Find Updates&#039;&#039;&#039; which will add a tooltip in the Manage tab giving some compatibility information from the backend. This functionality only supports extensions that update via the Extension Manager Update tab. If you have extensions installed that do not use the Joomla extension update then they need to be assessed manually as detailed below. The same goes for those extensions that have a tooltip. You will still need to check the type of package and migration path with the extension developer to verify how to upgrade/migrate.&lt;br /&gt;
# Go to {{rarr|Extension Manager,Manage tab}}&lt;br /&gt;
# Click the drop-down for Type.&lt;br /&gt;
# Select Package from the drop-down.{{-}}[[File:J25-admin-extension-manage-package-en.png|border]]{{-}}{{note|Selecting Package first is recommended because if there is something you need to uninstall in a package, it will automatically uninstall the associated Modules, Plugins, or anything else in the package at one time.}}&lt;br /&gt;
# Uninstall any Packages that are no longer needed or will not be migrating to Joomla 3.&lt;br /&gt;
# Repeat this process of going through the Manage tab for all Types in the drop-down: Component, File, Language, Library, Module, Plugin, and Template. If the Author states Joomla! Project, then leave those extensions alone. Smart Search is a Joomla core supported extension even though the Author fields are blank. For all others, make sure that you uninstall those not in use or not compatible with Joomla 3.x.{{-}}{{note|&#039;&#039;&#039;NOTE!&#039;&#039;&#039; You will not be able to uninstall a Template that is set as default. You will need to select a Core supported template like Beez or Atomic and then uninstall the template if you need to do so.|type=serious}} &lt;br /&gt;
# Make a note of any versions of Packages and Components currently running that you will be keeping on your site. You can use the [http://docs.joomla.org/images/5/59/Third-Party_Extension_Inventory_Worksheet.pdf Third-Party Extension Inventory Worksheet] or just copy/paste them into a document for reference.&lt;br /&gt;
# Update all extensions to the latest versions.&lt;br /&gt;
# Before and as you update, note if the extensions have both 2.5 &amp;amp; 3.x versions in the same package. If so, they will be fine to &amp;quot;one-click update.&amp;quot; If not, and 2.5 and 3.x have different packages, you need to look at them case by case. They will normally fall into one of the following scenarios:&lt;br /&gt;
#* The extension has separate packages but upon upgrading to 3.x, they automatically detect this and still work. Make sure the developer confirms this.&lt;br /&gt;
#* The extension has separate packages that need to be uninstalled in 2.5 and then installed with the Joomla 3.x version once the site is migrated. An example of this might be a content plugin. It is very simple to uninstall it in 2.5 and then install it again in 3.x.&lt;br /&gt;
#* See [[Template_Considerations_During_Migration|Template Considerations]] for more specific information on templates.&lt;br /&gt;
{{-}}{{note|&#039;&#039;&#039;Note on Core Supported Extensions:&#039;&#039;&#039; If you are using a Core Supported Extension (Banners, Contacts, Messaging, Newsfeeds, Redirect, Search, Smart Search, or Weblinks) in Joomla 2.5 and it has been decoupled in Joomla 3.4+, Joomla will detect their use during the upgrade and install those Core Supported Extensions automatically.|type=notice}}&lt;br /&gt;
&lt;br /&gt;
=== Going to Joomla! 3.x ===&lt;br /&gt;
Once you have either updated or uninstalled your third-party extensions so that only those compatible with Joomla 3 are remaining in your installation continue with the following steps:&lt;br /&gt;
&lt;br /&gt;
# Go to {{rarr|System,Global Configuration,Server tab}} and turn Error Reporting from System Default to Maximum. Make sure to Save &amp;amp; Close.{{-}} [[File:j25-system-global-config-server-tab-en.png|border]]&lt;br /&gt;
# Go to {{rarr|Extensions,Plugin Manager}} and enter Remember Me into the Filter and press enter.&lt;br /&gt;
# Disable the Remember Me plugin by clicking the green check mark and making it a red circle.{{-}}[[File:j25-extension-plugin-remember-me-en.png|border]]&lt;br /&gt;
# Take another backup&lt;br /&gt;
# Recommended but not required: Fix assets. ([[Fixing_the_assets_table|Fixing the assets table]]). See below for a tool to do this in just a few clicks.&lt;br /&gt;
# Go to {{rarr|Components,Joomla Update}}. (It should say no updates found. If it doesn’t, update Joomla to the latest version and test. Then do another backup.) Click on the Options button at the top right corner.&lt;br /&gt;
# Select Short Term Support (This is the current text - it may be different in the future) from the drop-down for Update server.{{-}}[[File:j25-component-joomla-update-select-support-en.png|border]]&lt;br /&gt;
# Click Save &amp;amp; Close.&lt;br /&gt;
# You will then see your Installed Joomla Version, the Latest Joomla! verion and the URL for the update package.{{-}}[[File:j25-component-joomla-version-update-en.png|border]]&lt;br /&gt;
# If the update is not showing go to {{rarr|Extension manager,Update}} and press Purge Cache from the toolbar. Now the update to J3 should show,&lt;br /&gt;
# Cross your fingers, make sure you turned off remember me and that you have a backup from just before this point.&lt;br /&gt;
# Click the Install the update button.&lt;br /&gt;
# Watch the spinning circle go round and round and feel the anxiety building. No just kidding. The amount of time the wheel spins is dependent on your site, internet connection, and server speed.&lt;br /&gt;
# If all goes well, you will get to a totally new look to the backend administrator panel.{{-}}[[File:j32-administrator-overview-en.png|border]]&lt;br /&gt;
# Click the Purge button given.&lt;br /&gt;
# Go to {{rarr|Extensions,Extension Manager,Database}} and click Fix&lt;br /&gt;
# From the Extension Manager go to Discover and see if there are any extensions to install&lt;br /&gt;
# # Recommended but not required: Fix assets. ([[Fixing_the_assets_table|Fixing the assets table]]). See below for a tool to do this in just a few clicks.&lt;br /&gt;
# Enable Remember Me from the Plugin Manager.&lt;br /&gt;
# Go to the frontend of your site and see if it shows up even if it’s not the right template. If so, continue. If not, see [[Joomla 2.5 to 3.x Common Migration Errors|common errors during migration]].&lt;br /&gt;
# Take a backup.&lt;br /&gt;
# Go to {{rarr|Content,Article Manager,Options button,Editing Layout tab}} and set the Save History to Yes.&lt;br /&gt;
# Install your new template or other extensions if you have them to install. Back up often.&lt;br /&gt;
# Configure them. Back up often.&lt;br /&gt;
# Test everything. Back up often.&lt;br /&gt;
&lt;br /&gt;
=== Going Live with your Joomla! 3.x Site ===&lt;br /&gt;
# When you’re ready to go live, back up your 2.5 site for a last time. Restore it in a subdirectory or subdomain if you would like to.&lt;br /&gt;
# Back up your Joomla 3.x site and move or restore your Joomla! 3.x site to the root (or change nameservers if you were building on a temp domain at a new hosting account root).&lt;br /&gt;
# Test again.&lt;br /&gt;
# Remove 2.5 site from server within a couple of days. &lt;br /&gt;
# Remove all dev sites you may have been working with or keep them up-to-date if they are running a current version in order to ward off hack attempts on your server. &lt;br /&gt;
&lt;br /&gt;
If you had data change on the 2.5 site while you were migrating to 3.x you will want to get that data moved over to the 3.x site before going live. You can do this manually (make sure you keep the same user IDs - go in order) or by using a [http://extensions.joomla.org/extensions/migration-a-conversion/data-import-a-export transfer tool/third-party extension].&lt;br /&gt;
&lt;br /&gt;
== Suggested Tools ==&lt;br /&gt;
*[http://extensions.joomla.org/extensions/access-a-security/site-security/backup/1606 Akeeba Backup] for backup and restore.&lt;br /&gt;
*[http://extensions.joomla.org/extensions/access-a-security/site-access/backend-a-full-access-control/17951 ACL Manager ACL Manager] to fix asset issues in a few clicks.&lt;br /&gt;
&lt;br /&gt;
[[Category:Migration]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_2.5_to_3.10_Step_by_Step_Migration&amp;diff=135415</id>
		<title>Joomla 2.5 to 3.10 Step by Step Migration</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_2.5_to_3.10_Step_by_Step_Migration&amp;diff=135415"/>
		<updated>2014-11-25T17:45:54Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Assess Each Extension */  Consider it a sinn referring to other docs without hyplerlink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following are step by step instructions to migrate your 2.5.x site to Joomla 3.x. While there are hundreds of different scenarios, this will give you the basic procedure to follow. Very complex migrations will likely be as a result of third-party extensions. You are encouraged to contact the developers of third-party extensions for their suggested path to migrate their extensions.&lt;br /&gt;
&lt;br /&gt;
== Intro ==&lt;br /&gt;
&lt;br /&gt;
The migration from Joomla 2.5 to 3.x is considered a mini-migration. This is because the Joomla core extensions will upgrade with a “one-click” upgrade via the Joomla! Update component in the backend administrator side of Joomla. Many third-party extensions are a one-click upgrade too. Some are not. You need to look at each one and determine what path the extension needs to follow to get from 2.5 to 3.x. If you haven&#039;t already, you might be interested in reading the [[Migration Step by Step Self Assessment|Self Assessment]] and [[Planning for Mini-Migration - Joomla 2.5 to 3.x|Planning for 2.5 to 3.x Migration]] prior to following the steps below.&lt;br /&gt;
&lt;br /&gt;
Joomla Core Extensions:&lt;br /&gt;
&lt;br /&gt;
* Categories&lt;br /&gt;
* Articles&lt;br /&gt;
* Menus&lt;br /&gt;
* Modules (core modules - not third-party)&lt;br /&gt;
* Banners&lt;br /&gt;
* Contacts&lt;br /&gt;
* Messaging&lt;br /&gt;
* Newsfeeds&lt;br /&gt;
* Redirect&lt;br /&gt;
* Search&lt;br /&gt;
* Smart Search&lt;br /&gt;
* Weblinks&lt;br /&gt;
&lt;br /&gt;
== Step by Step ==&lt;br /&gt;
&lt;br /&gt;
=== Set up a Development Location ===&lt;br /&gt;
# Take a backup of your live 2.5 site. You can use a suggested tool (see bottom of page) or you can do this manually&lt;br /&gt;
#*[[Backup_Basics_for_a_Joomla!_Web_Site|Backup Basics for a Joomla! Web Site]]&lt;br /&gt;
#*[[What_are_the_best_practices_for_site_backups%3F|What are the best practices for site backups?]]&lt;br /&gt;
# Make sure your environment meets the [http://www.joomla.org/about-joomla/technical-requirements.html technical requirements for Joomla 3] before proceeding&lt;br /&gt;
# Create a new database and new user to restore your 2.5 site to. &lt;br /&gt;
# Create a testing site or build area to work in and restore the back up copy of your 2.5 site in one of the following places:&lt;br /&gt;
#* A subdomain&lt;br /&gt;
#* A subdirectory&lt;br /&gt;
#* A local device via [http://www.wampserver.com/en/ WAMP], [http://www.mamp.info/en/ MAMP], [http://sourceforge.net/projects/lampas/ LAMP], [http://sourceforge.net/projects/xampp/ XAMPP].&lt;br /&gt;
#* A new hosting account on a temporary domain in the root (if you would like to change hosts in the process of migration)&lt;br /&gt;
#**Restoring a site on a local device. See [[Installing Joomla locally]] and [[Setting up your workstation for Joomla development]].&lt;br /&gt;
#**Restoring a site with a tool listed at bottom of page (read the developer documentation)&#039;&#039;&lt;br /&gt;
# In your test location, update your Joomla 2.5 instance to the latest maintenance release (currently 2.5.27, expecting 2.5.28 to be the last one).&lt;br /&gt;
# Test.&lt;br /&gt;
# Backup again.&lt;br /&gt;
&lt;br /&gt;
=== Assess Each Extension ===&lt;br /&gt;
&lt;br /&gt;
# Go to {{rarr|Extension Manager,Manage tab}}&lt;br /&gt;
# You are going to be looking at every single extension installed on your site. You will be determining if they need to update to the latest version or be uninstalled.&lt;br /&gt;
# Click the drop-down for Type.&lt;br /&gt;
# Select Package from the drop-down.{{-}}[[File:J25-admin-extension-manage-package-en.png|border]]{{-}}{{note|Selecting Package first is recommended because if there is something you need to uninstall in a package, it will automatically uninstall the associated Modules, Plugins, or anything else in the package at one time.}}&lt;br /&gt;
# Uninstall any Packages that are no longer needed or will not be migrating to Joomla 3.&lt;br /&gt;
# Repeat this process of going through the Manage tab for all Types in the drop-down: Component, File, Language, Library, Module, Plugin, and Template. If the Author states Joomla! Project, then leave those extensions alone. Smart Search is a Joomla core supported extension even though the Author fields are blank. For all others, make sure that you uninstall those not in use or not compatible with Joomla 3.x.{{-}}{{note|&#039;&#039;&#039;NOTE!&#039;&#039;&#039; You will not be able to uninstall a Template that is set as default. You will need to select a Core supported template like Beez or Atomic and then uninstall the template if you need to do so.|type=serious}} &lt;br /&gt;
# Make a note of any versions of Packages and Components currently running that you will be keeping on your site. You can use the [http://docs.joomla.org/images/5/59/Third-Party_Extension_Inventory_Worksheet.pdf Third-Party Extension Inventory Worksheet] or just copy/paste them into a document for reference.&lt;br /&gt;
# Update all extensions to the latest versions.&lt;br /&gt;
# Before and as you update, note if the extensions have both 2.5 &amp;amp; 3.x versions in the same package. If so, they will be fine to &amp;quot;one-click update.&amp;quot; If not, and 2.5 and 3.x have different packages, you need to look at them case by case. They will normally fall into one of the following scenarios:&lt;br /&gt;
#* The extension has separate packages but upon upgrading to 3.x, they automatically detect this and still work. Make sure the developer confirms this.&lt;br /&gt;
#* The extension has separate packages that need to be uninstalled in 2.5 and then installed with the Joomla 3.x version once the site is migrated. An example of this might be a content plugin. It is very simple to uninstall it in 2.5 and then install it again in 3.x.&lt;br /&gt;
#* See [[Template_Considerations_During_Migration|Template Considerations]] for more specific information on templates.&lt;br /&gt;
{{-}}{{note|&#039;&#039;&#039;Note on Core Supported Extensions:&#039;&#039;&#039; If you are using a Core Supported Extension (Banners, Contacts, Messaging, Newsfeeds, Redirect, Search, Smart Search, or Weblinks) in Joomla 2.5 and it has been decoupled in Joomla 3.4+, Joomla will detect their use during the upgrade and install those Core Supported Extensions automatically.|type=notice}}&lt;br /&gt;
&lt;br /&gt;
=== Going to Joomla! 3.x ===&lt;br /&gt;
Once you have either updated or uninstalled your third-party extensions so that only those compatible with Joomla 3 are remaining in your installation continue with the following steps:&lt;br /&gt;
&lt;br /&gt;
# Go to {{rarr|System,Global Configuration,Server tab}} and turn Error Reporting from System Default to Maximum. Make sure to Save &amp;amp; Close.{{-}} [[File:j25-system-global-config-server-tab-en.png|border]]&lt;br /&gt;
# Go to {{rarr|Extensions,Plugin Manager}} and enter Remember Me into the Filter and press enter.&lt;br /&gt;
# Disable the Remember Me plugin by clicking the green check mark and making it a red circle.{{-}}[[File:j25-extension-plugin-remember-me-en.png|border]]&lt;br /&gt;
# Take another backup&lt;br /&gt;
# Recommended but not required: Fix assets. ([[Fixing_the_assets_table|Fixing the assets table]]). See below for a tool to do this in just a few clicks.&lt;br /&gt;
# Go to {{rarr|Components,Joomla Update}}. (It should say no updates found. If it doesn’t, update Joomla to the latest version and test. Then do another backup.) Click on the Options button at the top right corner.&lt;br /&gt;
# Select Short Term Support (This is the current text - it may be different in the future) from the drop-down for Update server.{{-}}[[File:j25-component-joomla-update-select-support-en.png|border]]&lt;br /&gt;
# Click Save &amp;amp; Close.&lt;br /&gt;
# You will then see your Installed Joomla Version, the Latest Joomla! verion and the URL for the update package.{{-}}[[File:j25-component-joomla-version-update-en.png|border]]&lt;br /&gt;
# Cross your fingers, make sure you turned off remember me and that you have a backup from just before this point.&lt;br /&gt;
# Click the Install the update button.&lt;br /&gt;
# Watch the spinning circle go round and round and feel the anxiety building. No just kidding. The amount of time the wheel spins is dependent on your site, internet connection, and server speed.&lt;br /&gt;
# If all goes well, you will get to a totally new look to the backend administrator panel.{{-}}[[File:j32-administrator-overview-en.png|border]]&lt;br /&gt;
# Click the Purge button given.&lt;br /&gt;
# Go to {{rarr|Extensions,Extension Manager,Database}} and click Fix&lt;br /&gt;
# From the Extension Manager go to Discover and see if there are any extensions to install&lt;br /&gt;
# # Recommended but not required: Fix assets. ([[Fixing_the_assets_table|Fixing the assets table]]). See below for a tool to do this in just a few clicks.&lt;br /&gt;
# Enable Remember Me from the Plugin Manager.&lt;br /&gt;
# Go to the frontend of your site and see if it shows up even if it’s not the right template. If so, continue. If not, see [[Joomla 2.5 to 3.x Common Migration Errors|common errors during migration]].&lt;br /&gt;
# Take a backup.&lt;br /&gt;
# Go to {{rarr|Content,Article Manager,Options button,Editing Layout tab}} and set the Save History to Yes.&lt;br /&gt;
# Install your new template or other extensions if you have them to install. Back up often.&lt;br /&gt;
# Configure them. Back up often.&lt;br /&gt;
# Test everything. Back up often.&lt;br /&gt;
&lt;br /&gt;
=== Going Live with your Joomla! 3.x Site ===&lt;br /&gt;
# When you’re ready to go live, back up your 2.5 site for a last time. Restore it in a subdirectory or subdomain if you would like to.&lt;br /&gt;
# Back up your Joomla 3.x site and move or restore your Joomla! 3.x site to the root (or change nameservers if you were building on a temp domain at a new hosting account root).&lt;br /&gt;
# Test again.&lt;br /&gt;
# Remove 2.5 site from server within a couple of days.&lt;br /&gt;
&lt;br /&gt;
If you had data change on the 2.5 site while you were migrating to 3.x you will want to get that data moved over to the 3.x site before going live. You can do this manually (make sure you keep the same user IDs - go in order) or by using a [http://extensions.joomla.org/extensions/migration-a-conversion/data-import-a-export transfer tool/third-party extension].&lt;br /&gt;
&lt;br /&gt;
== Suggested Tools ==&lt;br /&gt;
*[http://extensions.joomla.org/extensions/access-a-security/site-security/backup/1606 Akeeba Backup] for backup and restore.&lt;br /&gt;
*[http://extensions.joomla.org/extensions/access-a-security/site-access/backend-a-full-access-control/17951 ACL Manager ACL Manager] to fix asset issues in a few clicks.&lt;br /&gt;
&lt;br /&gt;
[[Category:Migration]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_2.5_to_3.10_Step_by_Step_Migration&amp;diff=134801</id>
		<title>Joomla 2.5 to 3.10 Step by Step Migration</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_2.5_to_3.10_Step_by_Step_Migration&amp;diff=134801"/>
		<updated>2014-11-23T15:22:43Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Set up a Development Location */ Update to 2.5.27/2.5.28&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following are step by step instructions to migrate your 2.5.x site to Joomla 3.x. While there are hundreds of different scenarios, this will give you the basic procedure to follow. Very complex migrations will likely be as a result of third-party extensions. You are encouraged to contact the developers of third-party extensions for their suggested path to migrate their extensions.&lt;br /&gt;
&lt;br /&gt;
== Intro ==&lt;br /&gt;
&lt;br /&gt;
The migration from Joomla 2.5 to 3.x is considered a mini-migration. This is because the Joomla core extensions will upgrade with a “one-click” upgrade via the Joomla! Update component in the backend administrator side of Joomla. Many third-party extensions are a one-click upgrade too. Some are not. You need to look at each one and determine what path the extension needs to follow to get from 2.5 to 3.x. If you haven&#039;t already, you might be interested in reading the [[Migration Step by Step Self Assessment|Self Assessment]] and [[Planning for Mini-Migration - Joomla 2.5 to 3.x|Planning for 2.5 to 3.x Migration]] prior to following the steps below.&lt;br /&gt;
&lt;br /&gt;
Joomla Core Extensions:&lt;br /&gt;
&lt;br /&gt;
* Categories&lt;br /&gt;
* Articles&lt;br /&gt;
* Menus&lt;br /&gt;
* Modules (core modules - not third-party)&lt;br /&gt;
* Banners&lt;br /&gt;
* Contacts&lt;br /&gt;
* Messaging&lt;br /&gt;
* Newsfeeds&lt;br /&gt;
* Redirect&lt;br /&gt;
* Search&lt;br /&gt;
* Smart Search&lt;br /&gt;
* Weblinks&lt;br /&gt;
&lt;br /&gt;
== Step by Step ==&lt;br /&gt;
&lt;br /&gt;
=== Set up a Development Location ===&lt;br /&gt;
# Take a backup of your live 2.5 site. You can use a suggested tool (see bottom of page) or you can do this manually&lt;br /&gt;
#*[[Backup_Basics_for_a_Joomla!_Web_Site|Backup Basics for a Joomla! Web Site]]&lt;br /&gt;
#*[[What_are_the_best_practices_for_site_backups%3F|What are the best practices for site backups?]]&lt;br /&gt;
# Make sure your environment meets the [http://www.joomla.org/about-joomla/technical-requirements.html technical requirements for Joomla 3] before proceeding&lt;br /&gt;
# Create a new database and new user to restore your 2.5 site to. &lt;br /&gt;
# Create a testing site or build area to work in and restore the back up copy of your 2.5 site in one of the following places:&lt;br /&gt;
#* A subdomain&lt;br /&gt;
#* A subdirectory&lt;br /&gt;
#* A local device via [http://www.wampserver.com/en/ WAMP], [http://www.mamp.info/en/ MAMP], [http://sourceforge.net/projects/lampas/ LAMP], [http://sourceforge.net/projects/xampp/ XAMPP].&lt;br /&gt;
#* A new hosting account on a temporary domain in the root (if you would like to change hosts in the process of migration)&lt;br /&gt;
#**Restoring a site on a local device. See [[Installing Joomla locally]] and [[Setting up your workstation for Joomla development]].&lt;br /&gt;
#**Restoring a site with a tool listed at bottom of page (read the developer documentation)&#039;&#039;&lt;br /&gt;
# In your test location, update your Joomla 2.5 instance to the latest maintenance release (currently 2.5.27, expecting 2.5.28 to be the last one).&lt;br /&gt;
# Test.&lt;br /&gt;
# Backup again.&lt;br /&gt;
&lt;br /&gt;
=== Assess Each Extension ===&lt;br /&gt;
&lt;br /&gt;
# Go to {{rarr|Extension Manager,Manage tab}}&lt;br /&gt;
# You are going to be looking at every single extension installed on your site. You will be determining if they need to update to the latest version or be uninstalled.&lt;br /&gt;
# Click the drop-down for Type.&lt;br /&gt;
# Select Package from the drop-down.{{-}}[[File:J25-admin-extension-manage-package-en.png|border]]{{-}}{{note|Selecting Package first is recommended because if there is something you need to uninstall in a package, it will automatically uninstall the associated Modules, Plugins, or anything else in the package at one time.}}&lt;br /&gt;
# Uninstall any Packages that are no longer needed or will not be migrating to Joomla 3.&lt;br /&gt;
# Repeat this process of going through the Manage tab for all Types in the drop-down: Component, File, Language, Library, Module, Plugin, and Template. If the Author states Joomla! Project, then leave those extensions alone. Smart Search is a Joomla core supported extension even though the Author fields are blank. For all others, make sure that you uninstall those not in use or not compatible with Joomla 3.x.{{-}}{{note|&#039;&#039;&#039;NOTE!&#039;&#039;&#039; You will not be able to uninstall a Template that is set as default. You will need to select a Core supported template like Beez or Atomic and then uninstall the template if you need to do so.|type=serious}} &lt;br /&gt;
# Make a note of any versions of Packages and Components currently running that you will be keeping on your site. You can use the [http://docs.joomla.org/images/5/59/Third-Party_Extension_Inventory_Worksheet.pdf Third-Party Extension Inventory Worksheet] or just copy/paste them into a document for reference.&lt;br /&gt;
# Update all extensions to the latest versions.&lt;br /&gt;
# Before and as you update, note if the extensions have both 2.5 &amp;amp; 3.x versions in the same package. If so, they will be fine to &amp;quot;one-click update.&amp;quot; If not, and 2.5 and 3.x have different packages, you need to look at them case by case. They will normally fall into one of the following scenarios:&lt;br /&gt;
#* The extension has separate packages but upon upgrading to 3.x, they automatically detect this and still work. Make sure the developer confirms this.&lt;br /&gt;
#* The extension has separate packages that need to be uninstalled in 2.5 and then installed with the Joomla 3.x version once the site is migrated. An example of this might be a content plugin. It is very simple to uninstall it in 2.5 and then install it again in 3.x.&lt;br /&gt;
#* See Template Considerations for more specific information on templates.&lt;br /&gt;
{{-}}{{note|&#039;&#039;&#039;Note on Core Supported Extensions:&#039;&#039;&#039; If you are using a Core Supported Extension (Banners, Contacts, Messaging, Newsfeeds, Redirect, Search, Smart Search, or Weblinks) in Joomla 2.5 and it has been decoupled in Joomla 3.4+, Joomla will detect their use during the upgrade and install those Core Supported Extensions automatically.|type=notice}}&lt;br /&gt;
&lt;br /&gt;
=== Going to Joomla! 3.x ===&lt;br /&gt;
Once you have either updated or uninstalled your third-party extensions so that only those compatible with Joomla 3 are remaining in your installation continue with the following steps:&lt;br /&gt;
&lt;br /&gt;
# Go to {{rarr|System,Global Configuration,Server tab}} and turn Error Reporting from System Default to Maximum. Make sure to Save &amp;amp; Close.{{-}} [[File:j25-system-global-config-server-tab-en.png|border]]&lt;br /&gt;
# Go to {{rarr|Extensions,Plugin Manager}} and enter Remember Me into the Filter and press enter.&lt;br /&gt;
# Disable the Remember Me plugin by clicking the green check mark and making it a red circle.{{-}}[[File:j25-extension-plugin-remember-me-en.png|border]]&lt;br /&gt;
# Take another backup&lt;br /&gt;
# Recommended but not required: Fix assets. ([[Fixing_the_assets_table|Fixing the assets table]]). See below for a tool to do this in just a few clicks.&lt;br /&gt;
# Go to {{rarr|Components,Joomla Update}}. (It should say no updates found. If it doesn’t, update Joomla to the latest version and test. Then do another backup.) Click on the Options button at the top right corner.&lt;br /&gt;
# Select Short Term Support (This is the current text - it may be different in the future) from the drop-down for Update server.{{-}}[[File:j25-component-joomla-update-select-support-en.png|border]]&lt;br /&gt;
# Click Save &amp;amp; Close.&lt;br /&gt;
# You will then see your Installed Joomla Version, the Latest Joomla! verion and the URL for the update package.{{-}}[[File:j25-component-joomla-version-update-en.png|border]]&lt;br /&gt;
# Cross your fingers, make sure you turned off remember me and that you have a backup from just before this point.&lt;br /&gt;
# Click the Install the update button.&lt;br /&gt;
# Watch the spinning circle go round and round and feel the anxiety building. No just kidding. The amount of time the wheel spins is dependent on your site, internet connection, and server speed.&lt;br /&gt;
# If all goes well, you will get to a totally new look to the backend administrator panel.{{-}}[[File:j32-administrator-overview-en.png|border]]&lt;br /&gt;
# Click the Purge button given.&lt;br /&gt;
# Go to {{rarr|Extensions,Extension Manager,Database}} and click Fix&lt;br /&gt;
# From the Extension Manager go to Discover and see if there are any extensions to install&lt;br /&gt;
# # Recommended but not required: Fix assets. ([[Fixing_the_assets_table|Fixing the assets table]]). See below for a tool to do this in just a few clicks.&lt;br /&gt;
# Enable Remember Me from the Plugin Manager.&lt;br /&gt;
# Go to the frontend of your site and see if it shows up even if it’s not the right template. If so, continue. If not, see [[Joomla 2.5 to 3.x Common Migration Errors|common errors during migration]].&lt;br /&gt;
# Take a backup.&lt;br /&gt;
# Go to {{rarr|Content,Article Manager,Options button,Editing Layout tab}} and set the Save History to Yes.&lt;br /&gt;
# Install your new template or other extensions if you have them to install. Back up often.&lt;br /&gt;
# Configure them. Back up often.&lt;br /&gt;
# Test everything. Back up often.&lt;br /&gt;
&lt;br /&gt;
=== Going Live with your Joomla! 3.x Site ===&lt;br /&gt;
# When you’re ready to go live, back up your 2.5 site for a last time. Restore it in a subdirectory or subdomain if you would like to.&lt;br /&gt;
# Back up your Joomla 3.x site and move or restore your Joomla! 3.x site to the root (or change nameservers if you were building on a temp domain at a new hosting account root).&lt;br /&gt;
# Test again.&lt;br /&gt;
# Remove 2.5 site from server within a couple of days.&lt;br /&gt;
&lt;br /&gt;
If you had data change on the 2.5 site while you were migrating to 3.x you will want to get that data moved over to the 3.x site before going live. You can do this manually (make sure you keep the same user IDs - go in order) or by using a [http://extensions.joomla.org/extensions/migration-a-conversion/data-import-a-export transfer tool/third-party extension].&lt;br /&gt;
&lt;br /&gt;
== Suggested Tools ==&lt;br /&gt;
*[http://extensions.joomla.org/extensions/access-a-security/site-security/backup/1606 Akeeba Backup] for backup and restore.&lt;br /&gt;
*[http://extensions.joomla.org/extensions/access-a-security/site-access/backend-a-full-access-control/17951 ACL Manager ACL Manager] to fix asset issues in a few clicks.&lt;br /&gt;
&lt;br /&gt;
[[Category:Migration]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Template_Considerations_During_Migration&amp;diff=134800</id>
		<title>Template Considerations During Migration</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Template_Considerations_During_Migration&amp;diff=134800"/>
		<updated>2014-11-23T14:50:11Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* You are using a template that was purchased from a template club */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Templates sometimes throw people for a loop during a migration. It need not be so. With a little explanation things can become clear as to what your options are.&lt;br /&gt;
&lt;br /&gt;
== Intro ==&lt;br /&gt;
&lt;br /&gt;
Templates are an extension. Just like components, modules, and plugins are extensions so is a template. &lt;br /&gt;
&lt;br /&gt;
In a migration setting you will need to decide what to do about your current template (which determines the current “look and feel” of your site).&lt;br /&gt;
&lt;br /&gt;
For the most part your template scenario will fit into one of the options below:&lt;br /&gt;
&lt;br /&gt;
* You are using a template that was purchased from a template club.&lt;br /&gt;
* You are using a template that was a one time purchase from some template provider.&lt;br /&gt;
* You had a custom template designed for you.&lt;br /&gt;
* You are using a default template that came with your Joomla installation (Joomla! 1.5 default templates are Rhuk_milkyway, JA Purity, Beez and Joomla! 2.5 default templates are Atomic and two different versions of Beez). It may have been customised significantly or not at all.&lt;br /&gt;
&lt;br /&gt;
== Assessing your Template Scenario ==&lt;br /&gt;
&lt;br /&gt;
Before deciding what to do, you will want to assess if you want to keep the existing look of your current template. If you want a change, this is the time to decide that. Perhaps the biggest reason you may want to change out your template is to utilize newer technology found in templates of the current day. Responsive templates were not available in 1.5 (unless you recently hired someone to make your 1.5 template mobile-friendly) and even at the beginning of the 2.5 life cycle, mobile versions of templates were slim and responsive not quite there yet.&lt;br /&gt;
&lt;br /&gt;
Let’s take these scenarios one at a time:&lt;br /&gt;
&lt;br /&gt;
=== You are using a template that was purchased from a template club ===&lt;br /&gt;
&lt;br /&gt;
This is the easiest one - most of the time. If you purchased a template from a template club, go back to the company and see if they have a version of your template for Joomla 3.x. If so, excellent, with a few things to think about.&lt;br /&gt;
If you’re running 1.5 going to 3.x, check to see if the version for Joomla 3 is responsive if that’s important to you.&lt;br /&gt;
If you’re going from 1.5 to 3, chances are good that there will be some differences in the 1.5 version of the template and the 3 version of the template. Be prepared to make some customisations to the template if you want to get it to look &#039;&#039;exactly&#039;&#039; the same.&lt;br /&gt;
&lt;br /&gt;
If you’re going from 2.5 to 3.x, check to see if the 2.5 and 3.x versions are packed in the same package from the developer. If they are not, check with the developer on steps to upgrade from Joomla 2.5 to 3.x. If 2.5 and 3.x are in the same package, you’re golden. If they’re not, you might still be golden. It just depends on the upgrade path of the developer.&lt;br /&gt;
&lt;br /&gt;
=== You are using a template that was a one time purchase from some template provider ===&lt;br /&gt;
If you purchased a template from a template provider that was a one time purchase, go back to the company and see if there’s a version available for Joomla 3.x. If there isn’t, you’re probably out of luck. Yet you can try contacting someone from the company to see if they can update it for you and make it compatible with Joomla 3.x.&lt;br /&gt;
&lt;br /&gt;
If that fails, then you will need to either:&lt;br /&gt;
&lt;br /&gt;
# Choose a new template.&lt;br /&gt;
# Convert the template to be compatible with Joomla 3.x. (Note: may not be responsive.)&lt;br /&gt;
&lt;br /&gt;
Item 1 is self explanatory. You can choose a template from a commercial provider or customise the Protostar default template (see more on Protostar below) that installs with Joomla 3.x. Item 2 not as simple. In order to convert your existing template to be compatible with Joomla 3, see the following section.&lt;br /&gt;
&lt;br /&gt;
== Template Conversions or Template Migrations ==&lt;br /&gt;
&lt;br /&gt;
=== 1.5 to 3 Template Conversions ===&lt;br /&gt;
[[Migrating a Template from Joomla 1.5 to 3.x]]&lt;br /&gt;
&lt;br /&gt;
=== 1.5 to 2.5 Template Conversions ===&lt;br /&gt;
*[[Upgrading a Joomla 1.5 template to Joomla 2.5]]&lt;br /&gt;
* http://magazine.joomla.org/issues/issue-may-2012/item/740-How-to-convert-Joomla-15-template-to-Joomla-25&lt;br /&gt;
&lt;br /&gt;
=== 2.5 to 3 Template Conversions ===&lt;br /&gt;
*[[J3.x:Converting A Previous Joomla! Version Template]]&lt;br /&gt;
*http://stackoverflow.com/questions/16055707/convert-joomla-2-5-template-to-3-0&lt;br /&gt;
*https://www.youtube.com/watch?v=E13QMWgvwlA &lt;br /&gt;
&lt;br /&gt;
=== You had a custom template designed for you ===&lt;br /&gt;
If you had a custom template designed for your 1.5 or 2.5 site, it will need to be converted to be compatible with Joomla 3. See links in the previous section. If you need to hire someone to convert your existing template to be compatible with Joomla 3.x, check out the Joomla! Resource Directory in either the [http://www.joomla.org/about-joomla/technical-requirements.html Template Development] or [http://resources.joomla.org/en/providers-by-category/category/migration-and-upgrade-services Migrations &amp;amp; Upgrades] categories.&lt;br /&gt;
&lt;br /&gt;
=== You are using a default template that came with your Joomla installation ===&lt;br /&gt;
Joomla! 1.5 default templates are Rhuk_milkyway, JA Purity, and Beez. Joomla! 2.5 default templates are Atomic and two different versions of Beez). It may have been customised significantly or not at all. If you are using a 2.5 default template and going to Joomla 3.x, you will be able to do a one-click update. If you are using a 1.5 default template then you will need to go through one of the steps above to update it for Joomla 3.x. (If someone finds this information incorrect, please contribute and fix it.&lt;br /&gt;
&lt;br /&gt;
Before deciding you want to convert your 1.5 template to Joomla 3, you may want to seriously consider finding a new template with similarities to your existing template. Chances are it will be cheaper and faster to use a new one then convert the old one. If you want to convert the old one and don’t have the skills to do it yourself, visit the Joomla! Resource Directory (link to either design or migration? what do you guys think?).&lt;br /&gt;
&lt;br /&gt;
=== When choosing templates ===&lt;br /&gt;
&lt;br /&gt;
* Only look at one template company at a time or it gets overwhelming&lt;br /&gt;
* If you start to get overwhelmed, take a break even if that means another day&lt;br /&gt;
* Try to look past the busy and flashy demos. You’re going to be putting your content into the template, not doing everything the template can do.&lt;br /&gt;
* Look at the module positions and variations of the templates&lt;br /&gt;
* Drink plenty of water while looking for templates and stretch every hour or so&lt;br /&gt;
&lt;br /&gt;
== Using the Protostar default template in Joomla 3.x ==&lt;br /&gt;
This section is incomplete. If you have knowledge in this topic, please participate by adding to this document. In the interim, a Google search on customising Protostar will yield you many results outside of Joomla! Docs.&lt;br /&gt;
&lt;br /&gt;
[[Joomla_LESS]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Migration]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=133013</id>
		<title>J3.x talk:Creating a simple module/Developing a Basic Module</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=133013"/>
		<updated>2014-11-12T01:28:27Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Last line of mod_helloworld.php */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Last line of mod_helloworld.php ==&lt;br /&gt;
As a newbie within module developing I&#039;d say, even if it&#039;s maybe nothing - the last paragraph in this section states &amp;quot;The one line that we haven’t explained so far is the first line.&amp;quot;. But the last line haven&#039;t been explained either. Not to go into any deep explanations, just a sentence or two - so you know what it&#039;ll do to the module if you&#039;d leave it out. [[User:Alekks|Alekks]] ([[User talk:Alekks|talk]]) 14:33, 11 November 2014 (CST)&lt;br /&gt;
:Absolutely agree. section 2 is very hard to read. The line you are referring to implements the 3rd bullit point. Suggest to change the bullit points into a,b,c and mention add a, add b, add c so the reader knows whereto the comments apply. add c would at least show the code and the text at the bullit point. What do you think? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 19:28, 11 November 2014 (CST)&lt;br /&gt;
&lt;br /&gt;
== $params ==&lt;br /&gt;
&lt;br /&gt;
This document explains calling a helper class passing $params for future use. The problem is, it doesn&#039;t mention where that $params is coming from. And what other data is available? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 08:41, 6 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:So there probably should be a sentence saying $params is generated by us automatically. As this is a &amp;quot;simple&amp;quot; module tutorial - I really want to avoid going into the fact this is automatically generated by the JModuleHelper. I&#039;d rather just say the thing with the params is created magically for you to manipulate. --[[User:Wilsonge|Wilsonge]] ([[User talk:Wilsonge|talk]]) 18:43, 6 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Why would you want to avoid mentioning JModuleHelper::renderModule. The first thing that comes to mind is how should I know $params is available? Where to look for the other variables availabe. Or state them, would be nice to know $app is available!. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 03:49, 7 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Because it&#039;s a &amp;quot;simple&amp;quot; module tutorial. When I first developed modules (which scarily wasn&#039;t that long ago) I didn&#039;t care where all this stuff came from - it was just amazing that it existed. Again for simple module development I&#039;m not sure that matters - with the $app thing for example I&#039;d rather get people redefining it. Firstly as I said I don&#039;t think people for a basic &amp;quot;here&#039;s how to create a module&amp;quot; tutorial we need to involve JModuleHelper and also because I really think you should define $app yourself for your things so it&#039;s as standalone as possible! The only thing arguably you should need is the $module object (as that contains params + module title instance) or if you only need the params then just $params.&lt;br /&gt;
&lt;br /&gt;
::Never mind. Hope that the J4 redesign will get rid of modules anyway![[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 19:34, 7 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t like &amp;quot;for page rendering&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Don&#039;t like &amp;quot;for page rendering&amp;quot;, would say: while rendering the page. It completely puts me off, thinking the module is the procedure to render a page, which is handled by JDocumentHtml. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 04:05, 7 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:In retrospect I don&#039;t like it either :P changed&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Form_field&amp;diff=128641</id>
		<title>Form field</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Form_field&amp;diff=128641"/>
		<updated>2014-10-20T10:34:30Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Showon */ comma-separated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Form fields are fields in a HTML &amp;lt;code&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/code&amp;gt;. Joomla! 2.5 {{JVer|2.5}} and newer supply the JForm class to conveniently and flexibly create forms with a large amount of form fields. Each form field type is a subclass of JFormField.&lt;br /&gt;
&lt;br /&gt;
In addition to being a flexible page creation tool, JFormFields are used by Joomla! to allow [[Administrator (User)|administrators]] to configure Joomla! or its extensions without changing the underlying code. In Joomla! 1.5, this was handled by the now deprecated [[API15:JParameter|JParameter]] and [[API15:JElement|JElement]] classes.&lt;br /&gt;
&lt;br /&gt;
To define form fields in the configuration of an extension, you must include them in a named fieldset, such as &amp;lt;code&amp;gt;&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;, that is within the &amp;lt;code&amp;gt;&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; section of the &amp;lt;code&amp;gt;&amp;lt;config&amp;gt;&amp;lt;/code&amp;gt; element in your [[Manifest files|XML manifest file]].&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Form validation ==&lt;br /&gt;
{{:Form validation}}&lt;br /&gt;
== Standard form field types ==&lt;br /&gt;
{{:Standard form field types}}&lt;br /&gt;
== Custom form field types ==&lt;br /&gt;
An [[extension]] can define its own form field types, which can then be used in its own forms or forms created by another extension. See [[Creating a custom form field type]] for instructions.&lt;br /&gt;
=== Modal form field types ===&lt;br /&gt;
If you have a field with a lot of values that don&#039;t fit a selection box, you can always make a modal form field that will allow the user to pick an item from a modal page with a table, filtering options, etc. (jut like any administrator table, e.g. &amp;quot;Articles&amp;quot;)&lt;br /&gt;
See [[Creating a modal form field]]&lt;br /&gt;
&lt;br /&gt;
== Common attributes ==&lt;br /&gt;
=== Labelclass ===&lt;br /&gt;
Adding the attribute &amp;lt;code&amp;gt;labelclass&amp;lt;/code&amp;gt; adds a CSS class for form field&#039;s label. Source: http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&amp;amp;tracker_item_id=28450&lt;br /&gt;
&lt;br /&gt;
=== Showon ===&lt;br /&gt;
Adding the attribute &amp;lt;code&amp;gt;showon&amp;lt;/code&amp;gt; allows to hide the field based on the value(s) of another field.&lt;br /&gt;
&lt;br /&gt;
Syntax to show the field &amp;quot;bar&amp;quot; only when &amp;quot;foo&amp;quot; is set to &amp;quot;1&amp;quot;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;field&lt;br /&gt;
    name=&amp;quot;foo&amp;quot;&lt;br /&gt;
    type=&amp;quot;list&amp;quot;&lt;br /&gt;
    &amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JYES&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JNO&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/field&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
    name=&amp;quot;bar&amp;quot;&lt;br /&gt;
    type=&amp;quot;text&amp;quot;&lt;br /&gt;
    showon=&amp;quot;foo:1&amp;quot;&lt;br /&gt;
/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
To match multiple values one can provide a comma-separated list of values. Like &amp;lt;code&amp;gt;shown=&amp;quot;foo:1,2&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was introduced with PullRequest: https://github.com/joomla/joomla-cms/pull/3379, available starting with Joomla 3.2.4.&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Landing Pages]]&lt;br /&gt;
[[Category:Form fields| ]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Connecting_to_an_external_database&amp;diff=127388</id>
		<title>Connecting to an external database</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Connecting_to_an_external_database&amp;diff=127388"/>
		<updated>2014-10-16T03:06:49Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: JModelLegacy instead of JModel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you need to access tables within the same database as your Joomla! installation then you can simply use the [[JFactory/getDBO|JFactory-&amp;gt;getDbo]] method.  This uses the already established connection that Joomla! uses to connect to the database.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$db is now an object of type [http://api.joomla.org/cms-3/classes/JDatabaseDriver.html JDatabaseDriver] and you can perform database operations on it using the usual methods.&lt;br /&gt;
&lt;br /&gt;
But what if you want to connect to a completely different database from the one used by Joomla!?.  This might be a different database on the same machine as your Joomla! site or it might be on a different host and perhaps even require a different database driver.  Well, you can do this using the [http://api.joomla.org/cms-3/classes/JDatabaseDriver.html#getInstance JDatabaseDriver-&amp;gt;getInstance] method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$option = array(); //prevent problems&lt;br /&gt;
&lt;br /&gt;
$option[&#039;driver&#039;]   = &#039;mysql&#039;;            // Database driver name&lt;br /&gt;
$option[&#039;host&#039;]     = &#039;db.myhost.com&#039;;    // Database host name&lt;br /&gt;
$option[&#039;user&#039;]     = &#039;fredbloggs&#039;;       // User for database authentication&lt;br /&gt;
$option[&#039;password&#039;] = &#039;s9(39s£h[%dkFd&#039;;   // Password for database authentication&lt;br /&gt;
$option[&#039;database&#039;] = &#039;bigdatabase&#039;;      // Database name&lt;br /&gt;
$option[&#039;prefix&#039;]   = &#039;abc_&#039;;             // Database prefix (may be empty)&lt;br /&gt;
&lt;br /&gt;
$db = JDatabaseDriver::getInstance( $option );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$db is now an object of type [http://api.joomla.org/cms-3/classes/JDatabaseDriver.html JDatabaseDriver] and you can perform database operations on it using the usual methods.&lt;br /&gt;
&lt;br /&gt;
Note that if the database uses a non-standard port number then this can be specified by adding it to the end of the host name.  For example, you might have your MySQL database running on port 3307 (the default is port 3306), in which case your host name might be &#039;db.myhost.com:3307&#039;.&lt;br /&gt;
&lt;br /&gt;
One feature of using [http://api.joomla.org/cms-3/classes/JDatabaseDriver.html#getInstance JDatabaseDriver-&amp;gt;getInstance] is that if another call is made with the same parameters it will return the previously created object rather than creating a fresh one.&lt;br /&gt;
&lt;br /&gt;
Note, however, that the parameters must match exactly for this to happen.  For example, if two calls were made to a MySQL database using [http://api.joomla.org/cms-3/classes/JDatabaseDriver.html#getInstance JDatabaseDriver-&amp;gt;getInstance], with the first using a host name of &#039;db.myhost.com&#039; and the second using &#039;db.myhost.com:3306&#039;, then two separate connections would be made, even though port 3306 is the default port for MySQL and so the parameters are logically the same.&lt;br /&gt;
&lt;br /&gt;
If you want to use the JModelLegacy with pagination etc. you can choose a different way. The point is, you have to replace the standard database object linked to the Joomla background database using [[JModelLegacy/setDbo|JModelLegacy-&amp;gt;setDbo]]. The first step is to override the constructor of your JModelLegacy in your model file&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
public function __construct($config = array())&lt;br /&gt;
	 {&lt;br /&gt;
		parent::__construct($config);&lt;br /&gt;
&lt;br /&gt;
		$option = array(); //prevent problems&lt;br /&gt;
 &lt;br /&gt;
		$option[&#039;driver&#039;]   = &#039;mysql&#039;;            // Database driver name&lt;br /&gt;
		$option[&#039;host&#039;]     = &#039;localhost&#039;;    // Database host name&lt;br /&gt;
		$option[&#039;user&#039;]     = &#039;myusername&#039;;       // User for database authentication&lt;br /&gt;
		$option[&#039;password&#039;] = &#039;saltedpassword&#039;;   // Password for database authentication&lt;br /&gt;
		$option[&#039;database&#039;] = &#039;db_extern&#039;;      // Database name&lt;br /&gt;
		$option[&#039;prefix&#039;]   = &#039;&#039;;             // Database prefix (may be empty)&lt;br /&gt;
		&lt;br /&gt;
		$db = JDatabaseDriver::getInstance( $option );&lt;br /&gt;
		parent::setDbo($db);&lt;br /&gt;
	 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
After that JModelLegacy behaves normal but uses your database.&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Development]][[Category:Database]][[Category:FAQ]][[Category:Tutorials]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Connecting_to_an_external_database&amp;diff=127387</id>
		<title>Connecting to an external database</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Connecting_to_an_external_database&amp;diff=127387"/>
		<updated>2014-10-16T02:50:25Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: Using JDatabaseDriver instead of JDatabase&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you need to access tables within the same database as your Joomla! installation then you can simply use the [[JFactory/getDBO|JFactory-&amp;gt;getDbo]] method.  This uses the already established connection that Joomla! uses to connect to the database.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$db is now an object of type [http://api.joomla.org/cms-3/classes/JDatabaseDriver.html JDatabaseDriver] and you can perform database operations on it using the usual methods.&lt;br /&gt;
&lt;br /&gt;
But what if you want to connect to a completely different database from the one used by Joomla!?.  This might be a different database on the same machine as your Joomla! site or it might be on a different host and perhaps even require a different database driver.  Well, you can do this using the [http://api.joomla.org/cms-3/classes/JDatabaseDriver.html#getInstance JDatabaseDriver-&amp;gt;getInstance] method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$option = array(); //prevent problems&lt;br /&gt;
&lt;br /&gt;
$option[&#039;driver&#039;]   = &#039;mysql&#039;;            // Database driver name&lt;br /&gt;
$option[&#039;host&#039;]     = &#039;db.myhost.com&#039;;    // Database host name&lt;br /&gt;
$option[&#039;user&#039;]     = &#039;fredbloggs&#039;;       // User for database authentication&lt;br /&gt;
$option[&#039;password&#039;] = &#039;s9(39s£h[%dkFd&#039;;   // Password for database authentication&lt;br /&gt;
$option[&#039;database&#039;] = &#039;bigdatabase&#039;;      // Database name&lt;br /&gt;
$option[&#039;prefix&#039;]   = &#039;abc_&#039;;             // Database prefix (may be empty)&lt;br /&gt;
&lt;br /&gt;
$db = JDatabaseDriver::getInstance( $option );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$db is now an object of type [http://api.joomla.org/cms-3/classes/JDatabaseDriver.html JDatabaseDriver] and you can perform database operations on it using the usual methods.&lt;br /&gt;
&lt;br /&gt;
Note that if the database uses a non-standard port number then this can be specified by adding it to the end of the host name.  For example, you might have your MySQL database running on port 3307 (the default is port 3306), in which case your host name might be &#039;db.myhost.com:3307&#039;.&lt;br /&gt;
&lt;br /&gt;
One feature of using [http://api.joomla.org/cms-3/classes/JDatabaseDriver.html#getInstance JDatabaseDriver-&amp;gt;getInstance] is that if another call is made with the same parameters it will return the previously created object rather than creating a fresh one.&lt;br /&gt;
&lt;br /&gt;
Note, however, that the parameters must match exactly for this to happen.  For example, if two calls were made to a MySQL database using [http://api.joomla.org/cms-3/classes/JDatabaseDriver.html#getInstance JDatabaseDriver-&amp;gt;getInstance], with the first using a host name of &#039;db.myhost.com&#039; and the second using &#039;db.myhost.com:3306&#039;, then two separate connections would be made, even though port 3306 is the default port for MySQL and so the parameters are logically the same.&lt;br /&gt;
&lt;br /&gt;
If you want to use the JModel with pagination etc. you can choose a different way. The point is, you have to replace the standard database object linked to the Joomla background database using [[JDatabase/setDbo|JDatabase-&amp;gt;setDbo]]. The first step is to override the constructor of your JModel in your model file&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
public function __construct($config = array())&lt;br /&gt;
	 {&lt;br /&gt;
		parent::__construct($config);&lt;br /&gt;
&lt;br /&gt;
		$option = array(); //prevent problems&lt;br /&gt;
 &lt;br /&gt;
		$option[&#039;driver&#039;]   = &#039;mysql&#039;;            // Database driver name&lt;br /&gt;
		$option[&#039;host&#039;]     = &#039;localhost&#039;;    // Database host name&lt;br /&gt;
		$option[&#039;user&#039;]     = &#039;myusername&#039;;       // User for database authentication&lt;br /&gt;
		$option[&#039;password&#039;] = &#039;saltedpassword&#039;;   // Password for database authentication&lt;br /&gt;
		$option[&#039;database&#039;] = &#039;db_extern&#039;;      // Database name&lt;br /&gt;
		$option[&#039;prefix&#039;]   = &#039;&#039;;             // Database prefix (may be empty)&lt;br /&gt;
		&lt;br /&gt;
		$db = JDatabaseDriver::getInstance( $option );&lt;br /&gt;
		parent::setDbo($db);&lt;br /&gt;
	 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
After that JModel behaves normal but uses your database.&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Development]][[Category:Database]][[Category:FAQ]][[Category:Tutorials]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Updating_from_an_existing_version&amp;diff=127038</id>
		<title>J3.x:Updating from an existing version</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Updating_from_an_existing_version&amp;diff=127038"/>
		<updated>2014-10-07T13:06:53Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Browse to Components, Joomla Update */  adding update server and caching&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is only for upgrading from Joomla! versions &#039;&#039;&#039;&amp;quot;1.7&#039;&#039;&#039; or &#039;&#039;&#039;2.5&amp;quot;&#039;&#039;&#039; to &#039;&#039;&#039;3.x&#039;&#039;&#039; OR a &#039;&#039;&#039;3.x.x&#039;&#039;&#039; version to &#039;&#039;&#039;{{CurrentSTSVer}}&#039;&#039;&#039;.&amp;lt;br/&amp;gt;&amp;lt;center&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;Always back up your site before updating.&#039;&#039;&#039;&amp;lt;/big&amp;gt;&amp;lt;/center&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The recommended way to update installations of Joomla! is to use the Joomla Updater component found in the Components menu of your site Administrator(Method A) introduced in J2.5.4. &lt;br /&gt;
&lt;br /&gt;
Updating earlier versions? Use one of the following methods.&lt;br /&gt;
*Use Install Method ([[#Method B - Install Method|Method B]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{notice|You should always review &#039;&#039;&#039;[[:Category:Upgrading Issues|Upgrading Issues]]&#039;&#039;&#039; and &#039;&#039;&#039;[[J3.1:Known upgrading issues and solutions|Known upgrading issues and solutions]]&#039;&#039;&#039; before upgrading.|title=Before You Begin}}&lt;br /&gt;
&lt;br /&gt;
==Browse to Components, Joomla Update==&lt;br /&gt;
[[File:Componentsmenu.PNG]]&lt;br /&gt;
&lt;br /&gt;
If an update is available there will be a message indicating this and a button to press. Which update you&#039;ll see depends on the setting for Update Server and caching. See options for Joomla! Update component. The first option shows the latest update of the major release in use. The second option shows the latest update of the latest major. Caching may cause not detecting an available update, purge cache. For J2.5 go to Extension manager =&amp;gt; Update and press Purge cache. &lt;br /&gt;
&lt;br /&gt;
[[File:Updatewaitingj3.PNG|475px]]&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
==Click on the &amp;quot;Install the Update&amp;quot; button and allow the update to run==&lt;br /&gt;
&lt;br /&gt;
[[File:Updatesuccess3.PNG]]&lt;br /&gt;
&lt;br /&gt;
== When it has completed you may need to refresh your screen or empty your browser cache to adjust for template CSS changes.==&lt;br /&gt;
&lt;br /&gt;
Note: Joomla! will notify you on your administrator home page (control panel) when an update is needed, but it will not do the update for you. You need to press the button to start the update.&lt;br /&gt;
&lt;br /&gt;
{{ambox|text=[[J3.1:Detailed_instructions_for_updating_from_3.1.2_to_3.1.4| Special Instructions for Version 3.1.2 Upgrades]]}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommended Steps and actions:&#039;&#039;&#039;&lt;br /&gt;
It is recommended that you follow these steps when updating a production site:&lt;br /&gt;
# Back up your site before upgrading to a new version. That way, if something goes wrong during the upgrade process, you can easily restore your site to the earlier version. &lt;br /&gt;
# Review the release notes for the new version to be familiar with what was changed.&lt;br /&gt;
# Update using one of the recommended methods outlined in this document. These methods install the new program files, delete unneeded old program files, and update the database as needed for the new Joomla version.&lt;br /&gt;
# Clear your browser cache and check that the update was successful, using the steps outlined in the &#039;&#039;&#039;Checking Site&#039;&#039;&#039; tab.&lt;br /&gt;
&lt;br /&gt;
=Method A - Update Method=&lt;br /&gt;
This is the easier way, also called &#039;&#039;One click update&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Step 1: Make sure you have a current backup of your site==&lt;br /&gt;
In many cases, your host will make periodic site backups.&lt;br /&gt;
&lt;br /&gt;
==Step 2a: Find and install updates==&lt;br /&gt;
# &#039;&#039;&#039;If your site is prior to 2.5.4, see Step 2b instead&#039;&#039;&#039;&lt;br /&gt;
# In the back end of your Joomla site, navigate to Components &amp;amp;rarr; Joomla Update.&lt;br /&gt;
# Click on Install the Update {{-}}[[Image:Update-screenshot-20120618-01.png|800px]]&lt;br /&gt;
# &#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; This process will take a few minutes. Wait until the process completes and it tells you that you are already on the current release, similar to the screen shown below.{{-}} [[Image:Update-screenshot-20120618-02.png|800px]]&lt;br /&gt;
# Congratulations! At this point, your site is updated.&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Clear your browser cache and check that your site is working correctly. See below Checking Your Site&lt;br /&gt;
&lt;br /&gt;
==Step 2b: Find and install updates (Prior to updating 2.5.4)==&lt;br /&gt;
# In the back end of your Joomla site, navigate to Extensions &amp;amp;rarr; Extension Manager and open the Update tab.&lt;br /&gt;
# Click on the Purge Cache icon to clear out the cache.&lt;br /&gt;
# Click on the Find Updates icon in the toolbar. If there is an available update, the screen will list it, similar to the screen shown below. [[Image:Update-screenshot-20120124-01.png|frame|center]] Note that available upgrades for extensions used in the site will also show in the list.&lt;br /&gt;
# Select the update (using the checkbox) and click on the Update icon in the toolbar. &lt;br /&gt;
# &#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; This process will take a few minutes. Wait until the process completes and the success message shows, similar to the screen shown below. [[Image:Update-screenshot-20120124-02.png|frame|center]]&lt;br /&gt;
# Congratulations! At this point, your site is updated.&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Clear your browser cache and check that your site is working correctly. See below Checking Your Site&lt;br /&gt;
&lt;br /&gt;
=Method B - Install Method=&lt;br /&gt;
In some cases it may not be possible to use the Extension Manager: Update method to update your site. One reason for this might be that you are using a non-standard distribution (for example, a distribution with a different default language installed). Another reason might be that your don&#039;t have a reliable enough internet connection to support automatic installation. &lt;br /&gt;
&lt;br /&gt;
In this case, you can still do an easy installation using the Extension Manager: Install screen. Like the Update screen, this method will do the database updates automatically and will completely update your system without any further steps.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Make sure you have a current backup of your site==&lt;br /&gt;
In many cases, your host will make periodic site backups.&lt;br /&gt;
&lt;br /&gt;
==Step 2: Locate the update file==&lt;br /&gt;
Locate the required archive file (for example, .zip, .tag.gz, or tar.bz2 archive) for your version. If you are updating to an x.x.0 release (for example, from 1.7.3 to 2.5.0), this will normally be a file like Joomla_2.5.0-Stable-Update_Package.zip. If you are updating within the same release series (for example, 2.5.0 to 2.5.1), then the file will be named something like Joomla_2.5.0_to_2.5.1-Stable-Patch_Package.zip.&lt;br /&gt;
&lt;br /&gt;
At this point, you have three options:&lt;br /&gt;
# Install from URL&lt;br /&gt;
# Install from Directory&lt;br /&gt;
# Upload Package File&lt;br /&gt;
&lt;br /&gt;
Install from URL is the easiest to do. With this option, the upgrade archive is loaded directly by the server, so it works well even if your local computer has a slow or unreliable internet connection. &lt;br /&gt;
&lt;br /&gt;
Install from Directory is the safest method if the server itself has a slow internet connection. With this method, you use FTP to load the unpacked update files into a temporary folder on the server. Then you point to that directory on the server for the installation.&lt;br /&gt;
&lt;br /&gt;
Upload Package File is fairly simple, but it requires that you have a good connection between your local computer and the server. &lt;br /&gt;
&lt;br /&gt;
The screen below shows the Extension Manager: Install screen with the three options labeled. &lt;br /&gt;
[[Image:Update-screenshot-20120124-03.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
===Install from URL===&lt;br /&gt;
This option is the easiest, if the archive file is available on a website. &lt;br /&gt;
# In the Extension Manager: Install screen, enter the URL for the archive file in the Install URL field.&lt;br /&gt;
# Press the Install button. &lt;br /&gt;
The system will work for a period of time, up to two minutes or more for a full version update. Then a message indicating a successful installation will display.&lt;br /&gt;
&lt;br /&gt;
===Install from Directory===&lt;br /&gt;
This option requires that you unpack the archive file in a directory on your server. This is the best method if you have a slow internet connection or you are experiencing timeouts during the update process.&lt;br /&gt;
# Unpack the archive file in a temporary directory on your local machine.&lt;br /&gt;
# Upload all the files in this directory (for example, using FTP) to a temporary directory that is visible to the web server. For example, you can create a sub-directory under the tmp directory in your Joomla root. For this example, let&#039;s say the directory on the server is &amp;lt;code&amp;gt;/home/myuser/myjoomla/tmp/upgrade250&amp;lt;/code&amp;gt;).&lt;br /&gt;
# In the Extension Manager: Install screen, enter the full path of the temporary directory (on the server) from step 2 (for example, &amp;lt;code&amp;gt;/home/myuser/myjoomla/tmp/upgrade250&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Press the Install button. &lt;br /&gt;
The system will work for a short time (perhaps a minute or less, depending on your server). Then a message indicating a successful installation will display.&lt;br /&gt;
&lt;br /&gt;
===Upload Package File===&lt;br /&gt;
This option requires that you first download the archive file to your local machine. &lt;br /&gt;
# Download the file to your local computer.&lt;br /&gt;
# In the Extension Manager: Install screen, click the Browse button next to the Package File field and browse to the archive file.&lt;br /&gt;
# Press the Install button. &lt;br /&gt;
The system will work for a period of time, up to two minutes or more for a full version update. Then a message indicating a successful installation will display.&lt;br /&gt;
&lt;br /&gt;
# Congratulations! At this point, your site is updated.&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Clear your browser cache and check that your site is working correctly. See below Checking Your Site&lt;br /&gt;
&lt;br /&gt;
=Method C - Manual Upgrade=&lt;br /&gt;
&lt;br /&gt;
This method is similar to the old method for updating Joomla versions. Here we want to replace the existing program files with the files from the update archive. The advantage of this method is that it will work on slower shared hosts. The disadvantage is that it requires more work by the system administrator.&lt;br /&gt;
&lt;br /&gt;
{{tip|&#039;&#039;This method can also be used to repair a site where the automatic update failed due to a server timeout.&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
===Copy the New Program Files to Your Site===&lt;br /&gt;
There are two ways you can do this.&lt;br /&gt;
# Copy the archive file to the root directory of your site and unpack the archive. The update archive will be named something like &amp;lt;code&amp;gt;Joomla_2.5.0-Stable-Update_Package.zip&amp;lt;/code&amp;gt;. Note that you need to tell the system to replace any existing files. For example, in GoDaddy.com, use the FTP File Manager to upload the update file and then use &amp;quot;Unarchive&amp;quot; to unpack it. Check the box &amp;quot;Overwrite existing files&amp;quot;.&lt;br /&gt;
# If you don&#039;t have the ability to unpack the archive on the server, create a temporary directory on your local machine and unpack the archive file there. Then FTP these files to the root directory of your site, overwriting the existing files.&lt;br /&gt;
&lt;br /&gt;
===Update the Database===&lt;br /&gt;
At this point, you should be able to log into the back end of your site with the new version installed. However, you are not done. Navigate to Extension Manager: Database. You will initially have Database problems when you check the Database, similar to the screen below. &lt;br /&gt;
[[Image:Update-screenshot-20120124-08.png|center|Database Screen Before Fix]]&lt;br /&gt;
This is expected. Click on the Fix icon to correct the problems. Now the screen should show that the database is up to date.&lt;br /&gt;
&lt;br /&gt;
===Install New Extensions=== &lt;br /&gt;
Navigate to Extension Manager: Discover and click on the Discover icon in the toolbar. If the updated version has new core extensions, new extensions will be listed, as shown below. &lt;br /&gt;
[[Image:Update-screenshot-20120124-09.png|800px|center|Discover Screen Before Install]]&lt;br /&gt;
Select all the extensions and click on the Install icon in the toolbar. The system should display a success message similar to the screen below.&lt;br /&gt;
[[Image:Update-screenshot-20120124-10.png|center|Discover Screen After Install]]&lt;br /&gt;
&lt;br /&gt;
===Delete removed files===&lt;br /&gt;
{{warning|title=Use Caution When Deleting|Use extreme care when deleting files and folders from your Joomla installation, deleting the wrong file or folder may break your site!}}&lt;br /&gt;
Look at the list of removed files located in &amp;lt;code&amp;gt;administrator/components/com_admin/script.php&amp;lt;/code&amp;gt; file.&lt;br /&gt;
Delete each of the files and folders listed the their applicable array:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function deleteUnexistingFiles()&lt;br /&gt;
	{&lt;br /&gt;
		$files = array(&lt;br /&gt;
			&#039;/includes/version.php&#039;,&lt;br /&gt;
			&#039;/installation/sql/mysql/joomla_update_170to171.sql&#039;,&lt;br /&gt;
			&#039;/installation/sql/mysql/joomla_update_172to173.sql&#039;,&lt;br /&gt;
			&#039;/installation/sql/mysql/joomla_update_17ga.sql&#039;,&lt;br /&gt;
			&#039;/libraries/cms/cmsloader.php&#039;,&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
		$folders = array(&lt;br /&gt;
			&#039;/libraries/joomlacms&#039;,&lt;br /&gt;
			&#039;/media/editors/tinymce/jscripts/tiny_mce/plugins/media/img&#039;,&lt;br /&gt;
			&#039;/media/plg_highlight&#039;,&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Update the #__extensions Table===&lt;br /&gt;
At this point, your site is updated. However, there is one more thing to do. The site will think it needs to be updated because a value in the #__extensions table is wrong. To fix this:&lt;br /&gt;
* Using phpMyAdmin or a similar tool, edit the row of the #__extensions table where the id column is &#039;700&#039;. (Note that the table prefix will be different in your site. For example, if your table prefix is &amp;quot;jos_&amp;quot;, then the table will be called &amp;quot;jos_extensions&amp;quot;.&lt;br /&gt;
* In the manifest_cache column, you will see the old version in the text (for example, &amp;lt;code&amp;gt;&amp;quot;version&amp;quot;:&amp;quot;1.7.3&amp;quot;&amp;lt;/code&amp;gt;). Change this to the new version (for example, &amp;lt;code&amp;gt;&amp;quot;version&amp;quot;:&amp;quot;2.5.0&amp;quot;&amp;lt;/code&amp;gt;). Be careful to not change anything else in this column.&lt;br /&gt;
* To check that this was successful, navigate to Extension Manager: Update and click Check for Updates. You should &#039;&#039;&#039;not&#039;&#039;&#039; see the current Joomla version in the list.&lt;br /&gt;
&lt;br /&gt;
At this point, your site should be updated correctly.&lt;br /&gt;
&lt;br /&gt;
=Checking Site=&lt;br /&gt;
&#039;&#039;&#039;This is required for method A and B!&#039;&#039;&#039;&lt;br /&gt;
After an update, it is a good idea to clear your browser cache snd check your site to make sure the update was successful. There are two quick checks you can do from the Extension Manager.&lt;br /&gt;
==Extension Manager: Check Database==&lt;br /&gt;
{{JVer|2.5}} This feature was added in version 2.5.0. It checks that your database is up to date with your Joomla programs. &lt;br /&gt;
&lt;br /&gt;
Navigate to Extension Manager: Database. If your database is up to date, you should see a screen similar to the one below:&lt;br /&gt;
[[Image:Update-screenshot-20120124-04.png|frame|center|Database Screen With No Problems]]&lt;br /&gt;
&lt;br /&gt;
If your database is not up to date, you will see a screen listing the problems found, similar to the one below:&lt;br /&gt;
[[Image:Update-screenshot-20120124-05.png|frame|center|Database Screen With 3 Database Problems]]&lt;br /&gt;
In this case, press the Fix button in the upper right corner. Joomla will update your database to correct the issues listed and then it will re-display the screen. If the fix was successful, the display will indicate that the database is up to date.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;N.B.&#039;&#039;&#039; If any errors fail to fix then make sure all the database Tables are checked in.&lt;br /&gt;
&lt;br /&gt;
==Extension Manager: Discover==&lt;br /&gt;
In some cases, when you update to a new Joomla version, new core extensions are added. If there were problems with the database update, these extensions may not have been correctly installed. To check this, navigate to Extension Manager: Discover. Then click on the Discover icon in the toolbar. The screen should show as follows:&lt;br /&gt;
[[Image:Update-screenshot-20120124-06.png|frame|center|Discover Screen With No Extensions To Install]]&lt;br /&gt;
If so, you know that any new extensions added during the udpate were correctly installed in the database.&lt;br /&gt;
&lt;br /&gt;
If there are uninstalled extensions, they will show similar to the following screen:&lt;br /&gt;
[[Image:Update-screenshot-20120124-07.png|frame|center|Discover Screen With Two Extensions To Install]]&lt;br /&gt;
In this case, check the check boxes and click on the Install icon in the toolbar. Joomla will install the extension(s) and then display the screen showing no extensions discovered. At this point, the new extensions have been installed in the database.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
If you have any questions before, during, or after the upgrade then please ask them on the &#039;&#039;&#039;[[jforum:710|Migrating and Upgrading to Joomla! 3.x Forum]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you have problems or errors during the update process, here are some tips.&lt;br /&gt;
* Check the following locations for more information:&lt;br /&gt;
:*&#039;&#039;&#039;[[J3.1:Known upgrading issues and solutions|Known upgrading issues and solutions]]&#039;&#039;&#039;&lt;br /&gt;
:*&#039;&#039;&#039;[[:Category:Upgrading Issues|Upgrading Issues]]&#039;&#039;&#039;&lt;br /&gt;
* Sometimes a simple clearing your browser cache as there may have been changes to the css or javascript that will need to be reloaded by your web browser after an upgrade.&lt;br /&gt;
* If any database error messages show after the update, be sure to check the Extension Manager: Database tab followed by the Extension Manager: Discover tab. In some cases, if a database error occurs it will prevent all the database updates from running. In this case, you can run them from the Database tab and then use the Discover&amp;amp;rarr;Install method to check and install any new extensions.&lt;br /&gt;
* If you encounter any errors or problems during or after the update, be sure to check the FAQ for the version you updated to. For example, for version 3.1.0, this will be an category entitled [[:Category:Version_3.1.0_FAQ|Category:Version 3.1.0 FAQ]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Upgrading]]&lt;br /&gt;
[[Category:Joomla! 3.0]][[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Update Working Group]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Category_talk:Upgrading_Issues&amp;diff=127035</id>
		<title>Category talk:Upgrading Issues</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Category_talk:Upgrading_Issues&amp;diff=127035"/>
		<updated>2014-10-07T12:25:06Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Link to Known issues and solutions results in blank screen */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Link to Known issues and solutions results in blank screen ==&lt;br /&gt;
&lt;br /&gt;
Link to Known issues and solutions results in blank screen.[[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 07:25, 7 October 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User_talk:Jgress-&amp;diff=126928</id>
		<title>User talk:Jgress-</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User_talk:Jgress-&amp;diff=126928"/>
		<updated>2014-10-07T04:34:17Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: Created page with &amp;quot;Hi, just changed your name on the update working group.~~~~&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, just changed your name on the update working group.[[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 23:34, 6 October 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Update_Working_Group&amp;diff=126927</id>
		<title>Update Working Group</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Update_Working_Group&amp;diff=126927"/>
		<updated>2014-10-07T04:29:59Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Team Members */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Update Working Group is the [[Production Working Groups|Production Working Group]] that is responsible for finding ways to make updating, upgrading, or migrating Joomla!, a simpler and smoother experience.&lt;br /&gt;
&lt;br /&gt;
Official support for Joomla! 2.5 is scheduled to end at the end of 2014. Users need to be encouraged to start planning and upgrading to Joomla! 3.x. Tips and resources will help to prevent issues during upgrading, and remove anxiety from the upgrade process.&lt;br /&gt;
&lt;br /&gt;
A large number of Joomla! web sites are still on 1.5.x.  These users require a lot more help and guidance to successfully migrate their websites to 3.x. &lt;br /&gt;
&lt;br /&gt;
The Update Working Group will collate current resources relating to Joomla! upgrades and migrations, write new content where needed, and liaise with Documentation, Production and Marketing to coordinate efforts.&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
&lt;br /&gt;
* Coordinator(s): [mailto:jacques.rentzke@community.joomla.org Jacques Rentzke], [[User:partic|Patrick Jackson]]&lt;br /&gt;
* PLT Contacts: [mailto:tom.hutchison@community.joomla.org Tom Hutchison] and [mailto:javier.gomez@community.joomla.org Javier Gómez]&lt;br /&gt;
* [[User:Wilsonge|George Wilson]], [[User:Jgress-|Jennifer Gress]], Nick Savov &lt;br /&gt;
&lt;br /&gt;
=== How do I volunteer? ===&lt;br /&gt;
&lt;br /&gt;
Please send an email to Jacques or one of the PLT contacts and you will be added to the communication channel for this working group.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Roadmap==&lt;br /&gt;
The next steps in this team are:&lt;br /&gt;
&lt;br /&gt;
1. Documentation (docs.joomla.org)&lt;br /&gt;
* locate, organize and update current content.&lt;br /&gt;
* add new content where needed.&lt;br /&gt;
* structure for Update (update, upgrade, migration) content&lt;br /&gt;
2. Production (changes to the CMS)&lt;br /&gt;
* Finding solutions to assist users before and during upgrade/migration, for instance:&lt;br /&gt;
** pre-upgrade-check to see if server or extensions are compatible.&lt;br /&gt;
** post-upgrade-check to see if update completed without error, and if not, to roll back update. (proposal)&lt;br /&gt;
** An official Project-supported migration tool for 1.5 to 3.x. (proposal)&lt;br /&gt;
** Finding and fixing any upgrade-related bugs&lt;br /&gt;
** Working with Extension developers to ensure smooth upgrades.&lt;br /&gt;
3. Marketing (content for joomla.org, PR and Social Media)&lt;br /&gt;
* Create dedicated section on joomla.org that collates all the upgrade information, and guides the user through the process or toward resources.&lt;br /&gt;
* Create visual help&lt;br /&gt;
* Promote this Upgrade recourse via events, conferences, PR, releases, social media&lt;br /&gt;
4. Translations&lt;br /&gt;
* Translate content into multiple languages (Translation Teams and other volunteers).&lt;br /&gt;
&lt;br /&gt;
== Meetings==&lt;br /&gt;
* 17 August 2014: Initial information&lt;br /&gt;
* 6 Sept 2014: [http://bit.ly/1n32JBW Update Working Group Meeting]&lt;br /&gt;
=== Calendar Items ===&lt;br /&gt;
&#039;&#039;&#039;Events are shown in time zone: GMT (no daylight saving or UTC + 0)&lt;br /&gt;
&amp;lt;div class=&amp;quot;calendar-container&amp;quot;&amp;gt;&lt;br /&gt;
{{#widget:Google Calendar&lt;br /&gt;
|id=community.joomla.org_24tcb4f5l3cj9b8i6p8pn59kb8@group.calendar.google.com&lt;br /&gt;
|view=agenda&lt;br /&gt;
|title=Joomla! Update Working Group Calendar&lt;br /&gt;
|showcals=false &amp;lt;!-- There is only one, so hide the drop tab --&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Documents ==&lt;br /&gt;
=== Known Content on Joomla! Documentation ===&lt;br /&gt;
&lt;br /&gt;
This is a list of known articles on JDocs. To add a page, just add the Category: Update Working Group to the page. &amp;quot;Edit the page found, at the bottom add &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Update Working Group]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
{{tip|Are you using [[wp:HotCat|HotCat]]? You should be! It&#039;s in your [[Special:Preferences#mw-prefsection-gadgets|preferences]].}}&lt;br /&gt;
==== Located Content ====&lt;br /&gt;
{{#dpl:category=Update Working Group|noresultsheader=None found}}&lt;br /&gt;
&lt;br /&gt;
=== Known Content not on Joomla! Documentation ===&lt;br /&gt;
Please list content for updating, upgrading and migrating in this section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--- erase this line&lt;br /&gt;
* First item (rewrite to suit to start a list [http://www.example.org Doc name] )&lt;br /&gt;
erase this line --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Working Groups]]&lt;br /&gt;
[[Category:PLT]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User_talk:Sovainfo&amp;diff=126910</id>
		<title>User talk:Sovainfo</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User_talk:Sovainfo&amp;diff=126910"/>
		<updated>2014-10-07T00:09:19Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Update Working Group ==&lt;br /&gt;
&lt;br /&gt;
Have no intention to join this group. Looks like I want to make some changes that might be related what they are working on. While trying to support someone on the forum discovered that there is no information on migrating to J3 to be found on the administrator portal. Consider that wrong and would like to change that. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 19:07, 6 October 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== wiki edits: ==&lt;br /&gt;
* Trying to find my own tag to use it in other discussions. Maybe there is a way to include it, i don&#039;t know. Found it, it is mentioned below in the edit window! Enter in the edit screen 4x~.&lt;br /&gt;
&lt;br /&gt;
* To propose article for deletion add {&amp;lt;code&amp;gt;{delete|reason}&amp;lt;/code&amp;gt;} at the top. reason should say why it needs to be removed. This will place it in the category candidates for deletion. Make sure it is not being referred to by other pages.&lt;br /&gt;
&lt;br /&gt;
== Open questions ==&lt;br /&gt;
&lt;br /&gt;
* How to move without reference.&lt;br /&gt;
:When you press move uncheck the box that says &amp;quot;Leave a redirect behind&amp;quot;&lt;br /&gt;
:: Tried that, but it left a reference anyway. Did notice that others are moving without it. So it must be possible. Reluctant to move anything now, because of it. Will try again to verify, thanks. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 08:15, 19 September 2013 (CDT)&lt;br /&gt;
:: Generally you should always leave a redirect because outside links could be to the page being moved. On rare occasions there could be a page that has no incoming links to it within the wiki and those are usually ones we leave the redirect out. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 13:42, 19 September 2013 (CDT)&lt;br /&gt;
* How to find out what pages are using the page.&lt;br /&gt;
: While on the page you want to find what links to it, click the gear in the top right hand corner drop-down menu.  What links here, click that and it&#039;ll give you a list of what links to it and how. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 13:49, 19 September 2013 (CDT)&lt;br /&gt;
:: Found it, thanks. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 14:57, 19 September 2013 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Automation of Help Screen pages ==&lt;br /&gt;
&lt;br /&gt;
Hi Sovainfo, I saw you have been working on the Help32 help screens. Mark Dexter did some work on automation of the screens from Selenium Tests. I think anything and everything he could grab he did and then I uploaded them to the Chunk30 namespace. You can find the list of all the Chunks here, [[User:Tom Hutchison/Finding pages with DPL]]. These included screenshots and the actual Field Data(which is what the chunks are). Then he integrated the screenshots into the chunks. All the UX changes really forced us to look at this method. A few hundred screenshots, ugh!&lt;br /&gt;
&lt;br /&gt;
I&#039;ve done about 25 of them and the good part will be, once integrated they can be updated in a matter of hours. Mostly waiting for the test loops to finish. Anyway, from changing the first 25 or so on the master list, I realized we needed to swap around How to Access with Description. It was a little backwards anyway. What is it, here is how you get to it. It is more for the wiki browsers anyway, not the admin accessed views. &lt;br /&gt;
&lt;br /&gt;
Let me know what you think. The most painful part will be getting all the chunks into the Help screens, matching them to the actual File name or chunk name. We tried to create a descriptive naming pattern. There are just so many of them it will take time. Once they are integrated, everything can be changed quickly. I think it took a total of 4 mins to upload everything. 3 for the files and 1 minute for all the chunk pages. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 19:35, 6 December 2013 (CST)&lt;br /&gt;
:: Thank you for this information. Not sure whether I understand the impact completely. Stopped changing ( only 3 more to go). Will have a look before I continue. Sounds like you are telling me I am wasting my time. Here is what I was trying to do:&lt;br /&gt;
::A post on the forum about the article category triggered me to focus on the Module Manager help. My objective is to have it consistent for all modules. Noticed missing description of Advanced settings, Menu assignment and Permissions. Created chunks for those. Later on found out that also How to access was not consistently applied. Decided to change that first for all modules (3 to go). Next step would have been to go through all of them again to change advanced, menu assignment and permissions plus moving toolbar down. Not happy with the format as it is now, but don&#039;t worry, won&#039;t change it without discussion.&lt;br /&gt;
::Would love to see this automated, but wonder whether it is and when this could be expected. Looking forward to answer on that. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 20:23, 6 December 2013 (CST)&lt;br /&gt;
&lt;br /&gt;
:::Nothing is a waste. The UX team really killed the modules, everything is moved around and changed. Definitely standardize the How to Access part. While you are there, just flip the location between Description and How To...move it down as a next section or move the description part up. I need to change that in the how to build a help screen page. I think the one thing is the Advanced Tab is going to be the same for all modules, that could be chunked and used on all of them. Actually, I think it is all three, Advanced settings, Menu assignment and Permissions. But again they are all the same so one chunk should cover them all. Did you look at any of the user pages? I&#039;ll try and get one of the module ones done as a sample.&lt;br /&gt;
:::Everything is there, it just needs integration. Once that happens, no more screenshots. At least from first count, 95% of all screenshots will be automated and a huge chunk of the help screen content too. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 20:34, 6 December 2013 (CST)&lt;br /&gt;
:::: Removing the header breaks the layout for all Module Manager help. Already created chunks for Menu Assignment and Permissions, they are always next to eachother. Advanced is the last tab, not always after Permissions, which is why it is separate. Do think the tabs should be in order of appearance. Advanced needs to be updated, somewhere there is a better description than that I initially created. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 21:24, 6 December 2013 (CST)&lt;br /&gt;
:::I know it did, sorry, but it is a great job on the use of templating!!! Yeah, someone else gets it.&lt;br /&gt;
:::The problem, a stupid problem because of DPL(Dynamic Page List) is there is no way to ignore a Heading Call. What I mean by that, if I tell DPL to pull in all content under &#039;Description&#039; it will grab everything under &#039;Description&#039; heading to the next page heading, this includes all template information. You can&#039;t even use the &amp;lt;nowiki&amp;gt;&amp;lt;noinclude&amp;gt;&amp;lt;/nowiki&amp;gt; tags. I could go into why, but it would take a few more paragraphs. Anyway, we need the hard stops in there.&lt;br /&gt;
:::Next, when Mark laid out the wiki text with the data, he added the screenshot heading. In retrospect, we probably shouldn&#039;t have done it that way, but logically it made sense because it was also sectioning off all the tabs if there were more to section off.&lt;br /&gt;
:::Unfortunately, I had to down grade the headings from = to == again because of the automated content and how it was laid out.&lt;br /&gt;
:::Bright side, between your new how to access template and the automation, all a module needs to build the page is&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==Description==&lt;br /&gt;
A description...&lt;br /&gt;
==How to Access==&lt;br /&gt;
{{Chunk30:ModuleManager-How-to-acces-module|module=&amp;lt;name of Module&amp;gt;}}&lt;br /&gt;
                              \&amp;lt;name of module&amp;gt;/&lt;br /&gt;
{{Chunk30:Help-3x-module-site-articles-newsflash}}&lt;br /&gt;
&lt;br /&gt;
===Common Details===&lt;br /&gt;
{{Chunk30:Module Details}}&lt;br /&gt;
&lt;br /&gt;
===Common Tabs===&lt;br /&gt;
{{Chunk30:Help-3x-module-site-common-tabs}}&lt;br /&gt;
&lt;br /&gt;
==Toolbar==&lt;br /&gt;
etc... the rest below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:::As for in order, Common is common to all. I know what you mean by the common details is moved down. Mark, George, myself just figured they are all common to every module and required. Perhaps a better name for Common Details? [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 22:01, 6 December 2013 (CST)&lt;br /&gt;
:::Oh, I guess I should explain why the DPL call is important to &amp;quot;Description&amp;quot; too. There are several uses of DPL to grab a link to a Help Screen, with a Description of what the help screen does in tables through out docs. Mainly on the Admin Doc pages, but the related help screen template uses it too. Without the hard stop a description put in a table would include the description and the screenshot and all the information in the chunk for the screenshot. These can get pretty lengthy. Some of the automated chunks contain lots of information. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 22:21, 6 December 2013 (CST)&lt;br /&gt;
::::So, if there was a way to get the description from somewhere the whole page could be generated. Maybe placing it in a chunk together with getting the content from the source. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 06:05, 7 December 2013 (CST)&lt;br /&gt;
:Yes, the whole of anything under Description including all template and/or chunks up until the pages next real section. DPL used the logic of labeled section inclusion extension, which never had the noinclude tags. If we placed it in a chunk, then you would have to change the description parameter being looked for on all the pages using the labeled section calls. Which is an alternative to what is being done now. In the scheme of things, it prob is best to have the &amp;quot;what it is&amp;quot; first then how to get to it. In admin view calling help screens, it prob is a bit more logical that way too. What is this, click help, first paragraphs tell the story. The how to access only really exist for wiki(docs) readers. A help screen user will already be on the page. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 07:30, 9 December 2013 (CST)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User_talk:Sovainfo&amp;diff=126909</id>
		<title>User talk:Sovainfo</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User_talk:Sovainfo&amp;diff=126909"/>
		<updated>2014-10-07T00:07:23Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Update Working Group */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== wiki edits: ==&lt;br /&gt;
* Trying to find my own tag to use it in other discussions. Maybe there is a way to include it, i don&#039;t know. Found it, it is mentioned below in the edit window! Enter in the edit screen 4x~.&lt;br /&gt;
&lt;br /&gt;
* To propose article for deletion add {&amp;lt;code&amp;gt;{delete|reason}&amp;lt;/code&amp;gt;} at the top. reason should say why it needs to be removed. This will place it in the category candidates for deletion. Make sure it is not being referred to by other pages.&lt;br /&gt;
&lt;br /&gt;
== Open questions ==&lt;br /&gt;
&lt;br /&gt;
* How to move without reference.&lt;br /&gt;
:When you press move uncheck the box that says &amp;quot;Leave a redirect behind&amp;quot;&lt;br /&gt;
:: Tried that, but it left a reference anyway. Did notice that others are moving without it. So it must be possible. Reluctant to move anything now, because of it. Will try again to verify, thanks. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 08:15, 19 September 2013 (CDT)&lt;br /&gt;
:: Generally you should always leave a redirect because outside links could be to the page being moved. On rare occasions there could be a page that has no incoming links to it within the wiki and those are usually ones we leave the redirect out. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 13:42, 19 September 2013 (CDT)&lt;br /&gt;
* How to find out what pages are using the page.&lt;br /&gt;
: While on the page you want to find what links to it, click the gear in the top right hand corner drop-down menu.  What links here, click that and it&#039;ll give you a list of what links to it and how. [[User:Hutchy68|Tom Hutchison]] ([[User talk:Hutchy68|talk]]) 13:49, 19 September 2013 (CDT)&lt;br /&gt;
:: Found it, thanks. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 14:57, 19 September 2013 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Automation of Help Screen pages ==&lt;br /&gt;
&lt;br /&gt;
Hi Sovainfo, I saw you have been working on the Help32 help screens. Mark Dexter did some work on automation of the screens from Selenium Tests. I think anything and everything he could grab he did and then I uploaded them to the Chunk30 namespace. You can find the list of all the Chunks here, [[User:Tom Hutchison/Finding pages with DPL]]. These included screenshots and the actual Field Data(which is what the chunks are). Then he integrated the screenshots into the chunks. All the UX changes really forced us to look at this method. A few hundred screenshots, ugh!&lt;br /&gt;
&lt;br /&gt;
I&#039;ve done about 25 of them and the good part will be, once integrated they can be updated in a matter of hours. Mostly waiting for the test loops to finish. Anyway, from changing the first 25 or so on the master list, I realized we needed to swap around How to Access with Description. It was a little backwards anyway. What is it, here is how you get to it. It is more for the wiki browsers anyway, not the admin accessed views. &lt;br /&gt;
&lt;br /&gt;
Let me know what you think. The most painful part will be getting all the chunks into the Help screens, matching them to the actual File name or chunk name. We tried to create a descriptive naming pattern. There are just so many of them it will take time. Once they are integrated, everything can be changed quickly. I think it took a total of 4 mins to upload everything. 3 for the files and 1 minute for all the chunk pages. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 19:35, 6 December 2013 (CST)&lt;br /&gt;
:: Thank you for this information. Not sure whether I understand the impact completely. Stopped changing ( only 3 more to go). Will have a look before I continue. Sounds like you are telling me I am wasting my time. Here is what I was trying to do:&lt;br /&gt;
::A post on the forum about the article category triggered me to focus on the Module Manager help. My objective is to have it consistent for all modules. Noticed missing description of Advanced settings, Menu assignment and Permissions. Created chunks for those. Later on found out that also How to access was not consistently applied. Decided to change that first for all modules (3 to go). Next step would have been to go through all of them again to change advanced, menu assignment and permissions plus moving toolbar down. Not happy with the format as it is now, but don&#039;t worry, won&#039;t change it without discussion.&lt;br /&gt;
::Would love to see this automated, but wonder whether it is and when this could be expected. Looking forward to answer on that. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 20:23, 6 December 2013 (CST)&lt;br /&gt;
&lt;br /&gt;
:::Nothing is a waste. The UX team really killed the modules, everything is moved around and changed. Definitely standardize the How to Access part. While you are there, just flip the location between Description and How To...move it down as a next section or move the description part up. I need to change that in the how to build a help screen page. I think the one thing is the Advanced Tab is going to be the same for all modules, that could be chunked and used on all of them. Actually, I think it is all three, Advanced settings, Menu assignment and Permissions. But again they are all the same so one chunk should cover them all. Did you look at any of the user pages? I&#039;ll try and get one of the module ones done as a sample.&lt;br /&gt;
:::Everything is there, it just needs integration. Once that happens, no more screenshots. At least from first count, 95% of all screenshots will be automated and a huge chunk of the help screen content too. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 20:34, 6 December 2013 (CST)&lt;br /&gt;
:::: Removing the header breaks the layout for all Module Manager help. Already created chunks for Menu Assignment and Permissions, they are always next to eachother. Advanced is the last tab, not always after Permissions, which is why it is separate. Do think the tabs should be in order of appearance. Advanced needs to be updated, somewhere there is a better description than that I initially created. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 21:24, 6 December 2013 (CST)&lt;br /&gt;
:::I know it did, sorry, but it is a great job on the use of templating!!! Yeah, someone else gets it.&lt;br /&gt;
:::The problem, a stupid problem because of DPL(Dynamic Page List) is there is no way to ignore a Heading Call. What I mean by that, if I tell DPL to pull in all content under &#039;Description&#039; it will grab everything under &#039;Description&#039; heading to the next page heading, this includes all template information. You can&#039;t even use the &amp;lt;nowiki&amp;gt;&amp;lt;noinclude&amp;gt;&amp;lt;/nowiki&amp;gt; tags. I could go into why, but it would take a few more paragraphs. Anyway, we need the hard stops in there.&lt;br /&gt;
:::Next, when Mark laid out the wiki text with the data, he added the screenshot heading. In retrospect, we probably shouldn&#039;t have done it that way, but logically it made sense because it was also sectioning off all the tabs if there were more to section off.&lt;br /&gt;
:::Unfortunately, I had to down grade the headings from = to == again because of the automated content and how it was laid out.&lt;br /&gt;
:::Bright side, between your new how to access template and the automation, all a module needs to build the page is&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==Description==&lt;br /&gt;
A description...&lt;br /&gt;
==How to Access==&lt;br /&gt;
{{Chunk30:ModuleManager-How-to-acces-module|module=&amp;lt;name of Module&amp;gt;}}&lt;br /&gt;
                              \&amp;lt;name of module&amp;gt;/&lt;br /&gt;
{{Chunk30:Help-3x-module-site-articles-newsflash}}&lt;br /&gt;
&lt;br /&gt;
===Common Details===&lt;br /&gt;
{{Chunk30:Module Details}}&lt;br /&gt;
&lt;br /&gt;
===Common Tabs===&lt;br /&gt;
{{Chunk30:Help-3x-module-site-common-tabs}}&lt;br /&gt;
&lt;br /&gt;
==Toolbar==&lt;br /&gt;
etc... the rest below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:::As for in order, Common is common to all. I know what you mean by the common details is moved down. Mark, George, myself just figured they are all common to every module and required. Perhaps a better name for Common Details? [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 22:01, 6 December 2013 (CST)&lt;br /&gt;
:::Oh, I guess I should explain why the DPL call is important to &amp;quot;Description&amp;quot; too. There are several uses of DPL to grab a link to a Help Screen, with a Description of what the help screen does in tables through out docs. Mainly on the Admin Doc pages, but the related help screen template uses it too. Without the hard stop a description put in a table would include the description and the screenshot and all the information in the chunk for the screenshot. These can get pretty lengthy. Some of the automated chunks contain lots of information. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 22:21, 6 December 2013 (CST)&lt;br /&gt;
::::So, if there was a way to get the description from somewhere the whole page could be generated. Maybe placing it in a chunk together with getting the content from the source. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 06:05, 7 December 2013 (CST)&lt;br /&gt;
:Yes, the whole of anything under Description including all template and/or chunks up until the pages next real section. DPL used the logic of labeled section inclusion extension, which never had the noinclude tags. If we placed it in a chunk, then you would have to change the description parameter being looked for on all the pages using the labeled section calls. Which is an alternative to what is being done now. In the scheme of things, it prob is best to have the &amp;quot;what it is&amp;quot; first then how to get to it. In admin view calling help screens, it prob is a bit more logical that way too. What is this, click help, first paragraphs tell the story. The how to access only really exist for wiki(docs) readers. A help screen user will already be on the page. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 07:30, 9 December 2013 (CST)&lt;br /&gt;
&lt;br /&gt;
== Update Working Group ==&lt;br /&gt;
&lt;br /&gt;
Have no intention to join this group. Looks like I want to make some changes that might be related what they are working on. While trying to support someone on the forum discovered that there is no information on migrating to J3 to be found on the administrator portal. Consider that wrong and would like to change that. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 19:07, 6 October 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Bug_Tracking_Process&amp;diff=120174</id>
		<title>Bug Tracking Process</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Bug_Tracking_Process&amp;diff=120174"/>
		<updated>2014-06-06T22:48:51Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Reporting Issues */ changed to j3 bug reporting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article documents the current Joomla! bug tracking process from the time a new bug is reported to the time it is closed.&lt;br /&gt;
&lt;br /&gt;
Joomla! bugs are tracked in the follower tracker:&lt;br /&gt;
;*[http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8103 Joomla! CMS Issue Tracker] - Active.&lt;br /&gt;
:This is for issues with supported Joomla Versions. As of November 2013, this is version 2.5 and 3.2.&lt;br /&gt;
&lt;br /&gt;
==Helping out==&lt;br /&gt;
&lt;br /&gt;
You do &#039;&#039;not&#039;&#039; need to be a member of the JBS to help fix bugs in Joomla. Anyone can report bugs, test patches, or submit patches. If you want to help with resolving bugs, go to the [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8103 Tracker]. You can help resolve Open issues as outlined below. You can create and submit patches for Confirmed issues. Or you can help test Pending issues. To report about what you have done, log in to joomlacode and add a comment. You&#039;ll be amazed at how much impact you can have and how good it feels to contribute to the Joomla! project.&lt;br /&gt;
&lt;br /&gt;
If you have any questions, or are interested in joining the [[Portal:Bug_Squad|JBS]], please contact [mailto:mark.dexter@community.joomla.org Mark Dexter] or [mailto:nick.savov@community.joomla.org Nick Savov]. &lt;br /&gt;
&lt;br /&gt;
===Testing Pre releases===&lt;br /&gt;
&lt;br /&gt;
Before a stable release of Joomla is released the update needs testing.  This is a simple process:&lt;br /&gt;
# Install the current stable release of Joomla in a subfolder or on localhost (you can use a copy of a production site but &#039;&#039;&#039;never test on a live production site&#039;&#039;&#039;).&lt;br /&gt;
# Navigate to the Options of the Joomla! Update component and set the &#039;Update server&#039; to &#039;Test&#039;. [[Help32:Components Joomla Update|Components Joomla Update]]&lt;br /&gt;
# When a Joomla pre release is ready for testing, log into your test site and install the Update.  Then test the site works as expected.  Please report any errors on the [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8103 Joomla! CMS Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
==Reporting Issues==&lt;br /&gt;
&lt;br /&gt;
[[Image:ReportingIssues.png|ReportingIssues.png]]&lt;br /&gt;
&lt;br /&gt;
The process is normally started in one of two ways: the bug is added to the respective tracker, or a user reports the bug in the [http://forum.joomla.org/viewforum.php?f=728 Joomla! Bug Forum] for the given maintenance release.&lt;br /&gt;
&lt;br /&gt;
=== Issues reported on the forum ===&lt;br /&gt;
&lt;br /&gt;
JBS members scan the forums to determine when issues need to be put into the tracker. If the issue can be reproduced, is clearly a bug, and there are step-by-step instructions for how to reproduce it, it can be entered into the tracker with a status of Confirmed. If it is not as clear-cut, it can be entered with a status of Open, so that other JBS members will know it needs further investigation.&lt;br /&gt;
&lt;br /&gt;
=== Issues directly reported to the tracker ===&lt;br /&gt;
&lt;br /&gt;
When an issue is added to the tracker, the status will be either &lt;br /&gt;
1. Open &lt;br /&gt;
2. Confirmed&lt;br /&gt;
3. or Pending &lt;br /&gt;
depending on the situation. If the issue needs more investigation, then it should be set to Open. If the issue (1) is a bug and (2) can be reproduced and (3) has good test instructions, it should be set to Confirmed. If it meets the three Confirmed criteria and also has a good patch attached, it should be set to Pending. See below for more information about the status codes.&lt;br /&gt;
&lt;br /&gt;
=== Issue Priorities ===&lt;br /&gt;
&lt;br /&gt;
[[Bug and Issue Tracker Priority|Why most issues are priority 3]], or Normal. The artifacts are prioritized according to the following characteristics:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Critical (1):&#039;&#039;&#039;&lt;br /&gt;
The trunk is not working at all. Significant parts of the source are broken preventing key operations.  Examples would be login, installation, extension installers, javascript errors that prevent you from moving a save or similar action, etc.  Also includes the generation of Fatal PHP errors and major security issues in a prerelease (Security issues for a stable release should NOT be reported in the tracker but instead reported to the security team security@joomla.org).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Major (2):&#039;&#039;&#039;&lt;br /&gt;
Parts of the source are obstructing operation in a serious way or causing a major loss in advertised function.  Examples would includes PHP notices and warnings and reported javascript errors.  Major issues will also typically prevent the release cycle from moving from Beta to Release Candidate (RC), or Release Candidate to General Availability (GA).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Normal: (3)&#039;&#039;&#039;&lt;br /&gt;
Issues that are hindering advertised behavior but the application is still workable.  Examples would include parameters not working as advertised, language files not loading as expected, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minor (4):&#039;&#039;&#039;&lt;br /&gt;
Minor loss of function and generally annoying behavior.  May include less common platform or browser specific problems that while they may be technically major in those environments, they represent a minority.  Also include missing translation strings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trivial (5):&#039;&#039;&#039;&lt;br /&gt;
Cosmetic problems, misspelled words, graphically misaligned object, less common issues with parameters, etc.&lt;br /&gt;
&lt;br /&gt;
== Resolving Issues ==&lt;br /&gt;
&lt;br /&gt;
The bug squad takes care of the Joomla releases. For example, that means getting the 3.0.1, 3.0.2, 3.0.3, 3.0.4  etc releases ready by fixing problems that come up. The idea is to make the release increasingly stable and take care of issues that come up. At the same time, it is vitally important not to break anything that is working. That&#039;s called software regression and it&#039;s not something you want at this stage.&lt;br /&gt;
&lt;br /&gt;
In the trackers there are several common statuses, mainly: open, confirmed, pending, ready to commit.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Open&#039;&#039;&#039; means it&#039;s reported, but it hasn&#039;t been determined for sure whether it is a real bug or not. Many Open issues are not actually bugs. If the issue fits into one of the categories below, then the status is changed as indicated and the bug is closed:&lt;br /&gt;
** Cannot be reproduced. We have tried the same thing the reported did but the software appears to work correctly. (In many cases, more information is needed to be able to reproduce a bug. See &amp;quot;Information Required&amp;quot; below.) Change status to &#039;&#039;&#039;Unable to confirm&#039;&#039;&#039;.&lt;br /&gt;
** Has already been reported in a different issue number. Change status to &#039;&#039;&#039;Duplicate report&#039;&#039;&#039; and add the number on the duplicates tab.&lt;br /&gt;
** Is a known limitation of the software. Change status to &#039;&#039;&#039;Known issue&#039;&#039;&#039;.&lt;br /&gt;
** Is a feature request, a mistake made by a user, or is the way the software is intended to work. Change status to &#039;&#039;&#039;Not a bug&#039;&#039;&#039;.&lt;br /&gt;
** Is a bug with an extension or some other external program or a server issue that will not be addressed. Change status to &#039;&#039;&#039;Not Joomla! core&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Information Required&#039;&#039;&#039; is used if we need more information &#039;&#039;from the person who reported the issue&#039;&#039; to decide about the issue. For example, there are questions about how to reproduce the problem or other questions about the issue. If we get the information we need, then we can continue processing the issue. If we don&#039;t get the information within two weeks, then we can change the status to Unable to confirm (or another of the closed status codes if that is more applicable).&lt;br /&gt;
* &#039;&#039;&#039;Needs Review&#039;&#039;&#039; is used if we need a JBS Coordinator, Development Coordinator, or other experienced developer to review the issue. This is different from Information Required, which means that we need more information from the person who reported the issue.&lt;br /&gt;
* &#039;&#039;&#039;Started&#039;&#039;&#039; means that JBS has checked the issue, but is not quite sure if the issue is an actual bug (i.e. confirmed), and that there is discussion going on about the issue, which doesn&#039;t require additional information &#039;&#039;from the person who reported the issue&#039;&#039;.  It is a state that&#039;s between &#039;&#039;&#039;Opened&#039;&#039;&#039; and &#039;&#039;&#039;Confirmed&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Confirmed&#039;&#039;&#039; means that JBS has confirmed that this issue is a bug in Joomla! that should be fixed. That&#039;s when the JBS tries to solve it or consults with the development team about a solution. &#039;&#039;At this point there should be clear step-by-step test instructions that indicate how to reproduce the problem. For version 1.6, use the Test Instructions field for this information.&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Pending&#039;&#039;&#039; means that a patch has been submitted that a JBS member or development coordinator or appropriate leadership team member believes fixes the bug. If needed, additional test instructions are entered for the issue. Every Pending issue should have instructions that tell the tester how to reproduce the problem and make sure the patch fixes the problem.&lt;br /&gt;
* &#039;&#039;&#039;In Progress&#039;&#039;&#039; means that an issue is being worked on. This will most likely be a situation where the issue was set to Pending but there were problems with the patch that require additional work. It also may be a case where the issue is complex and will take some time to solve. JBS members can participate in In Progress issues but generally should not start coding before discussing with others working on the issue already.&lt;br /&gt;
* &#039;&#039;&#039;Ready to commit&#039;&#039;&#039; means that (in general) two separate people have successfully tested the same patch file, and it works correctly with the patch. Note that, for some issues that are more complex or higher impact, we may need more than two people to test or may need to test on multiple platforms. For simple issues, such as fixing typos in language strings or comments, one tester is enough.&lt;br /&gt;
* &#039;&#039;&#039;Fixed in SVN&#039;&#039;&#039; means that, after reviewing the code, the JBS commit coordinators have determined that the patch is good and the change has been committed to the Joomla! codebase. At this point, it will be part of the next Joomla! maintenance release.&lt;br /&gt;
&lt;br /&gt;
The flowchart below provides a visual guide to how the process for resolving bugs works.&lt;br /&gt;
&lt;br /&gt;
[[Image:ResolvingIssues.png|ResolvingIssues.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt; [[Category:Bug Squad]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Tracker]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Developing_a_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=118280</id>
		<title>J3.x talk:Developing a MVC Component/Adding a view to the site part</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Developing_a_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=118280"/>
		<updated>2014-05-22T12:47:47Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Class name HelloWorld */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== tmpl/default.php ==&lt;br /&gt;
&lt;br /&gt;
At the packaging you are told to include tmpl/default.php. But the view doesn&#039;t use it, should it? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 07:43, 22 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Class name HelloWorld ==&lt;br /&gt;
&lt;br /&gt;
For class naming the &amp;lt;Name&amp;gt; is used. Where does the World come from. Someone reported it is deduced from &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt; in the component.xml file. After removing space and special characters. Is that correct? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 07:47, 22 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Developing_a_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=118279</id>
		<title>J3.x talk:Developing a MVC Component/Adding a view to the site part</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Developing_a_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=118279"/>
		<updated>2014-05-22T12:43:25Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* tmpl/default.php */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== tmpl/default.php ==&lt;br /&gt;
&lt;br /&gt;
At the packaging you are told to include tmpl/default.php. But the view doesn&#039;t use it, should it? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 07:43, 22 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Absolute_Basics_of_How_a_Component_Functions&amp;diff=118278</id>
		<title>Absolute Basics of How a Component Functions</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Absolute_Basics_of_How_a_Component_Functions&amp;diff=118278"/>
		<updated>2014-05-22T10:50:51Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Getting the Data */  Name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{review}}&lt;br /&gt;
This document describes the absolute basics of how a component functions in the most basic ways. It is written for beginner developers to read to help them understand how a basic Joomla! component works.&lt;br /&gt;
&lt;br /&gt;
==Entering the Platform==&lt;br /&gt;
You enter the Joomla! Platform by making calls to index.php. Joomla! is designed mainly to deliver the results of component files. When you call a page link, like index.php?option=com_&amp;lt;name&amp;gt;, the Joomla! Platform tries to find and load the file components/com_&amp;lt;name&amp;gt;/&amp;lt;name&amp;gt;.php from whichever folder you have installed Joomla! into. So, if your component is &#039;com_read&#039; you should have a &#039;com_read&#039; folder and a file named &#039;read.php&#039; inside of it. I will call this file the &#039;base file&#039;. It is in this file that you make the decision whether to use an old flat model (returning the HTML code for the requested page) or to use a Model-View-Controller (MVC) pattern.&lt;br /&gt;
&lt;br /&gt;
This MVC model, walks over two legs: a file and a class. The Joomla! Platform will usually look for a given file and, if found, tries to register a specific class within this file. If either one is missing the call will fail.&lt;br /&gt;
&lt;br /&gt;
==Your controller.php File==&lt;br /&gt;
You start all the fireworks by including a reference to a controller file in your base file. The controller file can be named anything you want, but by convention it is called &#039;controller.php&#039;. In your base file (&amp;lt;name&amp;gt;.php), the following code is typical:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
require_once(JPATH_COMPONENT . &#039;/controller.php&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your controller.php file can be created anywhere you want because you are referencing it by path. If you have written the code exactly as shown above, it should be created in the same location where your base file is located because JPATH_COMPONENT holds the path where the executing component base file is.&lt;br /&gt;
&lt;br /&gt;
So create controller.php and make a reference to the controller library inside by importing it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that you have controller.php included and the base JControllerLegacy class imported, you have to define a class that extends the JControllerLegacy base class. This is the class leg mentioned earlier. It is here where your action will happen. You can name this class as you like but, by convention, it is named after your component so you write:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class &amp;lt;Name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this stage you have your first two files, the base file and the controller file. The base file loads the controller and the controller defines a class. So far so good and easy. The next step is to create an object of this class and to put it to work. So add the following lines to your base file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get an instance of the controller prefixed by &amp;lt;name&amp;gt;&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;&amp;lt;Name&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$controller-&amp;gt;execute(JFactory::getApplication()-&amp;gt;input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
&lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this point on things start happening by themselves. Up to now you were able to name files/classes (except for the base one) and store them where you want because you were including the files by path/name and calling your classes by name within your code. (Well, only one file and only one class actually, but you could do it!) From now on the Joomla! Platform will begin loading your files and calling your classes automatically, so you must be careful where you put your files, what you name them, and what classes you define. A single letter mismatch will make Joomla! fail.&lt;br /&gt;
&lt;br /&gt;
==Getting the Data==&lt;br /&gt;
Where does the Joomla! Platform get the data to play? Well, the answer is easy: from the request, be it a GET request or a POST request. But you have NOT written anything else in the request except option=com_&amp;lt;name&amp;gt;. Where does the &#039;task&#039; in the execute call come from? Do you really have a meaningful &#039;task&#039; variable?&lt;br /&gt;
&lt;br /&gt;
Yes, and therein lies a &#039;problem&#039;: Whether you pass a request or not, Joomla! will use its defaults to complete a request, making some errors difficult to spot.&lt;br /&gt;
&lt;br /&gt;
The controller-&amp;gt;execute() call will make the Joomla! Platform try to do a request that, in this case, will be the default task &#039;display&#039;, because you have not specified otherwise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class &amp;lt;Name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  function display()&lt;br /&gt;
  {&lt;br /&gt;
    echo &#039;displaying&#039;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your request contained a &#039;task=jump&#039; parameter the controller would have tried to call a method (function) named &#039;jump&#039; in your controller class:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class &amp;lt;Name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
  function jump()&lt;br /&gt;
  {&lt;br /&gt;
    echo &#039;jumping&#039;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The View==&lt;br /&gt;
Up to now you have delved into the controller part of the model. This is a new point of decision. You can stop here or go a step further and enter the view part.&lt;br /&gt;
&lt;br /&gt;
The different tasks given to the controller are methods in the controller.php file. All the needed variables are available from the Platform, so you will be able to retrieve them easily.&lt;br /&gt;
&lt;br /&gt;
There is nothing that forces you to use the &#039;task&#039; variable to drive the call because you can pass the value of any variable as the parameter to the execute method call. But in order to stick to the non-written rules, &#039;task&#039; is usually used and as it is treated specially by the system, it is a good idea to stick with it.&lt;br /&gt;
&lt;br /&gt;
To trigger the views, you have to call the __construct() method of JControllerLegacy. Do this by inserting, in your method, a call to parent::__construct() as in the last line. At a minimum, your controller file should contain the following: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&lt;br /&gt;
class &amp;lt;name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What&#039;s a view?&#039;&#039;&#039;&lt;br /&gt;
A view is a subset of data. It&#039;s the same concept as views in SQL parlance. You deliver different parts of your data with different views. So you could have a detailed data view and a resumed data view, the later presenting a subset of the whole data presented in the former.&lt;br /&gt;
&lt;br /&gt;
As you can have multiple views, Joomla! uses the &#039;views&#039; folder in your component&#039;s base directory to keep things tidy. This folder is only a placeholder for your views. This means that you need to create a views folder with a hierarchy that looks like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;name&amp;gt; base folder&lt;br /&gt;
   controller.php&lt;br /&gt;
   &amp;lt;component_name&amp;gt;.php&lt;br /&gt;
   &#039;views&#039; folder&lt;br /&gt;
      view1 folder&lt;br /&gt;
      view2 folder&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
Inside the views folder, other folders hold the files that build each view. The Joomla! Platform includes a file named view.html.php that should exist in your view folder. A bit messy, I know, so I&#039;ll try to explain.&lt;br /&gt;
&lt;br /&gt;
When you built your request, you included a variable named &#039;view&#039; that tells the MVC model what view you want. Or, if you did not include it, you need to include it now because there is no such a thing as a default view. So your URL is something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/index.php?option=com_&amp;lt;name&amp;gt;&amp;amp;view=&amp;lt;myview&amp;gt;[&amp;amp;task=&amp;lt;mytask&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The task part may or may not exist. Remember that if you omit it, you are defaulting to task=display. With this URL Joomla! is importing a file located at &amp;lt;site root dir&amp;gt;/components/&amp;lt;name&amp;gt;/views/&amp;lt;myview&amp;gt;/view.html.php. If this file or the path does not exist, Joomla! will fail. By simply swapping the value of the view, you deliver different views of your data.&lt;br /&gt;
&lt;br /&gt;
Every request for a view requires that you also specify the format in which you are serving the view. There exist several well known formats such as html (the default one if none is specified), rss, etc. or you can use your own. If no format is specified in the request with the &#039;format=&amp;lt;myformat&amp;gt;&#039; parameter a default value of &#039;html&#039; is used.&lt;br /&gt;
&lt;br /&gt;
The &#039;html&#039; format makes the Joomla! Platform wrap the response in whatever template your site is using so that you get a fully built HTML page. This way, with very little effort from you, you get back your page fully loaded with modules or whatever you had configured.&lt;br /&gt;
&lt;br /&gt;
The specific format you are using needs to be included in the middle part of the name of the file in your view folder (The file we talked about a few lines before &#039;view.html.php&#039;). If you use a different format like &#039;rss&#039; your file should be named after it like view.rss.php. Get it?&lt;br /&gt;
&lt;br /&gt;
As mentioned before, you can have formats other than html and Joomla! will not wrap the template on them. You could have a &#039;pdf&#039; format to deliver your data in pdf format or even an &#039;ajax&#039; format to deliver ajax responses to the front-end easily. Just construct your URL like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/index.php?option=com_&amp;lt;name&amp;gt;&amp;amp;view=&amp;lt;myview&amp;gt;&amp;amp;format=ajax&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to make the Joomla! Platform look for and load the file view.ajax.php located at &amp;lt;site root dir&amp;gt;/components/&amp;lt;name&amp;gt;/views/&amp;lt;myview&amp;gt;/ from which you can echo anything you want. It&#039;s that easy.&lt;br /&gt;
&lt;br /&gt;
Anyway, to achieve your goal, you will need some code inside the view.&amp;lt;format&amp;gt;.php file. You have the view file, now you need the view class. You have to extend the JView class with your own class following the strict rules mentioned before. In this case, your class name must be built by concatenating the component name, the word &#039;View&#039;, and the view name. So your class name will be a capitalized &amp;lt;name&amp;gt;View&amp;lt;myview&amp;gt;. If your component is named &#039;travels&#039; and your view is named &#039;detail&#039; (URL ...?option=com_travels&amp;amp;view=detail) your view class must be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class TravelsViewDetail extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
  function display($tpl=null)&lt;br /&gt;
  {&lt;br /&gt;
    echo &#039;blah, blah&#039;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within this class, you only have to feed the data you want to display for your component under this specific case. You can do this directly by delivering the HTML code directly, or through calls to echo inside php tags, or be more subtle and use a layout (more on this later).&lt;br /&gt;
&lt;br /&gt;
Can you have other functions besides display? I don&#039;t know. This is something that the gurus must answer. Where does the display function come from? Again, I don&#039;t know. Hope that someone else can help here.&lt;br /&gt;
&lt;br /&gt;
Now you can go a bit further. Up to this point, you have a distributed Platform that dissects your request in such a way that allows you to create small and very specific files to react only to specific types of requests. In this way, the files that you must process can be very small and adjusted to the situation you are treating. This will speed up the global response time of the system by not loading a bunch of code that will never be used with these kind of requests.&lt;br /&gt;
&lt;br /&gt;
Having reached this point, you can dissect a bit more and have another layer of detail: the final layout for the data you deliver.&lt;br /&gt;
&lt;br /&gt;
A layout is a way to present the data for the view. The same data can be delivered under different visual aspects so that the same preparation code (inside the display function of your view class) can present the same data in different ways simply using different files. You &#039;inject&#039; the view data into the layout template and use the template code to visually format it for presenting to the user.&lt;br /&gt;
&lt;br /&gt;
As before, if you do not specify a layout you go with the &#039;default&#039; layout. To use layouts you need to create a new folder under the related view folder named &#039;tmpl&#039; and create a file named &amp;lt;mylayout&amp;gt;.php, nothing more nothing less. If you are using the default layout this file will be named &#039;default.php&#039;.&lt;br /&gt;
&lt;br /&gt;
The desired layout can be specified in the request by means of a &#039;layout=&amp;lt;mylayout&amp;gt;&#039; variable or can be injected in the call if you manage to get the layout you want to use from other sources.&lt;br /&gt;
&lt;br /&gt;
To use a layout, your view class must call &#039;parent::display();&#039; and pass the layout template name as a parameter. So your class should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class &amp;lt;Name&amp;gt;View&amp;lt;Viewname&amp;gt; extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
  function display($tpl=null)&lt;br /&gt;
  {&lt;br /&gt;
    // Prepare the data&lt;br /&gt;
    $data1 = ....&lt;br /&gt;
    $data2 = ....&lt;br /&gt;
    $moredata[] = array....&lt;br /&gt;
&lt;br /&gt;
    // Inject the data&lt;br /&gt;
    $this-&amp;gt;variablename = $data1;&lt;br /&gt;
    $this-&amp;gt;variablename2 = $data2;&lt;br /&gt;
    $this-&amp;gt;variablename3 = $moredata;&lt;br /&gt;
&lt;br /&gt;
    // Call the layout template. If no tpl value is set Joomla! will look for a default.php file&lt;br /&gt;
    $tpl = &#039;myTemplate&#039;;&lt;br /&gt;
    parent::display($tpl);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This way, Joomla! will look for a file named &#039;myTemplate.php&#039; in the &#039;tmpl&#039; folder of the given view. Inside this template file you get a &#039;$this&#039; object that has access to the variables you have injected by means of &#039;$this-&amp;gt;variablename&#039; that you can use in your constructions to deliver your HTML *FINAL* code.&lt;br /&gt;
&lt;br /&gt;
As you surely will have determined by now, you can have different layouts files in your tmpl folder thus driving easily your output with simple, small, very specific files.&lt;br /&gt;
&lt;br /&gt;
If you have been observant, you will have noticed that you have not &#039;used&#039; the &#039;model&#039; part of MVC model. Here you have the last point of decision. You can go without this part or apply fully the model but I think I will keep this tale for another session. For sure I have already abused of my audience.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Explanations]]&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Development Recommended Reading]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Absolute_Basics_of_How_a_Component_Functions&amp;diff=118277</id>
		<title>Absolute Basics of How a Component Functions</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Absolute_Basics_of_How_a_Component_Functions&amp;diff=118277"/>
		<updated>2014-05-22T10:49:27Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Your controller.php File */  Name instead of name to suggest starting with a Capital&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{review}}&lt;br /&gt;
This document describes the absolute basics of how a component functions in the most basic ways. It is written for beginner developers to read to help them understand how a basic Joomla! component works.&lt;br /&gt;
&lt;br /&gt;
==Entering the Platform==&lt;br /&gt;
You enter the Joomla! Platform by making calls to index.php. Joomla! is designed mainly to deliver the results of component files. When you call a page link, like index.php?option=com_&amp;lt;name&amp;gt;, the Joomla! Platform tries to find and load the file components/com_&amp;lt;name&amp;gt;/&amp;lt;name&amp;gt;.php from whichever folder you have installed Joomla! into. So, if your component is &#039;com_read&#039; you should have a &#039;com_read&#039; folder and a file named &#039;read.php&#039; inside of it. I will call this file the &#039;base file&#039;. It is in this file that you make the decision whether to use an old flat model (returning the HTML code for the requested page) or to use a Model-View-Controller (MVC) pattern.&lt;br /&gt;
&lt;br /&gt;
This MVC model, walks over two legs: a file and a class. The Joomla! Platform will usually look for a given file and, if found, tries to register a specific class within this file. If either one is missing the call will fail.&lt;br /&gt;
&lt;br /&gt;
==Your controller.php File==&lt;br /&gt;
You start all the fireworks by including a reference to a controller file in your base file. The controller file can be named anything you want, but by convention it is called &#039;controller.php&#039;. In your base file (&amp;lt;name&amp;gt;.php), the following code is typical:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
require_once(JPATH_COMPONENT . &#039;/controller.php&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your controller.php file can be created anywhere you want because you are referencing it by path. If you have written the code exactly as shown above, it should be created in the same location where your base file is located because JPATH_COMPONENT holds the path where the executing component base file is.&lt;br /&gt;
&lt;br /&gt;
So create controller.php and make a reference to the controller library inside by importing it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that you have controller.php included and the base JControllerLegacy class imported, you have to define a class that extends the JControllerLegacy base class. This is the class leg mentioned earlier. It is here where your action will happen. You can name this class as you like but, by convention, it is named after your component so you write:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class &amp;lt;Name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this stage you have your first two files, the base file and the controller file. The base file loads the controller and the controller defines a class. So far so good and easy. The next step is to create an object of this class and to put it to work. So add the following lines to your base file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get an instance of the controller prefixed by &amp;lt;name&amp;gt;&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;&amp;lt;Name&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$controller-&amp;gt;execute(JFactory::getApplication()-&amp;gt;input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
&lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this point on things start happening by themselves. Up to now you were able to name files/classes (except for the base one) and store them where you want because you were including the files by path/name and calling your classes by name within your code. (Well, only one file and only one class actually, but you could do it!) From now on the Joomla! Platform will begin loading your files and calling your classes automatically, so you must be careful where you put your files, what you name them, and what classes you define. A single letter mismatch will make Joomla! fail.&lt;br /&gt;
&lt;br /&gt;
==Getting the Data==&lt;br /&gt;
Where does the Joomla! Platform get the data to play? Well, the answer is easy: from the request, be it a GET request or a POST request. But you have NOT written anything else in the request except option=com_&amp;lt;name&amp;gt;. Where does the &#039;task&#039; in the execute call come from? Do you really have a meaningful &#039;task&#039; variable?&lt;br /&gt;
&lt;br /&gt;
Yes, and therein lies a &#039;problem&#039;: Whether you pass a request or not, Joomla! will use its defaults to complete a request, making some errors difficult to spot.&lt;br /&gt;
&lt;br /&gt;
The controller-&amp;gt;execute() call will make the Joomla! Platform try to do a request that, in this case, will be the default task &#039;display&#039;, because you have not specified otherwise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class &amp;lt;name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  function display()&lt;br /&gt;
  {&lt;br /&gt;
    echo &#039;displaying&#039;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your request contained a &#039;task=jump&#039; parameter the controller would have tried to call a method (function) named &#039;jump&#039; in your controller class:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class &amp;lt;name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
  function jump()&lt;br /&gt;
  {&lt;br /&gt;
    echo &#039;jumping&#039;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The View==&lt;br /&gt;
Up to now you have delved into the controller part of the model. This is a new point of decision. You can stop here or go a step further and enter the view part.&lt;br /&gt;
&lt;br /&gt;
The different tasks given to the controller are methods in the controller.php file. All the needed variables are available from the Platform, so you will be able to retrieve them easily.&lt;br /&gt;
&lt;br /&gt;
There is nothing that forces you to use the &#039;task&#039; variable to drive the call because you can pass the value of any variable as the parameter to the execute method call. But in order to stick to the non-written rules, &#039;task&#039; is usually used and as it is treated specially by the system, it is a good idea to stick with it.&lt;br /&gt;
&lt;br /&gt;
To trigger the views, you have to call the __construct() method of JControllerLegacy. Do this by inserting, in your method, a call to parent::__construct() as in the last line. At a minimum, your controller file should contain the following: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&lt;br /&gt;
class &amp;lt;name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What&#039;s a view?&#039;&#039;&#039;&lt;br /&gt;
A view is a subset of data. It&#039;s the same concept as views in SQL parlance. You deliver different parts of your data with different views. So you could have a detailed data view and a resumed data view, the later presenting a subset of the whole data presented in the former.&lt;br /&gt;
&lt;br /&gt;
As you can have multiple views, Joomla! uses the &#039;views&#039; folder in your component&#039;s base directory to keep things tidy. This folder is only a placeholder for your views. This means that you need to create a views folder with a hierarchy that looks like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;name&amp;gt; base folder&lt;br /&gt;
   controller.php&lt;br /&gt;
   &amp;lt;component_name&amp;gt;.php&lt;br /&gt;
   &#039;views&#039; folder&lt;br /&gt;
      view1 folder&lt;br /&gt;
      view2 folder&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
Inside the views folder, other folders hold the files that build each view. The Joomla! Platform includes a file named view.html.php that should exist in your view folder. A bit messy, I know, so I&#039;ll try to explain.&lt;br /&gt;
&lt;br /&gt;
When you built your request, you included a variable named &#039;view&#039; that tells the MVC model what view you want. Or, if you did not include it, you need to include it now because there is no such a thing as a default view. So your URL is something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/index.php?option=com_&amp;lt;name&amp;gt;&amp;amp;view=&amp;lt;myview&amp;gt;[&amp;amp;task=&amp;lt;mytask&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The task part may or may not exist. Remember that if you omit it, you are defaulting to task=display. With this URL Joomla! is importing a file located at &amp;lt;site root dir&amp;gt;/components/&amp;lt;name&amp;gt;/views/&amp;lt;myview&amp;gt;/view.html.php. If this file or the path does not exist, Joomla! will fail. By simply swapping the value of the view, you deliver different views of your data.&lt;br /&gt;
&lt;br /&gt;
Every request for a view requires that you also specify the format in which you are serving the view. There exist several well known formats such as html (the default one if none is specified), rss, etc. or you can use your own. If no format is specified in the request with the &#039;format=&amp;lt;myformat&amp;gt;&#039; parameter a default value of &#039;html&#039; is used.&lt;br /&gt;
&lt;br /&gt;
The &#039;html&#039; format makes the Joomla! Platform wrap the response in whatever template your site is using so that you get a fully built HTML page. This way, with very little effort from you, you get back your page fully loaded with modules or whatever you had configured.&lt;br /&gt;
&lt;br /&gt;
The specific format you are using needs to be included in the middle part of the name of the file in your view folder (The file we talked about a few lines before &#039;view.html.php&#039;). If you use a different format like &#039;rss&#039; your file should be named after it like view.rss.php. Get it?&lt;br /&gt;
&lt;br /&gt;
As mentioned before, you can have formats other than html and Joomla! will not wrap the template on them. You could have a &#039;pdf&#039; format to deliver your data in pdf format or even an &#039;ajax&#039; format to deliver ajax responses to the front-end easily. Just construct your URL like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/index.php?option=com_&amp;lt;name&amp;gt;&amp;amp;view=&amp;lt;myview&amp;gt;&amp;amp;format=ajax&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to make the Joomla! Platform look for and load the file view.ajax.php located at &amp;lt;site root dir&amp;gt;/components/&amp;lt;name&amp;gt;/views/&amp;lt;myview&amp;gt;/ from which you can echo anything you want. It&#039;s that easy.&lt;br /&gt;
&lt;br /&gt;
Anyway, to achieve your goal, you will need some code inside the view.&amp;lt;format&amp;gt;.php file. You have the view file, now you need the view class. You have to extend the JView class with your own class following the strict rules mentioned before. In this case, your class name must be built by concatenating the component name, the word &#039;View&#039;, and the view name. So your class name will be a capitalized &amp;lt;name&amp;gt;View&amp;lt;myview&amp;gt;. If your component is named &#039;travels&#039; and your view is named &#039;detail&#039; (URL ...?option=com_travels&amp;amp;view=detail) your view class must be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class TravelsViewDetail extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
  function display($tpl=null)&lt;br /&gt;
  {&lt;br /&gt;
    echo &#039;blah, blah&#039;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within this class, you only have to feed the data you want to display for your component under this specific case. You can do this directly by delivering the HTML code directly, or through calls to echo inside php tags, or be more subtle and use a layout (more on this later).&lt;br /&gt;
&lt;br /&gt;
Can you have other functions besides display? I don&#039;t know. This is something that the gurus must answer. Where does the display function come from? Again, I don&#039;t know. Hope that someone else can help here.&lt;br /&gt;
&lt;br /&gt;
Now you can go a bit further. Up to this point, you have a distributed Platform that dissects your request in such a way that allows you to create small and very specific files to react only to specific types of requests. In this way, the files that you must process can be very small and adjusted to the situation you are treating. This will speed up the global response time of the system by not loading a bunch of code that will never be used with these kind of requests.&lt;br /&gt;
&lt;br /&gt;
Having reached this point, you can dissect a bit more and have another layer of detail: the final layout for the data you deliver.&lt;br /&gt;
&lt;br /&gt;
A layout is a way to present the data for the view. The same data can be delivered under different visual aspects so that the same preparation code (inside the display function of your view class) can present the same data in different ways simply using different files. You &#039;inject&#039; the view data into the layout template and use the template code to visually format it for presenting to the user.&lt;br /&gt;
&lt;br /&gt;
As before, if you do not specify a layout you go with the &#039;default&#039; layout. To use layouts you need to create a new folder under the related view folder named &#039;tmpl&#039; and create a file named &amp;lt;mylayout&amp;gt;.php, nothing more nothing less. If you are using the default layout this file will be named &#039;default.php&#039;.&lt;br /&gt;
&lt;br /&gt;
The desired layout can be specified in the request by means of a &#039;layout=&amp;lt;mylayout&amp;gt;&#039; variable or can be injected in the call if you manage to get the layout you want to use from other sources.&lt;br /&gt;
&lt;br /&gt;
To use a layout, your view class must call &#039;parent::display();&#039; and pass the layout template name as a parameter. So your class should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class &amp;lt;Name&amp;gt;View&amp;lt;Viewname&amp;gt; extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
  function display($tpl=null)&lt;br /&gt;
  {&lt;br /&gt;
    // Prepare the data&lt;br /&gt;
    $data1 = ....&lt;br /&gt;
    $data2 = ....&lt;br /&gt;
    $moredata[] = array....&lt;br /&gt;
&lt;br /&gt;
    // Inject the data&lt;br /&gt;
    $this-&amp;gt;variablename = $data1;&lt;br /&gt;
    $this-&amp;gt;variablename2 = $data2;&lt;br /&gt;
    $this-&amp;gt;variablename3 = $moredata;&lt;br /&gt;
&lt;br /&gt;
    // Call the layout template. If no tpl value is set Joomla! will look for a default.php file&lt;br /&gt;
    $tpl = &#039;myTemplate&#039;;&lt;br /&gt;
    parent::display($tpl);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This way, Joomla! will look for a file named &#039;myTemplate.php&#039; in the &#039;tmpl&#039; folder of the given view. Inside this template file you get a &#039;$this&#039; object that has access to the variables you have injected by means of &#039;$this-&amp;gt;variablename&#039; that you can use in your constructions to deliver your HTML *FINAL* code.&lt;br /&gt;
&lt;br /&gt;
As you surely will have determined by now, you can have different layouts files in your tmpl folder thus driving easily your output with simple, small, very specific files.&lt;br /&gt;
&lt;br /&gt;
If you have been observant, you will have noticed that you have not &#039;used&#039; the &#039;model&#039; part of MVC model. Here you have the last point of decision. You can go without this part or apply fully the model but I think I will keep this tale for another session. For sure I have already abused of my audience.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Explanations]]&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Development Recommended Reading]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Absolute_Basics_of_How_a_Component_Functions&amp;diff=118276</id>
		<title>Absolute Basics of How a Component Functions</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Absolute_Basics_of_How_a_Component_Functions&amp;diff=118276"/>
		<updated>2014-05-22T10:25:08Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Your controller.php File */  Name instead of name to suggest starting with a Capital&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{review}}&lt;br /&gt;
This document describes the absolute basics of how a component functions in the most basic ways. It is written for beginner developers to read to help them understand how a basic Joomla! component works.&lt;br /&gt;
&lt;br /&gt;
==Entering the Platform==&lt;br /&gt;
You enter the Joomla! Platform by making calls to index.php. Joomla! is designed mainly to deliver the results of component files. When you call a page link, like index.php?option=com_&amp;lt;name&amp;gt;, the Joomla! Platform tries to find and load the file components/com_&amp;lt;name&amp;gt;/&amp;lt;name&amp;gt;.php from whichever folder you have installed Joomla! into. So, if your component is &#039;com_read&#039; you should have a &#039;com_read&#039; folder and a file named &#039;read.php&#039; inside of it. I will call this file the &#039;base file&#039;. It is in this file that you make the decision whether to use an old flat model (returning the HTML code for the requested page) or to use a Model-View-Controller (MVC) pattern.&lt;br /&gt;
&lt;br /&gt;
This MVC model, walks over two legs: a file and a class. The Joomla! Platform will usually look for a given file and, if found, tries to register a specific class within this file. If either one is missing the call will fail.&lt;br /&gt;
&lt;br /&gt;
==Your controller.php File==&lt;br /&gt;
You start all the fireworks by including a reference to a controller file in your base file. The controller file can be named anything you want, but by convention it is called &#039;controller.php&#039;. In your base file (&amp;lt;name&amp;gt;.php), the following code is typical:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
require_once(JPATH_COMPONENT . &#039;/controller.php&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your controller.php file can be created anywhere you want because you are referencing it by path. If you have written the code exactly as shown above, it should be created in the same location where your base file is located because JPATH_COMPONENT holds the path where the executing component base file is.&lt;br /&gt;
&lt;br /&gt;
So create controller.php and make a reference to the controller library inside by importing it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now that you have controller.php included and the base JControllerLegacy class imported, you have to define a class that extends the JControllerLegacy base class. This is the class leg mentioned earlier. It is here where your action will happen. You can name this class as you like but, by convention, it is named after your component so you write:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class &amp;lt;Name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this stage you have your first two files, the base file and the controller file. The base file loads the controller and the controller defines a class. So far so good and easy. The next step is to create an object of this class and to put it to work. So add the following lines to your base file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get an instance of the controller prefixed by &amp;lt;name&amp;gt;&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;&amp;lt;name&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$controller-&amp;gt;execute(JFactory::getApplication()-&amp;gt;input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
&lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this point on things start happening by themselves. Up to now you were able to name files/classes (except for the base one) and store them where you want because you were including the files by path/name and calling your classes by name within your code. (Well, only one file and only one class actually, but you could do it!) From now on the Joomla! Platform will begin loading your files and calling your classes automatically, so you must be careful where you put your files, what you name them, and what classes you define. A single letter mismatch will make Joomla! fail.&lt;br /&gt;
&lt;br /&gt;
==Getting the Data==&lt;br /&gt;
Where does the Joomla! Platform get the data to play? Well, the answer is easy: from the request, be it a GET request or a POST request. But you have NOT written anything else in the request except option=com_&amp;lt;name&amp;gt;. Where does the &#039;task&#039; in the execute call come from? Do you really have a meaningful &#039;task&#039; variable?&lt;br /&gt;
&lt;br /&gt;
Yes, and therein lies a &#039;problem&#039;: Whether you pass a request or not, Joomla! will use its defaults to complete a request, making some errors difficult to spot.&lt;br /&gt;
&lt;br /&gt;
The controller-&amp;gt;execute() call will make the Joomla! Platform try to do a request that, in this case, will be the default task &#039;display&#039;, because you have not specified otherwise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class &amp;lt;name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  function display()&lt;br /&gt;
  {&lt;br /&gt;
    echo &#039;displaying&#039;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your request contained a &#039;task=jump&#039; parameter the controller would have tried to call a method (function) named &#039;jump&#039; in your controller class:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class &amp;lt;name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
  function jump()&lt;br /&gt;
  {&lt;br /&gt;
    echo &#039;jumping&#039;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The View==&lt;br /&gt;
Up to now you have delved into the controller part of the model. This is a new point of decision. You can stop here or go a step further and enter the view part.&lt;br /&gt;
&lt;br /&gt;
The different tasks given to the controller are methods in the controller.php file. All the needed variables are available from the Platform, so you will be able to retrieve them easily.&lt;br /&gt;
&lt;br /&gt;
There is nothing that forces you to use the &#039;task&#039; variable to drive the call because you can pass the value of any variable as the parameter to the execute method call. But in order to stick to the non-written rules, &#039;task&#039; is usually used and as it is treated specially by the system, it is a good idea to stick with it.&lt;br /&gt;
&lt;br /&gt;
To trigger the views, you have to call the __construct() method of JControllerLegacy. Do this by inserting, in your method, a call to parent::__construct() as in the last line. At a minimum, your controller file should contain the following: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&lt;br /&gt;
class &amp;lt;name&amp;gt;Controller extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What&#039;s a view?&#039;&#039;&#039;&lt;br /&gt;
A view is a subset of data. It&#039;s the same concept as views in SQL parlance. You deliver different parts of your data with different views. So you could have a detailed data view and a resumed data view, the later presenting a subset of the whole data presented in the former.&lt;br /&gt;
&lt;br /&gt;
As you can have multiple views, Joomla! uses the &#039;views&#039; folder in your component&#039;s base directory to keep things tidy. This folder is only a placeholder for your views. This means that you need to create a views folder with a hierarchy that looks like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;name&amp;gt; base folder&lt;br /&gt;
   controller.php&lt;br /&gt;
   &amp;lt;component_name&amp;gt;.php&lt;br /&gt;
   &#039;views&#039; folder&lt;br /&gt;
      view1 folder&lt;br /&gt;
      view2 folder&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
Inside the views folder, other folders hold the files that build each view. The Joomla! Platform includes a file named view.html.php that should exist in your view folder. A bit messy, I know, so I&#039;ll try to explain.&lt;br /&gt;
&lt;br /&gt;
When you built your request, you included a variable named &#039;view&#039; that tells the MVC model what view you want. Or, if you did not include it, you need to include it now because there is no such a thing as a default view. So your URL is something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/index.php?option=com_&amp;lt;name&amp;gt;&amp;amp;view=&amp;lt;myview&amp;gt;[&amp;amp;task=&amp;lt;mytask&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The task part may or may not exist. Remember that if you omit it, you are defaulting to task=display. With this URL Joomla! is importing a file located at &amp;lt;site root dir&amp;gt;/components/&amp;lt;name&amp;gt;/views/&amp;lt;myview&amp;gt;/view.html.php. If this file or the path does not exist, Joomla! will fail. By simply swapping the value of the view, you deliver different views of your data.&lt;br /&gt;
&lt;br /&gt;
Every request for a view requires that you also specify the format in which you are serving the view. There exist several well known formats such as html (the default one if none is specified), rss, etc. or you can use your own. If no format is specified in the request with the &#039;format=&amp;lt;myformat&amp;gt;&#039; parameter a default value of &#039;html&#039; is used.&lt;br /&gt;
&lt;br /&gt;
The &#039;html&#039; format makes the Joomla! Platform wrap the response in whatever template your site is using so that you get a fully built HTML page. This way, with very little effort from you, you get back your page fully loaded with modules or whatever you had configured.&lt;br /&gt;
&lt;br /&gt;
The specific format you are using needs to be included in the middle part of the name of the file in your view folder (The file we talked about a few lines before &#039;view.html.php&#039;). If you use a different format like &#039;rss&#039; your file should be named after it like view.rss.php. Get it?&lt;br /&gt;
&lt;br /&gt;
As mentioned before, you can have formats other than html and Joomla! will not wrap the template on them. You could have a &#039;pdf&#039; format to deliver your data in pdf format or even an &#039;ajax&#039; format to deliver ajax responses to the front-end easily. Just construct your URL like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/index.php?option=com_&amp;lt;name&amp;gt;&amp;amp;view=&amp;lt;myview&amp;gt;&amp;amp;format=ajax&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to make the Joomla! Platform look for and load the file view.ajax.php located at &amp;lt;site root dir&amp;gt;/components/&amp;lt;name&amp;gt;/views/&amp;lt;myview&amp;gt;/ from which you can echo anything you want. It&#039;s that easy.&lt;br /&gt;
&lt;br /&gt;
Anyway, to achieve your goal, you will need some code inside the view.&amp;lt;format&amp;gt;.php file. You have the view file, now you need the view class. You have to extend the JView class with your own class following the strict rules mentioned before. In this case, your class name must be built by concatenating the component name, the word &#039;View&#039;, and the view name. So your class name will be a capitalized &amp;lt;name&amp;gt;View&amp;lt;myview&amp;gt;. If your component is named &#039;travels&#039; and your view is named &#039;detail&#039; (URL ...?option=com_travels&amp;amp;view=detail) your view class must be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class TravelsViewDetail extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
  function display($tpl=null)&lt;br /&gt;
  {&lt;br /&gt;
    echo &#039;blah, blah&#039;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within this class, you only have to feed the data you want to display for your component under this specific case. You can do this directly by delivering the HTML code directly, or through calls to echo inside php tags, or be more subtle and use a layout (more on this later).&lt;br /&gt;
&lt;br /&gt;
Can you have other functions besides display? I don&#039;t know. This is something that the gurus must answer. Where does the display function come from? Again, I don&#039;t know. Hope that someone else can help here.&lt;br /&gt;
&lt;br /&gt;
Now you can go a bit further. Up to this point, you have a distributed Platform that dissects your request in such a way that allows you to create small and very specific files to react only to specific types of requests. In this way, the files that you must process can be very small and adjusted to the situation you are treating. This will speed up the global response time of the system by not loading a bunch of code that will never be used with these kind of requests.&lt;br /&gt;
&lt;br /&gt;
Having reached this point, you can dissect a bit more and have another layer of detail: the final layout for the data you deliver.&lt;br /&gt;
&lt;br /&gt;
A layout is a way to present the data for the view. The same data can be delivered under different visual aspects so that the same preparation code (inside the display function of your view class) can present the same data in different ways simply using different files. You &#039;inject&#039; the view data into the layout template and use the template code to visually format it for presenting to the user.&lt;br /&gt;
&lt;br /&gt;
As before, if you do not specify a layout you go with the &#039;default&#039; layout. To use layouts you need to create a new folder under the related view folder named &#039;tmpl&#039; and create a file named &amp;lt;mylayout&amp;gt;.php, nothing more nothing less. If you are using the default layout this file will be named &#039;default.php&#039;.&lt;br /&gt;
&lt;br /&gt;
The desired layout can be specified in the request by means of a &#039;layout=&amp;lt;mylayout&amp;gt;&#039; variable or can be injected in the call if you manage to get the layout you want to use from other sources.&lt;br /&gt;
&lt;br /&gt;
To use a layout, your view class must call &#039;parent::display();&#039; and pass the layout template name as a parameter. So your class should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class &amp;lt;Name&amp;gt;View&amp;lt;Viewname&amp;gt; extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
  function display($tpl=null)&lt;br /&gt;
  {&lt;br /&gt;
    // Prepare the data&lt;br /&gt;
    $data1 = ....&lt;br /&gt;
    $data2 = ....&lt;br /&gt;
    $moredata[] = array....&lt;br /&gt;
&lt;br /&gt;
    // Inject the data&lt;br /&gt;
    $this-&amp;gt;variablename = $data1;&lt;br /&gt;
    $this-&amp;gt;variablename2 = $data2;&lt;br /&gt;
    $this-&amp;gt;variablename3 = $moredata;&lt;br /&gt;
&lt;br /&gt;
    // Call the layout template. If no tpl value is set Joomla! will look for a default.php file&lt;br /&gt;
    $tpl = &#039;myTemplate&#039;;&lt;br /&gt;
    parent::display($tpl);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This way, Joomla! will look for a file named &#039;myTemplate.php&#039; in the &#039;tmpl&#039; folder of the given view. Inside this template file you get a &#039;$this&#039; object that has access to the variables you have injected by means of &#039;$this-&amp;gt;variablename&#039; that you can use in your constructions to deliver your HTML *FINAL* code.&lt;br /&gt;
&lt;br /&gt;
As you surely will have determined by now, you can have different layouts files in your tmpl folder thus driving easily your output with simple, small, very specific files.&lt;br /&gt;
&lt;br /&gt;
If you have been observant, you will have noticed that you have not &#039;used&#039; the &#039;model&#039; part of MVC model. Here you have the last point of decision. You can go without this part or apply fully the model but I think I will keep this tale for another session. For sure I have already abused of my audience.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Explanations]]&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Development Recommended Reading]]&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=How_to_access_session_variables_set_by_an_external_script&amp;diff=118236</id>
		<title>How to access session variables set by an external script</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=How_to_access_session_variables_set_by_an_external_script&amp;diff=118236"/>
		<updated>2014-05-17T23:56:32Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: Remove DS and &amp;amp;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Situation: when you call a session variable in Joomla from an external script, it appears to be empty.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
Replace session_start(); in your external script with&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
define( &#039;_JEXEC&#039;, 1 );&lt;br /&gt;
define( &#039;JPATH_BASE&#039;, realpath(dirname(__FILE__).&#039;/../..&#039; ));&lt;br /&gt;
&lt;br /&gt;
require_once ( JPATH_BASE &#039;/includes/defines.php&#039; );&lt;br /&gt;
require_once ( JPATH_BASE &#039;/includes/framework.php&#039; );&lt;br /&gt;
$mainframe = JFactory::getApplication(&#039;site&#039;);&lt;br /&gt;
$mainframe-&amp;gt;initialise();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Be sure to change JPATH_BASE to suit your directory structure.&lt;br /&gt;
&lt;br /&gt;
Replace the $_SESSION[ &#039;name&#039; ] = &amp;quot;value&amp;quot;; in your external script with&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
$session = JFactory::getSession();&lt;br /&gt;
$session-&amp;gt;set(&#039;name&#039;, &amp;quot;value&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can retrieve this session variable using:&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
$session = JFactory::getSession();&lt;br /&gt;
echo $session-&amp;gt;get(&#039;name&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=118120</id>
		<title>J3.x talk:Creating a simple module/Developing a Basic Module</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=118120"/>
		<updated>2014-05-08T00:34:45Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* $params */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== $params ==&lt;br /&gt;
&lt;br /&gt;
This document explains calling a helper class passing $params for future use. The problem is, it doesn&#039;t mention where that $params is coming from. And what other data is available? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 08:41, 6 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:So there probably should be a sentence saying $params is generated by us automatically. As this is a &amp;quot;simple&amp;quot; module tutorial - I really want to avoid going into the fact this is automatically generated by the JModuleHelper. I&#039;d rather just say the thing with the params is created magically for you to manipulate. --[[User:Wilsonge|Wilsonge]] ([[User talk:Wilsonge|talk]]) 18:43, 6 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Why would you want to avoid mentioning JModuleHelper::renderModule. The first thing that comes to mind is how should I know $params is available? Where to look for the other variables availabe. Or state them, would be nice to know $app is available!. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 03:49, 7 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Because it&#039;s a &amp;quot;simple&amp;quot; module tutorial. When I first developed modules (which scarily wasn&#039;t that long ago) I didn&#039;t care where all this stuff came from - it was just amazing that it existed. Again for simple module development I&#039;m not sure that matters - with the $app thing for example I&#039;d rather get people redefining it. Firstly as I said I don&#039;t think people for a basic &amp;quot;here&#039;s how to create a module&amp;quot; tutorial we need to involve JModuleHelper and also because I really think you should define $app yourself for your things so it&#039;s as standalone as possible! The only thing arguably you should need is the $module object (as that contains params + module title instance) or if you only need the params then just $params.&lt;br /&gt;
&lt;br /&gt;
::Never mind. Hope that the J4 redesign will get rid of modules anyway![[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 19:34, 7 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t like &amp;quot;for page rendering&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Don&#039;t like &amp;quot;for page rendering&amp;quot;, would say: while rendering the page. It completely puts me off, thinking the module is the procedure to render a page, which is handled by JDocumentHtml. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 04:05, 7 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:In retrospect I don&#039;t like it either :P changed&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=118105</id>
		<title>J3.x talk:Creating a simple module/Developing a Basic Module</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=118105"/>
		<updated>2014-05-07T09:05:45Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Don&amp;#039;t like &amp;quot;for page rendering&amp;quot; */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== $params ==&lt;br /&gt;
&lt;br /&gt;
This document explains calling a helper class passing $params for future use. The problem is, it doesn&#039;t mention where that $params is coming from. And what other data is available? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 08:41, 6 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:So there probably should be a sentence saying $params is generated by us automatically. As this is a &amp;quot;simple&amp;quot; module tutorial - I really want to avoid going into the fact this is automatically generated by the JModuleHelper. I&#039;d rather just say the thing with the params is created magically for you to manipulate. --[[User:Wilsonge|Wilsonge]] ([[User talk:Wilsonge|talk]]) 18:43, 6 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Why would you want to avoid mentioning JModuleHelper::renderModule. The first thing that comes to mind is how should I know $params is available? Where to look for the other variables availabe. Or state them, would be nice to know $app is available!. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 03:49, 7 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t like &amp;quot;for page rendering&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Don&#039;t like &amp;quot;for page rendering&amp;quot;, would say: while rendering the page. It completely puts me off, thinking the module is the procedure to render a page, which is handled by JDocumentHtml. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 04:05, 7 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=118104</id>
		<title>J3.x talk:Creating a simple module/Developing a Basic Module</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=118104"/>
		<updated>2014-05-07T08:49:38Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* $params */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== $params ==&lt;br /&gt;
&lt;br /&gt;
This document explains calling a helper class passing $params for future use. The problem is, it doesn&#039;t mention where that $params is coming from. And what other data is available? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 08:41, 6 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:So there probably should be a sentence saying $params is generated by us automatically. As this is a &amp;quot;simple&amp;quot; module tutorial - I really want to avoid going into the fact this is automatically generated by the JModuleHelper. I&#039;d rather just say the thing with the params is created magically for you to manipulate. --[[User:Wilsonge|Wilsonge]] ([[User talk:Wilsonge|talk]]) 18:43, 6 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Why would you want to avoid mentioning JModuleHelper::renderModule. The first thing that comes to mind is how should I know $params is available? Where to look for the other variables availabe. Or state them, would be nice to know $app is available!. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 03:49, 7 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=118101</id>
		<title>J3.x talk:Creating a simple module/Developing a Basic Module</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=118101"/>
		<updated>2014-05-06T13:41:03Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* $params */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== $params ==&lt;br /&gt;
&lt;br /&gt;
This document explains calling a helper class passing $params for future use. The problem is, it doesn&#039;t mention where that $params is coming from. And what other data is available? [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 08:41, 6 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118046</id>
		<title>Help310 talk:Components Joomla Update</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118046"/>
		<updated>2014-05-04T19:38:01Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Custom URL section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Request for arbitrage: update to current removed ==&lt;br /&gt;
&lt;br /&gt;
Request for arbitrage: Changed the description to note that an update goes for the current version. Think the destinction is relevant because it doesn&#039;t allow you to pick one, it decides for you and picks the current one. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 05:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Agreed, the update is only the most current one. You do not have a choice if on 3.2.0 to update to 3.2.1, you&#039;ll get 3.2.4 or 3.3.0. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 07:53, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Sorry but you are incorrect because the update version can be defined in an xml file situated on a URL defined in the &#039;Custom&#039; Server field. Topazgb 13:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:::One has nothing to do with the other, but I can see what you are thinking. The problem is the word &#039;current&#039; is used as it should be. The goal is to keep the users on the &#039;current&#039; release, not a previous release. &amp;quot;A/an&amp;quot; is indefinite and &amp;quot;the&amp;quot; is specific. &amp;quot;A&amp;quot; current update would imply a non specific choice or even multiple choices for the end user. &amp;quot;The&amp;quot; current update would be the specific update offered, the &amp;quot;current&amp;quot; update. Since users aren&#039;t presented with a choice of updates, e.g. 3.0 installed, update to 3.1.0, 3.0.1, 3.2.4, 3.3.0, now pick one, &amp;quot;the current update&amp;quot; is appropriate as it is one specific update. Even if a user changes to a custom URL, different server(LTS or STS), only one update is presented, which may not be the current one, but to the component it is the current one(higher version compared to what is installed). Hope that helps. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:33, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::::The Second sentence (of the help page)describes that there are choices of the different update servers ... but the first sentence only specifies the result of the default setting.  ergo the first sentence (of the help page is inaccurate. &lt;br /&gt;
&lt;br /&gt;
::::&#039;&#039;&amp;quot;This screen allows Joomla! to be updated quickly by downloading the current update package&amp;quot;&#039;&#039; is inaccurate/incomplete because it only allows for the downloading of the current update package with the default/pre-set settings.  Therefore the definite article &#039;the&#039; is being incorrectly used because it is possible to download any update version. &lt;br /&gt;
&lt;br /&gt;
::::In short ... that screen can be used to download any update version not just &#039;&#039;&amp;quot;the current update package&amp;quot;&#039;&#039; &lt;br /&gt;
::::--Topazgb 11:36, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::Now it states it is the default. While I was at it, noted the change of the server is for advanced users.&lt;br /&gt;
::So why would you want users to use a specific, unsupported update? Devs on the testing server are advanced users, regular users should always be using the latest version. &lt;br /&gt;
::The help screen&#039;s job is to give help to the common, everyday users. You are splitting hairs on the 99%(targeted audience) vs the 1%(highly advanced users/developers). [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 10:03, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::I do not &#039;&#039;&amp;quot;want users to use a specific, unsupported update&amp;quot;&#039;&#039; ... And I am not &#039;&#039;splitting hairs&#039;&#039;.  There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.  Giving accurate information will help them without hindering the average user.  But inaccurate information (by way of inferring only the current update can be downloaded from that screen) can cause a misconception for experienced Web masters that wish to experiment with Joomla. --Topazgb 11:14, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
I would like to see (a link to) an example xml file that updates to J3.2.3. Also the description of 4.1 should be changed so webmasters know when to choose the last two options. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 20:29, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
@Sovainfo&lt;br /&gt;
As requested http://www.weblinksonline.co.uk/testupdate/update3.2.3.xml&lt;br /&gt;
Method to replicate&lt;br /&gt;
# Install any version of Joomla prior to 3.2.3&lt;br /&gt;
#In Joomla! Update Component&lt;br /&gt;
#Set Update server to &#039;Custom URL&#039;&lt;br /&gt;
#In the &#039;Custom URL&#039; field put http://www.weblinksonline.co.uk/testupdate/update3.2.3.xml&lt;br /&gt;
#&#039;Save and Close&#039;&lt;br /&gt;
You should then see the download for http://joomlacode.org/gf/download/frsrelease/19240/158108/Joomla_3.2.x_to_3.2.3-Stable-Patch_Package.zip --Topazgb 08:54, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:4.1 is automated, would need to change the form field tool tip in core to change it. After investigating more, updater works on a greater than. 4.0.14 must be greater than the installed, 4.0.11. You can point to a XML file, but must point to a greater than version to get update is available. &#039;&#039;&#039;You can not regress&#039;&#039;&#039;, 4.0.14 to 4.0.11. The example is a &#039;&#039;&#039;testing&#039;&#039;&#039; URL example, not real world practical for everyday users. URL practical uses, &#039;&#039;&#039;development&#039;&#039;&#039;, &#039;&#039;&#039;testing&#039;&#039;&#039; or a &#039;&#039;&#039;developer supplying a custom update to their client(s)&#039;&#039;&#039;. The last example, a custom component or core addition or changes, which obviously is more work for a developer. This statement:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:is not an accurate use of updater. The specific update must always be greater than the version installed. I can&#039;t think a a reason off-hand why an experience webmaster would &amp;quot;want to target&amp;quot; an update, especially if they are not familiar with Joomla. An truly experienced webmaster knows better than to tweak settings they don&#039;t understand fully.&lt;br /&gt;
:In any regards, I think we are past the point of putting this to rest. Thanks for all the input, the use of &amp;quot;the current update&amp;quot; will stay in place. Thanks [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:06, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Proposed changes to 4.1 ==&lt;br /&gt;
&lt;br /&gt;
Understand that this section is automated. Wonder why 4.1 doesn&#039;t mention the two fields separately. The Custom URL description doesn&#039;t make sense to me. It is in the list of options but describes the field where you enter the url itself. The option should be described as Pick this when you want to specify your own update server. Provide the url in Custom URL data entry field.&lt;br /&gt;
Description for Custom URL data entry field should be something like Provide your own url here, only applicable when update server is set to Custom URL.&lt;br /&gt;
&lt;br /&gt;
Suggest to change &amp;quot;Currently configured (no change)&amp;quot; to &amp;quot;No update server&amp;quot;.[[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 09:53, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Agreed ... the &#039;Custom URL&#039; setting has the description of the &#039;Custom URL&#039; field ... have edited to specify the difference.&lt;br /&gt;
&lt;br /&gt;
&#039;Currently configured (no change)&#039; is the name of an option in the &#039;Update server&#039; drop down&#039; list and therefore is correct in the documentation. --Topazgb 10:16, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:I will keep an eye for the changes coming so we can address all of these tweaks and changes at the same time. The use of LTS and STS do not fit in with the new development strategy. The problem is... LTS/STS are deeply entangled with our terminology and used everywhere. I far as I know, we have not discussed any changes to the update component, e.g. LTS to Current Major and STS to Most Current Major. One would indicate, stay on the major you are on. The other, check to see if there is a higher major version. Technically, 2.5 and 3.x are now both current supported versions. 2.5 just has a EOL set with no feature releases. Docs will have to make a lot of changes too. We use LTS and STS everywhere in templates to output version numbers. That will have to change too. My first order of business will be to get rid of Help31 or Help33 and all the aliases to a set permanent Help3x. Same for J3.2 or now J3.3 namespace to J3.x. Actually, I can go ahead and do both. Help3x is a bit more complicated. I would like to see the core&#039;s Help link formation change at core level. FYI, 3.4 is supposed to mark our first release under new strategy so this is why I am holding off. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 10:23, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Custom URL section ==&lt;br /&gt;
&lt;br /&gt;
@Topazgb: Thanks for providing the information on the XML. Actually meant this information to be provided in the help document. Not the step by step instructions, the higher level of information. No need to tell an experienced webmaster to press buttons. The xml contents with the example information and instructions what to change for their situation. And how to find that information. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 09:53, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
@Sovainfo&lt;br /&gt;
When setting out PoC it is customary to list the exact steps ... that is why I gave &#039;step by step&#039; when answering your request.  However as for documentation for creating an xml for a custom update server ... http://docs.joomla.org/Deploying_an_Update_Server gives the basics.  It covers updating third party extensions as well as updating Joomla to a specific version.&lt;br /&gt;
&lt;br /&gt;
So, do you suggest to only link to http://docs.joomla.org/Deploying_an_Update_Server in the help?[[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 14:38, 4 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118041</id>
		<title>Help310 talk:Components Joomla Update</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118041"/>
		<updated>2014-05-04T14:59:17Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Custom URL section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Request for arbitrage: update to current removed ==&lt;br /&gt;
&lt;br /&gt;
Request for arbitrage: Changed the description to note that an update goes for the current version. Think the destinction is relevant because it doesn&#039;t allow you to pick one, it decides for you and picks the current one. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 05:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Agreed, the update is only the most current one. You do not have a choice if on 3.2.0 to update to 3.2.1, you&#039;ll get 3.2.4 or 3.3.0. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 07:53, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Sorry but you are incorrect because the update version can be defined in an xml file situated on a URL defined in the &#039;Custom&#039; Server field. Topazgb 13:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:::One has nothing to do with the other, but I can see what you are thinking. The problem is the word &#039;current&#039; is used as it should be. The goal is to keep the users on the &#039;current&#039; release, not a previous release. &amp;quot;A/an&amp;quot; is indefinite and &amp;quot;the&amp;quot; is specific. &amp;quot;A&amp;quot; current update would imply a non specific choice or even multiple choices for the end user. &amp;quot;The&amp;quot; current update would be the specific update offered, the &amp;quot;current&amp;quot; update. Since users aren&#039;t presented with a choice of updates, e.g. 3.0 installed, update to 3.1.0, 3.0.1, 3.2.4, 3.3.0, now pick one, &amp;quot;the current update&amp;quot; is appropriate as it is one specific update. Even if a user changes to a custom URL, different server(LTS or STS), only one update is presented, which may not be the current one, but to the component it is the current one(higher version compared to what is installed). Hope that helps. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:33, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::::The Second sentence (of the help page)describes that there are choices of the different update servers ... but the first sentence only specifies the result of the default setting.  ergo the first sentence (of the help page is inaccurate. &lt;br /&gt;
&lt;br /&gt;
::::&#039;&#039;&amp;quot;This screen allows Joomla! to be updated quickly by downloading the current update package&amp;quot;&#039;&#039; is inaccurate/incomplete because it only allows for the downloading of the current update package with the default/pre-set settings.  Therefore the definite article &#039;the&#039; is being incorrectly used because it is possible to download any update version. &lt;br /&gt;
&lt;br /&gt;
::::In short ... that screen can be used to download any update version not just &#039;&#039;&amp;quot;the current update package&amp;quot;&#039;&#039; &lt;br /&gt;
::::--Topazgb 11:36, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::Now it states it is the default. While I was at it, noted the change of the server is for advanced users.&lt;br /&gt;
::So why would you want users to use a specific, unsupported update? Devs on the testing server are advanced users, regular users should always be using the latest version. &lt;br /&gt;
::The help screen&#039;s job is to give help to the common, everyday users. You are splitting hairs on the 99%(targeted audience) vs the 1%(highly advanced users/developers). [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 10:03, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::I do not &#039;&#039;&amp;quot;want users to use a specific, unsupported update&amp;quot;&#039;&#039; ... And I am not &#039;&#039;splitting hairs&#039;&#039;.  There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.  Giving accurate information will help them without hindering the average user.  But inaccurate information (by way of inferring only the current update can be downloaded from that screen) can cause a misconception for experienced Web masters that wish to experiment with Joomla. --Topazgb 11:14, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
I would like to see (a link to) an example xml file that updates to J3.2.3. Also the description of 4.1 should be changed so webmasters know when to choose the last two options. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 20:29, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
@Sovainfo&lt;br /&gt;
As requested http://www.weblinksonline.co.uk/testupdate/update3.2.3.xml&lt;br /&gt;
Method to replicate&lt;br /&gt;
# Install any version of Joomla prior to 3.2.3&lt;br /&gt;
#In Joomla! Update Component&lt;br /&gt;
#Set Update server to &#039;Custom URL&#039;&lt;br /&gt;
#In the &#039;Custom URL&#039; field put http://www.weblinksonline.co.uk/testupdate/update3.2.3.xml&lt;br /&gt;
#&#039;Save and Close&#039;&lt;br /&gt;
You should then see the download for http://joomlacode.org/gf/download/frsrelease/19240/158108/Joomla_3.2.x_to_3.2.3-Stable-Patch_Package.zip --Topazgb 08:54, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:4.1 is automated, would need to change the form field tool tip in core to change it. After investigating more, updater works on a greater than. 4.0.14 must be greater than the installed, 4.0.11. You can point to a XML file, but must point to a greater than version to get update is available. &#039;&#039;&#039;You can not regress&#039;&#039;&#039;, 4.0.14 to 4.0.11. The example is a &#039;&#039;&#039;testing&#039;&#039;&#039; URL example, not real world practical for everyday users. URL practical uses, &#039;&#039;&#039;development&#039;&#039;&#039;, &#039;&#039;&#039;testing&#039;&#039;&#039; or a &#039;&#039;&#039;developer supplying a custom update to their client(s)&#039;&#039;&#039;. The last example, a custom component or core addition or changes, which obviously is more work for a developer. This statement:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:is not an accurate use of updater. The specific update must always be greater than the version installed. I can&#039;t think a a reason off-hand why an experience webmaster would &amp;quot;want to target&amp;quot; an update, especially if they are not familiar with Joomla. An truly experienced webmaster knows better than to tweak settings they don&#039;t understand fully.&lt;br /&gt;
:In any regards, I think we are past the point of putting this to rest. Thanks for all the input, the use of &amp;quot;the current update&amp;quot; will stay in place. Thanks [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:06, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Proposed changes to 4.1 ==&lt;br /&gt;
&lt;br /&gt;
Understand that this section is automated. Wonder why 4.1 doesn&#039;t mention the two fields separately. The Custom URL description doesn&#039;t make sense to me. It is in the list of options but describes the field where you enter the url itself. The option should be described as Pick this when you want to specify your own update server. Provide the url in Custom URL data entry field.&lt;br /&gt;
Description for Custom URL data entry field should be something like Provide your own url here, only applicable when update server is set to Custom URL.&lt;br /&gt;
&lt;br /&gt;
Suggest to change &amp;quot;Currently configured (no change)&amp;quot; to &amp;quot;No update server&amp;quot;.[[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 09:53, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Custom URL section ==&lt;br /&gt;
&lt;br /&gt;
@Topazgb: Thanks for providing the information on the XML. Actually meant this information to be provided in the help document. Not the step by step instructions, the higher level of information. No need to tell an experienced webmaster to press buttons. The xml contents with the example information and instructions what to change for their situation. And how to find that information. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 09:53, 4 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118040</id>
		<title>Help310 talk:Components Joomla Update</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118040"/>
		<updated>2014-05-04T14:53:39Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Proposed changes to 4.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Request for arbitrage: update to current removed ==&lt;br /&gt;
&lt;br /&gt;
Request for arbitrage: Changed the description to note that an update goes for the current version. Think the destinction is relevant because it doesn&#039;t allow you to pick one, it decides for you and picks the current one. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 05:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Agreed, the update is only the most current one. You do not have a choice if on 3.2.0 to update to 3.2.1, you&#039;ll get 3.2.4 or 3.3.0. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 07:53, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Sorry but you are incorrect because the update version can be defined in an xml file situated on a URL defined in the &#039;Custom&#039; Server field. Topazgb 13:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:::One has nothing to do with the other, but I can see what you are thinking. The problem is the word &#039;current&#039; is used as it should be. The goal is to keep the users on the &#039;current&#039; release, not a previous release. &amp;quot;A/an&amp;quot; is indefinite and &amp;quot;the&amp;quot; is specific. &amp;quot;A&amp;quot; current update would imply a non specific choice or even multiple choices for the end user. &amp;quot;The&amp;quot; current update would be the specific update offered, the &amp;quot;current&amp;quot; update. Since users aren&#039;t presented with a choice of updates, e.g. 3.0 installed, update to 3.1.0, 3.0.1, 3.2.4, 3.3.0, now pick one, &amp;quot;the current update&amp;quot; is appropriate as it is one specific update. Even if a user changes to a custom URL, different server(LTS or STS), only one update is presented, which may not be the current one, but to the component it is the current one(higher version compared to what is installed). Hope that helps. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:33, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::::The Second sentence (of the help page)describes that there are choices of the different update servers ... but the first sentence only specifies the result of the default setting.  ergo the first sentence (of the help page is inaccurate. &lt;br /&gt;
&lt;br /&gt;
::::&#039;&#039;&amp;quot;This screen allows Joomla! to be updated quickly by downloading the current update package&amp;quot;&#039;&#039; is inaccurate/incomplete because it only allows for the downloading of the current update package with the default/pre-set settings.  Therefore the definite article &#039;the&#039; is being incorrectly used because it is possible to download any update version. &lt;br /&gt;
&lt;br /&gt;
::::In short ... that screen can be used to download any update version not just &#039;&#039;&amp;quot;the current update package&amp;quot;&#039;&#039; &lt;br /&gt;
::::--Topazgb 11:36, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::Now it states it is the default. While I was at it, noted the change of the server is for advanced users.&lt;br /&gt;
::So why would you want users to use a specific, unsupported update? Devs on the testing server are advanced users, regular users should always be using the latest version. &lt;br /&gt;
::The help screen&#039;s job is to give help to the common, everyday users. You are splitting hairs on the 99%(targeted audience) vs the 1%(highly advanced users/developers). [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 10:03, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::I do not &#039;&#039;&amp;quot;want users to use a specific, unsupported update&amp;quot;&#039;&#039; ... And I am not &#039;&#039;splitting hairs&#039;&#039;.  There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.  Giving accurate information will help them without hindering the average user.  But inaccurate information (by way of inferring only the current update can be downloaded from that screen) can cause a misconception for experienced Web masters that wish to experiment with Joomla. --Topazgb 11:14, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
I would like to see (a link to) an example xml file that updates to J3.2.3. Also the description of 4.1 should be changed so webmasters know when to choose the last two options. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 20:29, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
@Sovainfo&lt;br /&gt;
As requested http://www.weblinksonline.co.uk/testupdate/update3.2.3.xml&lt;br /&gt;
Method to replicate&lt;br /&gt;
# Install any version of Joomla prior to 3.2.3&lt;br /&gt;
#In Joomla! Update Component&lt;br /&gt;
#Set Update server to &#039;Custom URL&#039;&lt;br /&gt;
#In the &#039;Custom URL&#039; field put http://www.weblinksonline.co.uk/testupdate/update3.2.3.xml&lt;br /&gt;
#&#039;Save and Close&#039;&lt;br /&gt;
You should then see the download for http://joomlacode.org/gf/download/frsrelease/19240/158108/Joomla_3.2.x_to_3.2.3-Stable-Patch_Package.zip --Topazgb 08:54, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:4.1 is automated, would need to change the form field tool tip in core to change it. After investigating more, updater works on a greater than. 4.0.14 must be greater than the installed, 4.0.11. You can point to a XML file, but must point to a greater than version to get update is available. &#039;&#039;&#039;You can not regress&#039;&#039;&#039;, 4.0.14 to 4.0.11. The example is a &#039;&#039;&#039;testing&#039;&#039;&#039; URL example, not real world practical for everyday users. URL practical uses, &#039;&#039;&#039;development&#039;&#039;&#039;, &#039;&#039;&#039;testing&#039;&#039;&#039; or a &#039;&#039;&#039;developer supplying a custom update to their client(s)&#039;&#039;&#039;. The last example, a custom component or core addition or changes, which obviously is more work for a developer. This statement:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:is not an accurate use of updater. The specific update must always be greater than the version installed. I can&#039;t think a a reason off-hand why an experience webmaster would &amp;quot;want to target&amp;quot; an update, especially if they are not familiar with Joomla. An truly experienced webmaster knows better than to tweak settings they don&#039;t understand fully.&lt;br /&gt;
:In any regards, I think we are past the point of putting this to rest. Thanks for all the input, the use of &amp;quot;the current update&amp;quot; will stay in place. Thanks [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:06, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Proposed changes to 4.1 ==&lt;br /&gt;
&lt;br /&gt;
Understand that this section is automated. Wonder why 4.1 doesn&#039;t mention the two fields separately. The Custom URL description doesn&#039;t make sense to me. It is in the list of options but describes the field where you enter the url itself. The option should be described as Pick this when you want to specify your own update server. Provide the url in Custom URL data entry field.&lt;br /&gt;
Description for Custom URL data entry field should be something like Provide your own url here, only applicable when update server is set to Custom URL.&lt;br /&gt;
&lt;br /&gt;
Suggest to change &amp;quot;Currently configured (no change)&amp;quot; to &amp;quot;No update server&amp;quot;.[[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 09:53, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Custom URL section ==&lt;br /&gt;
&lt;br /&gt;
Thanks for providing the information on the XML. Actually meant this information to be provided in the help document. Not the step by step instructions, the higher level of information. No need to tell an experienced webmaster to press buttons. The xml contents with the example information and instructions what to change for their situation. And how to find that information. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 09:53, 4 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118039</id>
		<title>Help310 talk:Components Joomla Update</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118039"/>
		<updated>2014-05-04T14:53:23Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Custom URL section */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Request for arbitrage: update to current removed ==&lt;br /&gt;
&lt;br /&gt;
Request for arbitrage: Changed the description to note that an update goes for the current version. Think the destinction is relevant because it doesn&#039;t allow you to pick one, it decides for you and picks the current one. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 05:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Agreed, the update is only the most current one. You do not have a choice if on 3.2.0 to update to 3.2.1, you&#039;ll get 3.2.4 or 3.3.0. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 07:53, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Sorry but you are incorrect because the update version can be defined in an xml file situated on a URL defined in the &#039;Custom&#039; Server field. Topazgb 13:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:::One has nothing to do with the other, but I can see what you are thinking. The problem is the word &#039;current&#039; is used as it should be. The goal is to keep the users on the &#039;current&#039; release, not a previous release. &amp;quot;A/an&amp;quot; is indefinite and &amp;quot;the&amp;quot; is specific. &amp;quot;A&amp;quot; current update would imply a non specific choice or even multiple choices for the end user. &amp;quot;The&amp;quot; current update would be the specific update offered, the &amp;quot;current&amp;quot; update. Since users aren&#039;t presented with a choice of updates, e.g. 3.0 installed, update to 3.1.0, 3.0.1, 3.2.4, 3.3.0, now pick one, &amp;quot;the current update&amp;quot; is appropriate as it is one specific update. Even if a user changes to a custom URL, different server(LTS or STS), only one update is presented, which may not be the current one, but to the component it is the current one(higher version compared to what is installed). Hope that helps. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:33, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::::The Second sentence (of the help page)describes that there are choices of the different update servers ... but the first sentence only specifies the result of the default setting.  ergo the first sentence (of the help page is inaccurate. &lt;br /&gt;
&lt;br /&gt;
::::&#039;&#039;&amp;quot;This screen allows Joomla! to be updated quickly by downloading the current update package&amp;quot;&#039;&#039; is inaccurate/incomplete because it only allows for the downloading of the current update package with the default/pre-set settings.  Therefore the definite article &#039;the&#039; is being incorrectly used because it is possible to download any update version. &lt;br /&gt;
&lt;br /&gt;
::::In short ... that screen can be used to download any update version not just &#039;&#039;&amp;quot;the current update package&amp;quot;&#039;&#039; &lt;br /&gt;
::::--Topazgb 11:36, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::Now it states it is the default. While I was at it, noted the change of the server is for advanced users.&lt;br /&gt;
::So why would you want users to use a specific, unsupported update? Devs on the testing server are advanced users, regular users should always be using the latest version. &lt;br /&gt;
::The help screen&#039;s job is to give help to the common, everyday users. You are splitting hairs on the 99%(targeted audience) vs the 1%(highly advanced users/developers). [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 10:03, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::I do not &#039;&#039;&amp;quot;want users to use a specific, unsupported update&amp;quot;&#039;&#039; ... And I am not &#039;&#039;splitting hairs&#039;&#039;.  There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.  Giving accurate information will help them without hindering the average user.  But inaccurate information (by way of inferring only the current update can be downloaded from that screen) can cause a misconception for experienced Web masters that wish to experiment with Joomla. --Topazgb 11:14, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
I would like to see (a link to) an example xml file that updates to J3.2.3. Also the description of 4.1 should be changed so webmasters know when to choose the last two options. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 20:29, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
@Sovainfo&lt;br /&gt;
As requested http://www.weblinksonline.co.uk/testupdate/update3.2.3.xml&lt;br /&gt;
Method to replicate&lt;br /&gt;
# Install any version of Joomla prior to 3.2.3&lt;br /&gt;
#In Joomla! Update Component&lt;br /&gt;
#Set Update server to &#039;Custom URL&#039;&lt;br /&gt;
#In the &#039;Custom URL&#039; field put http://www.weblinksonline.co.uk/testupdate/update3.2.3.xml&lt;br /&gt;
#&#039;Save and Close&#039;&lt;br /&gt;
You should then see the download for http://joomlacode.org/gf/download/frsrelease/19240/158108/Joomla_3.2.x_to_3.2.3-Stable-Patch_Package.zip --Topazgb 08:54, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:4.1 is automated, would need to change the form field tool tip in core to change it. After investigating more, updater works on a greater than. 4.0.14 must be greater than the installed, 4.0.11. You can point to a XML file, but must point to a greater than version to get update is available. &#039;&#039;&#039;You can not regress&#039;&#039;&#039;, 4.0.14 to 4.0.11. The example is a &#039;&#039;&#039;testing&#039;&#039;&#039; URL example, not real world practical for everyday users. URL practical uses, &#039;&#039;&#039;development&#039;&#039;&#039;, &#039;&#039;&#039;testing&#039;&#039;&#039; or a &#039;&#039;&#039;developer supplying a custom update to their client(s)&#039;&#039;&#039;. The last example, a custom component or core addition or changes, which obviously is more work for a developer. This statement:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:is not an accurate use of updater. The specific update must always be greater than the version installed. I can&#039;t think a a reason off-hand why an experience webmaster would &amp;quot;want to target&amp;quot; an update, especially if they are not familiar with Joomla. An truly experienced webmaster knows better than to tweak settings they don&#039;t understand fully.&lt;br /&gt;
:In any regards, I think we are past the point of putting this to rest. Thanks for all the input, the use of &amp;quot;the current update&amp;quot; will stay in place. Thanks [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:06, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Proposed changes to 4.1 ==&lt;br /&gt;
&lt;br /&gt;
Understand that this section is automated. Wonder why 4.1 doesn&#039;t mention the two fields separately. The Custom URL description doesn&#039;t make sense to me. It is in the list of options but describes the field where you enter the url itself. The option should be described as Pick this when you want to specify your own update server. Provide the url in Custom URL data entry field.&lt;br /&gt;
Description for Custom URL data entry field should be something like Provide your own url here, only applicable when update server is set to Custom URL.&lt;br /&gt;
&lt;br /&gt;
Suggest to change &amp;quot;Currently configured (no change)&amp;quot; to &amp;quot;No update server&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Custom URL section ==&lt;br /&gt;
&lt;br /&gt;
Thanks for providing the information on the XML. Actually meant this information to be provided in the help document. Not the step by step instructions, the higher level of information. No need to tell an experienced webmaster to press buttons. The xml contents with the example information and instructions what to change for their situation. And how to find that information. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 09:53, 4 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118038</id>
		<title>Help310 talk:Components Joomla Update</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118038"/>
		<updated>2014-05-04T14:44:43Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Proposed changes to 4.1 */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Request for arbitrage: update to current removed ==&lt;br /&gt;
&lt;br /&gt;
Request for arbitrage: Changed the description to note that an update goes for the current version. Think the destinction is relevant because it doesn&#039;t allow you to pick one, it decides for you and picks the current one. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 05:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Agreed, the update is only the most current one. You do not have a choice if on 3.2.0 to update to 3.2.1, you&#039;ll get 3.2.4 or 3.3.0. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 07:53, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Sorry but you are incorrect because the update version can be defined in an xml file situated on a URL defined in the &#039;Custom&#039; Server field. Topazgb 13:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:::One has nothing to do with the other, but I can see what you are thinking. The problem is the word &#039;current&#039; is used as it should be. The goal is to keep the users on the &#039;current&#039; release, not a previous release. &amp;quot;A/an&amp;quot; is indefinite and &amp;quot;the&amp;quot; is specific. &amp;quot;A&amp;quot; current update would imply a non specific choice or even multiple choices for the end user. &amp;quot;The&amp;quot; current update would be the specific update offered, the &amp;quot;current&amp;quot; update. Since users aren&#039;t presented with a choice of updates, e.g. 3.0 installed, update to 3.1.0, 3.0.1, 3.2.4, 3.3.0, now pick one, &amp;quot;the current update&amp;quot; is appropriate as it is one specific update. Even if a user changes to a custom URL, different server(LTS or STS), only one update is presented, which may not be the current one, but to the component it is the current one(higher version compared to what is installed). Hope that helps. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:33, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::::The Second sentence (of the help page)describes that there are choices of the different update servers ... but the first sentence only specifies the result of the default setting.  ergo the first sentence (of the help page is inaccurate. &lt;br /&gt;
&lt;br /&gt;
::::&#039;&#039;&amp;quot;This screen allows Joomla! to be updated quickly by downloading the current update package&amp;quot;&#039;&#039; is inaccurate/incomplete because it only allows for the downloading of the current update package with the default/pre-set settings.  Therefore the definite article &#039;the&#039; is being incorrectly used because it is possible to download any update version. &lt;br /&gt;
&lt;br /&gt;
::::In short ... that screen can be used to download any update version not just &#039;&#039;&amp;quot;the current update package&amp;quot;&#039;&#039; &lt;br /&gt;
::::--Topazgb 11:36, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::Now it states it is the default. While I was at it, noted the change of the server is for advanced users.&lt;br /&gt;
::So why would you want users to use a specific, unsupported update? Devs on the testing server are advanced users, regular users should always be using the latest version. &lt;br /&gt;
::The help screen&#039;s job is to give help to the common, everyday users. You are splitting hairs on the 99%(targeted audience) vs the 1%(highly advanced users/developers). [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 10:03, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::I do not &#039;&#039;&amp;quot;want users to use a specific, unsupported update&amp;quot;&#039;&#039; ... And I am not &#039;&#039;splitting hairs&#039;&#039;.  There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.  Giving accurate information will help them without hindering the average user.  But inaccurate information (by way of inferring only the current update can be downloaded from that screen) can cause a misconception for experienced Web masters that wish to experiment with Joomla. --Topazgb 11:14, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
I would like to see (a link to) an example xml file that updates to J3.2.3. Also the description of 4.1 should be changed so webmasters know when to choose the last two options. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 20:29, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
@Sovainfo&lt;br /&gt;
As requested http://www.weblinksonline.co.uk/testupdate/update3.2.3.xml&lt;br /&gt;
Method to replicate&lt;br /&gt;
# Install any version of Joomla prior to 3.2.3&lt;br /&gt;
#In Joomla! Update Component&lt;br /&gt;
#Set Update server to &#039;Custom URL&#039;&lt;br /&gt;
#In the &#039;Custom URL&#039; field put http://www.weblinksonline.co.uk/testupdate/update3.2.3.xml&lt;br /&gt;
#&#039;Save and Close&#039;&lt;br /&gt;
You should then see the download for http://joomlacode.org/gf/download/frsrelease/19240/158108/Joomla_3.2.x_to_3.2.3-Stable-Patch_Package.zip --Topazgb 08:54, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:4.1 is automated, would need to change the form field tool tip in core to change it. After investigating more, updater works on a greater than. 4.0.14 must be greater than the installed, 4.0.11. You can point to a XML file, but must point to a greater than version to get update is available. &#039;&#039;&#039;You can not regress&#039;&#039;&#039;, 4.0.14 to 4.0.11. The example is a &#039;&#039;&#039;testing&#039;&#039;&#039; URL example, not real world practical for everyday users. URL practical uses, &#039;&#039;&#039;development&#039;&#039;&#039;, &#039;&#039;&#039;testing&#039;&#039;&#039; or a &#039;&#039;&#039;developer supplying a custom update to their client(s)&#039;&#039;&#039;. The last example, a custom component or core addition or changes, which obviously is more work for a developer. This statement:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
:is not an accurate use of updater. The specific update must always be greater than the version installed. I can&#039;t think a a reason off-hand why an experience webmaster would &amp;quot;want to target&amp;quot; an update, especially if they are not familiar with Joomla. An truly experienced webmaster knows better than to tweak settings they don&#039;t understand fully.&lt;br /&gt;
:In any regards, I think we are past the point of putting this to rest. Thanks for all the input, the use of &amp;quot;the current update&amp;quot; will stay in place. Thanks [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:06, 4 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Proposed changes to 4.1 ==&lt;br /&gt;
&lt;br /&gt;
Understand that this section is automated. Wonder why 4.1 doesn&#039;t mention the two fields separately. The Custom URL description doesn&#039;t make sense to me. It is in the list of options but describes the field where you enter the url itself. The option should be described as Pick this when you want to specify your own update server. Provide the url in Custom URL data entry field.&lt;br /&gt;
Description for Custom URL data entry field should be something like Provide your own url here, only applicable when update server is set to Custom URL.&lt;br /&gt;
&lt;br /&gt;
Suggest to change &amp;quot;Currently configured (no change)&amp;quot; to &amp;quot;No update server&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118032</id>
		<title>Help310 talk:Components Joomla Update</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Help310_talk:Components_Joomla_Update&amp;diff=118032"/>
		<updated>2014-05-04T01:29:14Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Request for arbitrage: update to current removed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Request for arbitrage: update to current removed ==&lt;br /&gt;
&lt;br /&gt;
Request for arbitrage: Changed the description to note that an update goes for the current version. Think the destinction is relevant because it doesn&#039;t allow you to pick one, it decides for you and picks the current one. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 05:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:Agreed, the update is only the most current one. You do not have a choice if on 3.2.0 to update to 3.2.1, you&#039;ll get 3.2.4 or 3.3.0. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 07:53, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::Sorry but you are incorrect because the update version can be defined in an xml file situated on a URL defined in the &#039;Custom&#039; Server field. Topazgb 13:21, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:::One has nothing to do with the other, but I can see what you are thinking. The problem is the word &#039;current&#039; is used as it should be. The goal is to keep the users on the &#039;current&#039; release, not a previous release. &amp;quot;A/an&amp;quot; is indefinite and &amp;quot;the&amp;quot; is specific. &amp;quot;A&amp;quot; current update would imply a non specific choice or even multiple choices for the end user. &amp;quot;The&amp;quot; current update would be the specific update offered, the &amp;quot;current&amp;quot; update. Since users aren&#039;t presented with a choice of updates, e.g. 3.0 installed, update to 3.1.0, 3.0.1, 3.2.4, 3.3.0, now pick one, &amp;quot;the current update&amp;quot; is appropriate as it is one specific update. Even if a user changes to a custom URL, different server(LTS or STS), only one update is presented, which may not be the current one, but to the component it is the current one(higher version compared to what is installed). Hope that helps. [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 09:33, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
::::The Second sentence (of the help page)describes that there are choices of the different update servers ... but the first sentence only specifies the result of the default setting.  ergo the first sentence (of the help page is inaccurate. &lt;br /&gt;
&lt;br /&gt;
::::&#039;&#039;&amp;quot;This screen allows Joomla! to be updated quickly by downloading the current update package&amp;quot;&#039;&#039; is inaccurate/incomplete because it only allows for the downloading of the current update package with the default/pre-set settings.  Therefore the definite article &#039;the&#039; is being incorrectly used because it is possible to download any update version. &lt;br /&gt;
&lt;br /&gt;
::::In short ... that screen can be used to download any update version not just &#039;&#039;&amp;quot;the current update package&amp;quot;&#039;&#039; &lt;br /&gt;
::::--Topazgb 11:36, 2 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::Now it states it is the default. While I was at it, noted the change of the server is for advanced users.&lt;br /&gt;
::So why would you want users to use a specific, unsupported update? Devs on the testing server are advanced users, regular users should always be using the latest version. &lt;br /&gt;
::The help screen&#039;s job is to give help to the common, everyday users. You are splitting hairs on the 99%(targeted audience) vs the 1%(highly advanced users/developers). [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 10:03, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::I do not &#039;&#039;&amp;quot;want users to use a specific, unsupported update&amp;quot;&#039;&#039; ... And I am not &#039;&#039;splitting hairs&#039;&#039;.  There may be experienced Web masters who are not familiar with Joomla and (for a number of reasons) wish to use a specific update.  Giving accurate information will help them without hindering the average user.  But inaccurate information (by way of inferring only the current update can be downloaded from that screen) can cause a misconception for experienced Web masters that wish to experiment with Joomla. --Topazgb 11:14, 3 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
I would like to see (a link to) an example xml file that updates to J3.2.3. Also the description of 4.1 should be changed so webmasters know when to choose the last two options. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 20:29, 3 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Database_schema_version_(3.2.3-2014-02-20)_does_not_match_CMS_version_(3.2.3)&amp;diff=118031</id>
		<title>J3.x talk:Database schema version (3.2.3-2014-02-20) does not match CMS version (3.2.3)</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x_talk:Database_schema_version_(3.2.3-2014-02-20)_does_not_match_CMS_version_(3.2.3)&amp;diff=118031"/>
		<updated>2014-05-04T00:48:11Z</updated>

		<summary type="html">&lt;p&gt;Sovainfo: /* Wrong version tag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wrong version tag ==&lt;br /&gt;
&lt;br /&gt;
This topic has a wrong version tag. It says J3.3 while it should be J3.2. Please correct. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 05:40, 1 May 2014 (CDT)&lt;br /&gt;
: Yesterday we released 3.3, so the namespace was changed to reflect J3.3. There is no way to set the top tag, it is the namespace of the page. That said, there are a couple of options I have been kicking around. We definitely use docs a lot for FAQs. We also have a new version strategy in place which could lead to the namespace just being a simple J3.x. &lt;br /&gt;
&lt;br /&gt;
:Options:&lt;br /&gt;
:# Just namespace and move all FAQs to a namespace called FAQ. Benefits, they are more prominently marked as a FAQ. Down the road we could Semantic MediaWiki this namespace and add Forms for reporting. Fill out the form, save and let SMW take care of everything. Automatic categorisation, lists by version, easier to search for FAQs. I have already half implemented this on FAQ category pages. Give a page title and click create, uses a boilerplate editor window fill of text.&lt;br /&gt;
:# The easy way out. Wait a few months and when the full development strategy is in place and we are done stripping out LTS and STS and the like, namespace J3.3 or J3.4, etc can eventually be made a static J3.x. Our docs strategy is to only support docs for the current versions supported. FAQs are a different story as they answer questions moving along the development and use of Joomla path to the current version.&lt;br /&gt;
: Thoughts? [[User:Tom Hutchison|Tom Hutchison]] ([[User talk:Tom Hutchison|talk]]) 08:09, 1 May 2014 (CDT)&lt;br /&gt;
&lt;br /&gt;
:: Thank you for the answer, appreciated. Too bad it can&#039;t be changed, it is fixed in J3.3. I like both the options you suggest, not sure that I understand why we can&#039;t use J3.x right now. The information I want to get across is that it applies to j3.2.3 and is solved in j3.3. Now it looks like the problem still exists. [[User:Sovainfo|Sovainfo]] ([[User talk:Sovainfo|talk]]) 19:48, 3 May 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Sovainfo</name></author>
	</entry>
</feed>