<?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=Levelup</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=Levelup"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Levelup"/>
	<updated>2026-05-14T03:38:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Creating_a_Plugin_for_Joomla/fa&amp;diff=597515</id>
		<title>J4.x:Creating a Plugin for Joomla/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Creating_a_Plugin_for_Joomla/fa&amp;diff=597515"/>
		<updated>2019-03-22T19:29:24Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;ساختار پلاگین در جوملا 1.5 و 2.5 و 3 بسیار منعطف و قدرتمند بود. بطوریکه نه تنها می توان پلاگین ها را ب...&amp;quot;&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;
{{Top portal heading|color=white-bkgd|icon=magic|icon-color=#5091cd|size=3x|text-color=#333|title=خودآموز&amp;lt;br /&amp;gt;&lt;br /&gt;
چگونه یک پلاگین برای جوملا 4 درست کنیم}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x|comment=series}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
ساختار پلاگین در جوملا 1.5 و 2.5 و 3 بسیار منعطف و قدرتمند بود. بطوریکه نه تنها می توان پلاگین ها را برای راه اندازی رخداد های انجام شده در هسته اپلیکیشن و افزونه ها استفاده کرد، بلکه می توانند برای توسعه و قدرتمند کردن افزونه های دیگران نیز  مورد استفاده قرار بگیرند. در جوملا 4 ما مقدار زیادی از سیستم dispatcher پشت سر آن را بازنویسی کرده ایم تا انعطاف پذیری را بیشتر افزایش دهیم هنگامی که شما پارامترهایی را که به عنوان رویدادها اصلاح می کنید و در عین حال کارایی پلاگین ها را افزایش دهید.&lt;br /&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;
&lt;br /&gt;
=== Creating the Installation File ===&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. &amp;lt;br /&amp;gt;&lt;br /&gt;
As an example, here is the XML installation file for the categories search plugin:&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; method=&amp;quot;upgrade&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 - 2018 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.0.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;/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&lt;br /&gt;
					name=&amp;quot;search_limit&amp;quot;&lt;br /&gt;
					type=&amp;quot;number&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field&lt;br /&gt;
					name=&amp;quot;search_content&amp;quot;&lt;br /&gt;
					type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					class=&amp;quot;switcher&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&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;
&lt;br /&gt;
				&amp;lt;field&lt;br /&gt;
					name=&amp;quot;search_archived&amp;quot;&lt;br /&gt;
					type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					class=&amp;quot;switcher&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&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;/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;
As you can see, the system is similar to other Joomla XML installation files. You only have to look out for the &amp;lt;tt&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/tt&amp;gt; entry in the &amp;lt;tt&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/tt&amp;gt; tag and the extended information in the &amp;lt;tt&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/tt&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;
&lt;br /&gt;
If you are creating a plugin that responds to existing core events, the &amp;lt;tt&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/tt&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;tt&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/tt&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;
&lt;br /&gt;
If you are creating a plugin to respond to non-core system events your choice for the &amp;lt;tt&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/tt&amp;gt; tag should be different than any of the existing core categories.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TIP:&#039;&#039;&#039; &#039;&#039;If you add the attribute &amp;lt;tt&amp;gt;method=&amp;quot;upgrade&amp;quot;&amp;lt;/tt&amp;gt; to the tag &amp;lt;tt&amp;gt;extension&amp;lt;/tt&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.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Creating the Plugin ===&lt;br /&gt;
The object-oriented way of writing plugins involves writing a subclass of [https://api.joomla.org/cms-4/classes/Joomla.CMS.Plugin.CMSPlugin.html CMSPlugin], a base class that implements the basic properties of plugins. In your methods, the following properties are available:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;params&amp;lt;/tt&amp;gt;: the [[S:MyLanguage/Parameter|parameters]] set for this plugin by the administrator&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;_name&amp;lt;/tt&amp;gt;: the name of the plugin&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;_type&amp;lt;/tt&amp;gt;: the group (type) of the plugin&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;db&amp;lt;/tt&amp;gt;: the db object&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;app&amp;lt;/tt&amp;gt;: the application object&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TIP:&#039;&#039;&#039; &#039;&#039;To use &amp;lt;tt&amp;gt;$this-&amp;gt;db&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$this-&amp;gt;app&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;CMSPlugin&amp;lt;/tt&amp;gt; tests if the property exists and is not private. If it is desired for the default objects to be used, create un-instantiated properties in the plugin class (i.e. &amp;lt;tt&amp;gt;protected $db; protected $app;&amp;lt;/tt&amp;gt; in the same area as &amp;lt;tt&amp;gt;protected $autoloadLanguage = true;&amp;lt;/tt&amp;gt;). The properties will not exist unless explicitly created.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the following code example, &amp;lt;tt&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/tt&amp;gt; represents the group (type) of the plugin, and &amp;lt;tt&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/tt&amp;gt; represents its name. Note that class and function names in PHP are case-insensitive.&lt;br /&gt;
&lt;br /&gt;
We also implement the [https://api.joomla.org/framework-2/classes/Joomla.Event.SubscriberInterface.html SubscriberInterface] here which is the major change from Joomla 1.5-3.x. Instead of the function name automatically being detected and being the same as the event name this allows you to have custom function names. This allows us to tell what plugins are implementing what functions and as parsing public methods in PHP code is slow gives a significant performance boost.&lt;br /&gt;
&lt;br /&gt;
Note throughout the Joomla 4 series there is a deprecated layer that will cover plugins using the old naming strategy of plugin names being the same as the event name when SubscriberInterface is not implemented.&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;
use Joomla\CMS\Plugin\CMSPlugin;&lt;br /&gt;
use Joomla\CMS\Event\Event;&lt;br /&gt;
use Joomla\Event\SubscriberInterface;&lt;br /&gt;
&lt;br /&gt;
class Plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends CMSPlugin implements SubscriberInterface&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation&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;
	 * Returns an array of events this subscriber will listen to.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  array&lt;br /&gt;
	 */&lt;br /&gt;
	public static function getSubscribedEvents(): array&lt;br /&gt;
	{&lt;br /&gt;
		return [&lt;br /&gt;
			&#039;&amp;lt;EventName&amp;gt;&#039; =&amp;gt; &#039;myFunctionName&#039;,&lt;br /&gt;
		];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method is the array value in the getSubscribedEvents method&lt;br /&gt;
	 * The plugin then modifies the Event object (if it&#039;s not immutable)&lt;br /&gt;
	 */&lt;br /&gt;
	 public function myFunctionName(Event $event)&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access parameters via $this-&amp;gt;params&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;
استفاده از پلاگین ها در کد های شما&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;tt&amp;gt;JPluginHelper::importPlugin()&amp;lt;/tt&amp;gt; command.&lt;br /&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 (and in that case you can ignore this section).&lt;br /&gt;
&lt;br /&gt;
==== New Joomla 4 Way ====&lt;br /&gt;
The new way of doing this in Joomla 4 is to get the dispatcher and dispatch a named event.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Event\AbstractEvent;&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
&lt;br /&gt;
$dispatcher = Factory::getApplication()-&amp;gt;getDispatcher();&lt;br /&gt;
&lt;br /&gt;
// Here we create an event however as long as you implement EventInterface you can create your own &lt;br /&gt;
// custom classes&lt;br /&gt;
$event = AbstractEvent::create(&lt;br /&gt;
	&#039;&amp;lt;EventName&amp;gt;&#039;,&lt;br /&gt;
	[&lt;br /&gt;
		&#039;name&#039; =&amp;gt; $value,&lt;br /&gt;
	]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
$eventResult = $dispatcher-&amp;gt;dispatch(&#039;&amp;lt;EventName&amp;gt;&#039;, $event);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to allow the user to modify values you can then use the event result and getResults back out of it. You can look at &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use BadMethodCallException;&lt;br /&gt;
use Joomla\CMS\Event\AbstractImmutableEvent;&lt;br /&gt;
use Joomla\CMS\Table\TableInterface;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Event class for an event&lt;br /&gt;
 */&lt;br /&gt;
class MyCustomEvent extends AbstractImmutableEvent&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Constructor.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $name       The event name.&lt;br /&gt;
	 * @param   array   $arguments  The event arguments.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @throws  BadMethodCallException&lt;br /&gt;
	 */&lt;br /&gt;
	public function __construct($name, array $arguments = array())&lt;br /&gt;
	{&lt;br /&gt;
		if (!array_key_exists(&#039;myProperty&#039;, $arguments))&lt;br /&gt;
		{&lt;br /&gt;
			throw new BadMethodCallException(&amp;quot;Argument &#039;myProperty&#039; is required for event $name&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		parent::__construct($name, $arguments);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setter for the myProperty argument&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   mixed  $value  The value to set&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  mixed&lt;br /&gt;
	 *&lt;br /&gt;
	 * @throws  BadMethodCallException  if the argument is not of the expected type&lt;br /&gt;
	 */&lt;br /&gt;
	protected function setMyProperty($value)&lt;br /&gt;
	{&lt;br /&gt;
		if (!empty($value) &amp;amp;&amp;amp; !is_object($value) &amp;amp;&amp;amp; !is_array($value))&lt;br /&gt;
		{&lt;br /&gt;
			throw new BadMethodCallException(&amp;quot;Argument &#039;src&#039; of event {$this-&amp;gt;name} must be empty, object or array&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return $value;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why have we introduced this name class over parameters? Well it makes it easier to introduce custom setters and getters for properties - currently a plugin can either completely change a property as it wants - for a components there&#039;s no way of imposing any limitations. Additionally it makes it much easier for developers to add and remove parameters in an event without having major b/c issues (as you are now calling defined methods and are not subject to a property being the 2nd argument of your function).&lt;br /&gt;
&lt;br /&gt;
==== How to achieve maximum compatibility with Joomla 3 ====&lt;br /&gt;
If you want to trigger an event in a similar way to the removed J3.x JEventDispatcher then you use code like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$results = \Joomla\CMS\Factory::getApplication()-&amp;gt;triggerEvent( &#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;
It is important to note that the parameters have to be in an array. The plugin function itself will get the parameters as an Event object if it implements the SubscriberInterface and as individual values if it does not, but this method will always return an array that the plugin returns.&lt;br /&gt;
&lt;br /&gt;
Note that if ANY plugin in a group doesn&#039;t implement the SubscriberInterface then the result property (as both a named parameter and result from a plugin) is used as a special property and cannot be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Plugin Development{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Creating_a_Plugin_for_Joomla/2/fa&amp;diff=597514</id>
		<title>Translations:J4.x:Creating a Plugin for Joomla/2/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Creating_a_Plugin_for_Joomla/2/fa&amp;diff=597514"/>
		<updated>2019-03-22T19:29:23Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;ساختار پلاگین در جوملا 1.5 و 2.5 و 3 بسیار منعطف و قدرتمند بود. بطوریکه نه تنها می توان پلاگین ها را ب...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ساختار پلاگین در جوملا 1.5 و 2.5 و 3 بسیار منعطف و قدرتمند بود. بطوریکه نه تنها می توان پلاگین ها را برای راه اندازی رخداد های انجام شده در هسته اپلیکیشن و افزونه ها استفاده کرد، بلکه می توانند برای توسعه و قدرتمند کردن افزونه های دیگران نیز  مورد استفاده قرار بگیرند. در جوملا 4 ما مقدار زیادی از سیستم dispatcher پشت سر آن را بازنویسی کرده ایم تا انعطاف پذیری را بیشتر افزایش دهیم هنگامی که شما پارامترهایی را که به عنوان رویدادها اصلاح می کنید و در عین حال کارایی پلاگین ها را افزایش دهید.&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Creating_a_Plugin_for_Joomla/fa&amp;diff=597513</id>
		<title>J4.x:Creating a Plugin for Joomla/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Creating_a_Plugin_for_Joomla/fa&amp;diff=597513"/>
		<updated>2019-03-22T19:18:08Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;خودآموز&amp;lt;br /&amp;gt; چگونه یک پلاگین برای جوملا 4 درست کنیم&amp;quot;&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;
{{Top portal heading|color=white-bkgd|icon=magic|icon-color=#5091cd|size=3x|text-color=#333|title=خودآموز&amp;lt;br /&amp;gt;&lt;br /&gt;
چگونه یک پلاگین برای جوملا 4 درست کنیم}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x|comment=series}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
The plugin structure for Joomla! 1.5, 2.5 and 3.x 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. In Joomla 4.x we have rewritten a lot of the dispatcher system behind this to increase the flexibility further when you modify the parameters passed as events whilst simultaneously increasing the performance of plugins.&lt;br /&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;
&lt;br /&gt;
=== Creating the Installation File ===&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. &amp;lt;br /&amp;gt;&lt;br /&gt;
As an example, here is the XML installation file for the categories search plugin:&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; method=&amp;quot;upgrade&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 - 2018 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.0.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;/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&lt;br /&gt;
					name=&amp;quot;search_limit&amp;quot;&lt;br /&gt;
					type=&amp;quot;number&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field&lt;br /&gt;
					name=&amp;quot;search_content&amp;quot;&lt;br /&gt;
					type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					class=&amp;quot;switcher&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&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;
&lt;br /&gt;
				&amp;lt;field&lt;br /&gt;
					name=&amp;quot;search_archived&amp;quot;&lt;br /&gt;
					type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					class=&amp;quot;switcher&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&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;/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;
As you can see, the system is similar to other Joomla XML installation files. You only have to look out for the &amp;lt;tt&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/tt&amp;gt; entry in the &amp;lt;tt&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/tt&amp;gt; tag and the extended information in the &amp;lt;tt&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/tt&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;
&lt;br /&gt;
If you are creating a plugin that responds to existing core events, the &amp;lt;tt&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/tt&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;tt&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/tt&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;
&lt;br /&gt;
If you are creating a plugin to respond to non-core system events your choice for the &amp;lt;tt&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/tt&amp;gt; tag should be different than any of the existing core categories.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TIP:&#039;&#039;&#039; &#039;&#039;If you add the attribute &amp;lt;tt&amp;gt;method=&amp;quot;upgrade&amp;quot;&amp;lt;/tt&amp;gt; to the tag &amp;lt;tt&amp;gt;extension&amp;lt;/tt&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.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Creating the Plugin ===&lt;br /&gt;
The object-oriented way of writing plugins involves writing a subclass of [https://api.joomla.org/cms-4/classes/Joomla.CMS.Plugin.CMSPlugin.html CMSPlugin], a base class that implements the basic properties of plugins. In your methods, the following properties are available:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;params&amp;lt;/tt&amp;gt;: the [[S:MyLanguage/Parameter|parameters]] set for this plugin by the administrator&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;_name&amp;lt;/tt&amp;gt;: the name of the plugin&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;_type&amp;lt;/tt&amp;gt;: the group (type) of the plugin&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;db&amp;lt;/tt&amp;gt;: the db object&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;app&amp;lt;/tt&amp;gt;: the application object&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TIP:&#039;&#039;&#039; &#039;&#039;To use &amp;lt;tt&amp;gt;$this-&amp;gt;db&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$this-&amp;gt;app&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;CMSPlugin&amp;lt;/tt&amp;gt; tests if the property exists and is not private. If it is desired for the default objects to be used, create un-instantiated properties in the plugin class (i.e. &amp;lt;tt&amp;gt;protected $db; protected $app;&amp;lt;/tt&amp;gt; in the same area as &amp;lt;tt&amp;gt;protected $autoloadLanguage = true;&amp;lt;/tt&amp;gt;). The properties will not exist unless explicitly created.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the following code example, &amp;lt;tt&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/tt&amp;gt; represents the group (type) of the plugin, and &amp;lt;tt&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/tt&amp;gt; represents its name. Note that class and function names in PHP are case-insensitive.&lt;br /&gt;
&lt;br /&gt;
We also implement the [https://api.joomla.org/framework-2/classes/Joomla.Event.SubscriberInterface.html SubscriberInterface] here which is the major change from Joomla 1.5-3.x. Instead of the function name automatically being detected and being the same as the event name this allows you to have custom function names. This allows us to tell what plugins are implementing what functions and as parsing public methods in PHP code is slow gives a significant performance boost.&lt;br /&gt;
&lt;br /&gt;
Note throughout the Joomla 4 series there is a deprecated layer that will cover plugins using the old naming strategy of plugin names being the same as the event name when SubscriberInterface is not implemented.&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;
use Joomla\CMS\Plugin\CMSPlugin;&lt;br /&gt;
use Joomla\CMS\Event\Event;&lt;br /&gt;
use Joomla\Event\SubscriberInterface;&lt;br /&gt;
&lt;br /&gt;
class Plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends CMSPlugin implements SubscriberInterface&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation&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;
	 * Returns an array of events this subscriber will listen to.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  array&lt;br /&gt;
	 */&lt;br /&gt;
	public static function getSubscribedEvents(): array&lt;br /&gt;
	{&lt;br /&gt;
		return [&lt;br /&gt;
			&#039;&amp;lt;EventName&amp;gt;&#039; =&amp;gt; &#039;myFunctionName&#039;,&lt;br /&gt;
		];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method is the array value in the getSubscribedEvents method&lt;br /&gt;
	 * The plugin then modifies the Event object (if it&#039;s not immutable)&lt;br /&gt;
	 */&lt;br /&gt;
	 public function myFunctionName(Event $event)&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access parameters via $this-&amp;gt;params&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;
استفاده از پلاگین ها در کد های شما&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;tt&amp;gt;JPluginHelper::importPlugin()&amp;lt;/tt&amp;gt; command.&lt;br /&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 (and in that case you can ignore this section).&lt;br /&gt;
&lt;br /&gt;
==== New Joomla 4 Way ====&lt;br /&gt;
The new way of doing this in Joomla 4 is to get the dispatcher and dispatch a named event.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Event\AbstractEvent;&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
&lt;br /&gt;
$dispatcher = Factory::getApplication()-&amp;gt;getDispatcher();&lt;br /&gt;
&lt;br /&gt;
// Here we create an event however as long as you implement EventInterface you can create your own &lt;br /&gt;
// custom classes&lt;br /&gt;
$event = AbstractEvent::create(&lt;br /&gt;
	&#039;&amp;lt;EventName&amp;gt;&#039;,&lt;br /&gt;
	[&lt;br /&gt;
		&#039;name&#039; =&amp;gt; $value,&lt;br /&gt;
	]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
$eventResult = $dispatcher-&amp;gt;dispatch(&#039;&amp;lt;EventName&amp;gt;&#039;, $event);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to allow the user to modify values you can then use the event result and getResults back out of it. You can look at &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use BadMethodCallException;&lt;br /&gt;
use Joomla\CMS\Event\AbstractImmutableEvent;&lt;br /&gt;
use Joomla\CMS\Table\TableInterface;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Event class for an event&lt;br /&gt;
 */&lt;br /&gt;
class MyCustomEvent extends AbstractImmutableEvent&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Constructor.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $name       The event name.&lt;br /&gt;
	 * @param   array   $arguments  The event arguments.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @throws  BadMethodCallException&lt;br /&gt;
	 */&lt;br /&gt;
	public function __construct($name, array $arguments = array())&lt;br /&gt;
	{&lt;br /&gt;
		if (!array_key_exists(&#039;myProperty&#039;, $arguments))&lt;br /&gt;
		{&lt;br /&gt;
			throw new BadMethodCallException(&amp;quot;Argument &#039;myProperty&#039; is required for event $name&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		parent::__construct($name, $arguments);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setter for the myProperty argument&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   mixed  $value  The value to set&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  mixed&lt;br /&gt;
	 *&lt;br /&gt;
	 * @throws  BadMethodCallException  if the argument is not of the expected type&lt;br /&gt;
	 */&lt;br /&gt;
	protected function setMyProperty($value)&lt;br /&gt;
	{&lt;br /&gt;
		if (!empty($value) &amp;amp;&amp;amp; !is_object($value) &amp;amp;&amp;amp; !is_array($value))&lt;br /&gt;
		{&lt;br /&gt;
			throw new BadMethodCallException(&amp;quot;Argument &#039;src&#039; of event {$this-&amp;gt;name} must be empty, object or array&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return $value;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why have we introduced this name class over parameters? Well it makes it easier to introduce custom setters and getters for properties - currently a plugin can either completely change a property as it wants - for a components there&#039;s no way of imposing any limitations. Additionally it makes it much easier for developers to add and remove parameters in an event without having major b/c issues (as you are now calling defined methods and are not subject to a property being the 2nd argument of your function).&lt;br /&gt;
&lt;br /&gt;
==== How to achieve maximum compatibility with Joomla 3 ====&lt;br /&gt;
If you want to trigger an event in a similar way to the removed J3.x JEventDispatcher then you use code like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$results = \Joomla\CMS\Factory::getApplication()-&amp;gt;triggerEvent( &#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;
It is important to note that the parameters have to be in an array. The plugin function itself will get the parameters as an Event object if it implements the SubscriberInterface and as individual values if it does not, but this method will always return an array that the plugin returns.&lt;br /&gt;
&lt;br /&gt;
Note that if ANY plugin in a group doesn&#039;t implement the SubscriberInterface then the result property (as both a named parameter and result from a plugin) is used as a special property and cannot be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Plugin Development{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Creating_a_Plugin_for_Joomla/1/fa&amp;diff=597512</id>
		<title>Translations:J4.x:Creating a Plugin for Joomla/1/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Creating_a_Plugin_for_Joomla/1/fa&amp;diff=597512"/>
		<updated>2019-03-22T19:18:07Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;خودآموز&amp;lt;br /&amp;gt; چگونه یک پلاگین برای جوملا 4 درست کنیم&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;خودآموز&amp;lt;br /&amp;gt;&lt;br /&gt;
چگونه یک پلاگین برای جوملا 4 درست کنیم&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Creating_a_Plugin_for_Joomla/Page_display_title/fa&amp;diff=597511</id>
		<title>Translations:J4.x:Creating a Plugin for Joomla/Page display title/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Creating_a_Plugin_for_Joomla/Page_display_title/fa&amp;diff=597511"/>
		<updated>2019-03-22T19:17:09Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;جوملا 4.x: ساخت یک پلاگین برای جوملا&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;جوملا 4.x: ساخت یک پلاگین برای جوملا&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Creating_a_Plugin_for_Joomla/fa&amp;diff=502164</id>
		<title>J4.x:Creating a Plugin for Joomla/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Creating_a_Plugin_for_Joomla/fa&amp;diff=502164"/>
		<updated>2018-08-10T04:43:14Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;استفاده از پلاگین ها در کد های شما&amp;quot;&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;
{{Top portal heading|color=white-bkgd|icon=magic|icon-color=#5091cd|size=3x|text-color=#333|title=Tutorial&amp;lt;br /&amp;gt;&lt;br /&gt;
How to create a Plugin for Joomla 4}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x|comment=series}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
The plugin structure for Joomla! 1.5, 2.5 and 3.x 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. In Joomla 4.x we have rewritten a lot of the dispatcher system behind this to increase the flexibility further when you modify the parameters passed as events whilst simultaneously increasing the performance of plugins.&lt;br /&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;
&lt;br /&gt;
=== Creating the Installation File ===&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. &amp;lt;br /&amp;gt;&lt;br /&gt;
As an example, here is the XML installation file for the categories search plugin:&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; method=&amp;quot;upgrade&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 - 2018 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.0.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;/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&lt;br /&gt;
					name=&amp;quot;search_limit&amp;quot;&lt;br /&gt;
					type=&amp;quot;number&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field&lt;br /&gt;
					name=&amp;quot;search_content&amp;quot;&lt;br /&gt;
					type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					class=&amp;quot;switcher&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&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;
&lt;br /&gt;
				&amp;lt;field&lt;br /&gt;
					name=&amp;quot;search_archived&amp;quot;&lt;br /&gt;
					type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					class=&amp;quot;switcher&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&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;/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;
As you can see, the system is similar to other Joomla XML installation files. You only have to look out for the &amp;lt;tt&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/tt&amp;gt; entry in the &amp;lt;tt&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/tt&amp;gt; tag and the extended information in the &amp;lt;tt&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/tt&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;
&lt;br /&gt;
If you are creating a plugin that responds to existing core events, the &amp;lt;tt&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/tt&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;tt&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/tt&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;
&lt;br /&gt;
If you are creating a plugin to respond to non-core system events your choice for the &amp;lt;tt&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/tt&amp;gt; tag should be different than any of the existing core categories.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TIP:&#039;&#039;&#039; &#039;&#039;If you add the attribute &amp;lt;tt&amp;gt;method=&amp;quot;upgrade&amp;quot;&amp;lt;/tt&amp;gt; to the tag &amp;lt;tt&amp;gt;extension&amp;lt;/tt&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.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Creating the Plugin ===&lt;br /&gt;
The object-oriented way of writing plugins involves writing a subclass of [https://api.joomla.org/cms-4/classes/Joomla.CMS.Plugin.CMSPlugin.html CMSPlugin], a base class that implements the basic properties of plugins. In your methods, the following properties are available:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;params&amp;lt;/tt&amp;gt;: the [[S:MyLanguage/Parameter|parameters]] set for this plugin by the administrator&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;_name&amp;lt;/tt&amp;gt;: the name of the plugin&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;_type&amp;lt;/tt&amp;gt;: the group (type) of the plugin&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;db&amp;lt;/tt&amp;gt;: the db object&lt;br /&gt;
* &amp;lt;tt&amp;gt;$this-&amp;gt;app&amp;lt;/tt&amp;gt;: the application object&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TIP:&#039;&#039;&#039; &#039;&#039;To use &amp;lt;tt&amp;gt;$this-&amp;gt;db&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$this-&amp;gt;app&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;CMSPlugin&amp;lt;/tt&amp;gt; tests if the property exists and is not private. If it is desired for the default objects to be used, create un-instantiated properties in the plugin class (i.e. &amp;lt;tt&amp;gt;protected $db; protected $app;&amp;lt;/tt&amp;gt; in the same area as &amp;lt;tt&amp;gt;protected $autoloadLanguage = true;&amp;lt;/tt&amp;gt;). The properties will not exist unless explicitly created.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the following code example, &amp;lt;tt&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/tt&amp;gt; represents the group (type) of the plugin, and &amp;lt;tt&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/tt&amp;gt; represents its name. Note that class and function names in PHP are case-insensitive.&lt;br /&gt;
&lt;br /&gt;
We also implement the [https://api.joomla.org/framework-2/classes/Joomla.Event.SubscriberInterface.html SubscriberInterface] here which is the major change from Joomla 1.5-3.x. Instead of the function name automatically being detected and being the same as the event name this allows you to have custom function names. This allows us to tell what plugins are implementing what functions and as parsing public methods in PHP code is slow gives a significant performance boost.&lt;br /&gt;
&lt;br /&gt;
Note throughout the Joomla 4 series there is a deprecated layer that will cover plugins using the old naming strategy of plugin names being the same as the event name when SubscriberInterface is not implemented.&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;
use Joomla\CMS\Plugin\CMSPlugin;&lt;br /&gt;
use Joomla\CMS\Event\Event;&lt;br /&gt;
use Joomla\Event\SubscriberInterface;&lt;br /&gt;
&lt;br /&gt;
class Plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends CMSPlugin implements SubscriberInterface&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation&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;
	 * Returns an array of events this subscriber will listen to.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  array&lt;br /&gt;
	 */&lt;br /&gt;
	public static function getSubscribedEvents(): array&lt;br /&gt;
	{&lt;br /&gt;
		return [&lt;br /&gt;
			&#039;&amp;lt;EventName&amp;gt;&#039; =&amp;gt; &#039;myFunctionName&#039;,&lt;br /&gt;
		];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method is the array value in the getSubscribedEvents method&lt;br /&gt;
	 * The plugin then modifies the Event object (if it&#039;s not immutable)&lt;br /&gt;
	 */&lt;br /&gt;
	 public function myFunctionName(Event $event)&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access parameters via $this-&amp;gt;params&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;
استفاده از پلاگین ها در کد های شما&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;tt&amp;gt;JPluginHelper::importPlugin()&amp;lt;/tt&amp;gt; command.&lt;br /&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 (and in that case you can ignore this section).&lt;br /&gt;
&lt;br /&gt;
==== New Joomla 4 Way ====&lt;br /&gt;
The new way of doing this in Joomla 4 is to get the dispatcher and dispatch a named event.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
use Joomla\CMS\Event\AbstractEvent;&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
&lt;br /&gt;
$dispatcher = Factory::getApplication()-&amp;gt;getDispatcher();&lt;br /&gt;
&lt;br /&gt;
// Here we create an event however as long as you implement EventInterface you can create your own &lt;br /&gt;
// custom classes&lt;br /&gt;
$event = AbstractEvent::create(&lt;br /&gt;
	&#039;&amp;lt;EventName&amp;gt;&#039;,&lt;br /&gt;
	[&lt;br /&gt;
		&#039;name&#039; =&amp;gt; $value,&lt;br /&gt;
	]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
$eventResult = $dispatcher-&amp;gt;dispatch(&#039;&amp;lt;EventName&amp;gt;&#039;, $event);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to allow the user to modify values you can then use the event result and getResults back out of it. You can look at &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use BadMethodCallException;&lt;br /&gt;
use Joomla\CMS\Event\AbstractImmutableEvent;&lt;br /&gt;
use Joomla\CMS\Table\TableInterface;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Event class for an event&lt;br /&gt;
 */&lt;br /&gt;
class MyCustomEvent extends AbstractImmutableEvent&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Constructor.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $name       The event name.&lt;br /&gt;
	 * @param   array   $arguments  The event arguments.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @throws  BadMethodCallException&lt;br /&gt;
	 */&lt;br /&gt;
	public function __construct($name, array $arguments = array())&lt;br /&gt;
	{&lt;br /&gt;
		if (!array_key_exists(&#039;myProperty&#039;, $arguments))&lt;br /&gt;
		{&lt;br /&gt;
			throw new BadMethodCallException(&amp;quot;Argument &#039;myProperty&#039; is required for event $name&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		parent::__construct($name, $arguments);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setter for the myProperty argument&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   mixed  $value  The value to set&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  mixed&lt;br /&gt;
	 *&lt;br /&gt;
	 * @throws  BadMethodCallException  if the argument is not of the expected type&lt;br /&gt;
	 */&lt;br /&gt;
	protected function setMyProperty($value)&lt;br /&gt;
	{&lt;br /&gt;
		if (!empty($value) &amp;amp;&amp;amp; !is_object($value) &amp;amp;&amp;amp; !is_array($value))&lt;br /&gt;
		{&lt;br /&gt;
			throw new BadMethodCallException(&amp;quot;Argument &#039;src&#039; of event {$this-&amp;gt;name} must be empty, object or array&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return $value;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why have we introduced this name class over parameters? Well it makes it easier to introduce custom setters and getters for properties - currently a plugin can either completely change a property as it wants - for a components there&#039;s no way of imposing any limitations. Additionally it makes it much easier for developers to add and remove parameters in an event without having major b/c issues (as you are now calling defined methods and are not subject to a property being the 2nd argument of your function).&lt;br /&gt;
&lt;br /&gt;
==== How to achieve maximum compatibility with Joomla 3 ====&lt;br /&gt;
If you want to trigger an event in a similar way to the removed J3.x JEventDispatcher then you use code like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$results = JFactory::getApplication-&amp;gt;triggerEvent( &#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;
It is important to note that the parameters have to be in an array. The plugin function itself will get the parameters as an Event object if it implements the SubscriberInterface and as individual values if it does not, but this method will always return an array that the plugin returns.&lt;br /&gt;
&lt;br /&gt;
Note that if ANY plugin in a group doesn&#039;t implement the SubscriberInterface then the result property (as both a named parameter and result from a plugin) is used as a special property and cannot be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Plugin Development{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.x{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Creating_a_Plugin_for_Joomla/22/fa&amp;diff=502163</id>
		<title>Translations:J4.x:Creating a Plugin for Joomla/22/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Creating_a_Plugin_for_Joomla/22/fa&amp;diff=502163"/>
		<updated>2018-08-10T04:43:13Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;استفاده از پلاگین ها در کد های شما&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;استفاده از پلاگین ها در کد های شما&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:CLI_Update/fa&amp;diff=498347</id>
		<title>J4.x:CLI Update/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:CLI_Update/fa&amp;diff=498347"/>
		<updated>2018-08-04T14:38:09Z</updated>

		<summary type="html">&lt;p&gt;Levelup: &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;
{{Top portal heading|color=white-bkgd|text-color=#333|title=&lt;br /&gt;
GSoC 2018 &amp;lt;br /&amp;gt;&lt;br /&gt;
بروز رسانی CLI &amp;lt;br/&amp;gt; مستندات}}&lt;br /&gt;
[[Image:Gsoc2016.png|75px|center|link=GSOC 2018]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Performing some minor task on the Joomla! administrator dashboard might seem cumbersome and slow. The CLI Update is introducing a faster way to perform some of these operations through the command line. It brings forward a way to integrate things faster in the Joomla! app. With it, small tests can be done faster without having to go through the process of the web dashboard. It a CLI Application to the Joomla! CMS that enables user to perform updates in the CMS.&lt;br /&gt;
&lt;br /&gt;
This documentation shows how the CLI Update can be used and how you can extend its functionality as a developer.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
As it goes for all CLI (Command Line Interface) Apps, access to a to your Joomla! installation via the command line is very important to  use the tools provided by the CLI Update.&lt;br /&gt;
You might want to consider having an SSH access for your live server.&lt;br /&gt;
&lt;br /&gt;
===Terms and definitions===&lt;br /&gt;
*CLI - Command Line Interface&lt;br /&gt;
*SSH - Secure SHell&lt;br /&gt;
&lt;br /&gt;
==Using the CLI Update==&lt;br /&gt;
In other for you to use the tools provided by CLI Update, as said in former section, you need access to a CLI into the root of the Joomla Installation. In other words you have to be in the root folder of your Joomla CMS as all commands will run from the root folder.&lt;br /&gt;
[[File:All commands.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
==General Command Usage==&lt;br /&gt;
In this section we will talk about the usage of commands, we will talk about different commands, what they are and how you can use them. We will go by checking out available commands in the CLI Update.&lt;br /&gt;
&lt;br /&gt;
===Available commands===&lt;br /&gt;
There are quite a number of commands available in the CLI Update that ready for use, these commands are grouped based on the area of the Joomla! CMS that they are touching.&lt;br /&gt;
&lt;br /&gt;
====Checking for Updates Updates====&lt;br /&gt;
The CLI Update provides a command to check for Joomla! updates, it works just like the web version of &amp;lt;tt&amp;gt;com_joomlaupdate&amp;lt;/tt&amp;gt;, it retrieves update and tells if update is available or not. To run the update check, we will just issue the command like this from the root directory:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php check-updates&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The command runs and the output displays an available update version, if available, or tell otherwise that the current installation is up to date.&lt;br /&gt;
[[File:CheckCheck.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
====Extension commands==== &lt;br /&gt;
The next group of commands are the extension based commands, simply put, the commands allows us to manage extensions within the Jommla! core, the CLI Update ships with commands to install, list and remove extensions.&lt;br /&gt;
&lt;br /&gt;
======Listing installed extensions======&lt;br /&gt;
This command allows us to list all installed extensions. This command can run in two different ways which are:&lt;br /&gt;
*&#039;&#039;General Listing&#039;&#039;: Lists all the extensions installed, by extensions it means components, languages, plugins, modules will be listed together when you run this command. This is how you call the command:{{-}}&amp;lt;tt&amp;gt;php cli/joomla.php extension:list&amp;lt;/tt/&amp;gt; {{-}}[[File:Extension list.png|center|800px]]&lt;br /&gt;
*&#039;&#039;Listing By types&#039;&#039;: General listing of extension can be tedious if you&#039;re looking for a particular extension out of the big list, however, you can beat down the numbers specifying the type of extensions you can the command to display by adding a type option to the command. Here is how that is done: {{-}}&amp;lt;tt&amp;gt;php cli/joomla.php extension:list --type=language&amp;lt;/tt&amp;gt;{{-}}[[File:Extension list type.png|center|800px]]&lt;br /&gt;
This will list out only language based extensions, you can specify type as module, plugin and component as well.&lt;br /&gt;
&lt;br /&gt;
======Installing an Extension======&lt;br /&gt;
Joomla provides installing an extension through an URL to the zip file or a path to the file, the CLI Update provides both as well and how you can use them is described below.&lt;br /&gt;
*&#039;&#039;Installing from URL&#039;&#039;: To install an extension from URL we will run the command like this and provide an argument and option for the &amp;lt;tt&amp;gt;extension:install&amp;lt;/tt&amp;gt; command.{{-}}&amp;lt;tt&amp;gt;php cli/joomla.php extension:install url --url=https://github.com/joomla-extensions/patchtester/releases/download/3.0.0-beta3/com_patchtester.zip&amp;lt;/tt&amp;gt;{{-}}This will download the &amp;lt;tt&amp;gt;com_patchtester&amp;lt;/tt&amp;gt; extension.&lt;br /&gt;
{{-}}[[File:Extension install url.png|center|800px]]&lt;br /&gt;
*&#039;&#039;Installing from a PATH&#039;&#039;:To install an extension from a PATH we will run the same &amp;lt;tt&amp;gt;extension:install&amp;lt;/tt&amp;gt; command and specify arguments for paths like this:{{-}}&amp;lt;tt&amp;gt;php cli/joomla.php extension:install path --path=/Users/bosunski/docs/com_pathtester.zip&amp;lt;/tt&amp;gt; {{-}}[[File:Extension install path.png|center|800px]]&lt;br /&gt;
This loads the extension and performs the installation as expected.&lt;br /&gt;
&lt;br /&gt;
======Removing an extension======&lt;br /&gt;
The last command under this category is the &amp;lt;tt&amp;gt;extension:remove&amp;lt;/tt&amp;gt; command that is used to remove extensions from the Joomla CMS. This command takes in the &amp;lt;tt&amp;gt;extension_id&amp;lt;/tt&amp;gt; as an argument, you can always use the &amp;lt;tt&amp;gt;extension:list&amp;lt;/tt&amp;gt; to display extension id. This is how we remove an extension of id &amp;lt;tt&amp;gt;803&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php extension:remove 803&amp;lt;/tt&amp;gt;&lt;br /&gt;
[[File:Extension Remove.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
====Updating the Joomla Core====&lt;br /&gt;
As much as the CLI Update provides a command to check update, it also provides a command to perform the update if an update is available. To perform update we will just run this:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php core:update&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
This command updates the Joomla core updating it to the latest version available.&lt;br /&gt;
&lt;br /&gt;
====Installing Joomla! via the CLI====&lt;br /&gt;
The next command here is the &amp;lt;tt&amp;gt;core:intall&amp;lt;/tt&amp;gt; command that lets installation of Joomla CMS to be done via the CLI. This command can  work in 2 modes: The Interactive mode and the Non-interactive mode.&lt;br /&gt;
&lt;br /&gt;
=====Interactive installation=====&lt;br /&gt;
To have a fresh installation of Joomla using the interactive mode we will just run the &amp;lt;tt&amp;gt;extension:install&amp;lt;/tt&amp;gt; command like so:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php extension:install&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default installation mode will run and will ask you to input the settings as it&#039;s required, once all options have been provided and validated, the installations will run and Joomla will be installed.&lt;br /&gt;
&lt;br /&gt;
[[File:Core install interactive.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
=====Non-interactive Installation=====&lt;br /&gt;
The next type of installation is the Non-interactive mode. In this mode you will not be asked to input the options but rather all options will be specified within a file and the command will take in an option that specifies the path to the file you want to load the options from, it&#039;s done like this:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php core:install --file=/path/to/config.json&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Core install file.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
An example of the contents of &amp;lt;tt&amp;gt;config.json&amp;lt;/tt&amp;gt; can be:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;language&amp;quot;:&amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;site_name&amp;quot;:&amp;quot;Joomla&amp;quot;,&lt;br /&gt;
  &amp;quot;admin_email&amp;quot;:&amp;quot;email@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;admin_user&amp;quot;:&amp;quot;user&amp;quot;,&lt;br /&gt;
  &amp;quot;admin_password&amp;quot;:&amp;quot;password&amp;quot;,&lt;br /&gt;
  &amp;quot;db_type&amp;quot;:&amp;quot;mysql&amp;quot;,&lt;br /&gt;
  &amp;quot;db_host&amp;quot;:&amp;quot;localhost&amp;quot;,&lt;br /&gt;
  &amp;quot;db_user&amp;quot;:&amp;quot;root&amp;quot;,&lt;br /&gt;
  &amp;quot;db_pass&amp;quot;:&amp;quot;xcdxcx&amp;quot;,&lt;br /&gt;
  &amp;quot;db_name&amp;quot;:&amp;quot;jtest&amp;quot;,&lt;br /&gt;
  &amp;quot;db_prefix&amp;quot;:&amp;quot;efs0k_&amp;quot;,&lt;br /&gt;
  &amp;quot;db_old&amp;quot;:&amp;quot;remove&amp;quot;,&lt;br /&gt;
  &amp;quot;helpurl&amp;quot;:&amp;quot;https://joomla.org&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OR as sample &amp;lt;tt&amp;gt;config.ini&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
site_name=&amp;quot;gsoc&amp;quot;&lt;br /&gt;
admin_email=&amp;quot;user@example.com&amp;quot;&lt;br /&gt;
admin_user=&amp;quot;user&amp;quot;&lt;br /&gt;
admin_password=&amp;quot;secret&amp;quot;&lt;br /&gt;
db_type=&amp;quot;mysql&amp;quot;&lt;br /&gt;
db_host=&amp;quot;localhost&amp;quot;&lt;br /&gt;
db_user=&amp;quot;root&amp;quot;&lt;br /&gt;
db_pass=&amp;quot;&amp;quot;&lt;br /&gt;
db_name=&amp;quot;joomla&amp;quot;&lt;br /&gt;
db_prefix=&amp;quot;prefix_&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The options defined are loaded and validated after which the installation will run.&lt;br /&gt;
&lt;br /&gt;
====&lt;br /&gt;
Configuration based commands====&lt;br /&gt;
The next set of commands we will be looking at is for setting and viewing configuration options inside the Joomla installation:&lt;br /&gt;
&lt;br /&gt;
=====Setting configurations=====&lt;br /&gt;
The CLI Update provides a command to change the value of an option existing in the configuration. Using the &amp;lt;tt&amp;gt;config:get&amp;lt;/tt&amp;gt; command you can set any configuration option that exists inside the &amp;lt;tt&amp;gt;configuration.php&amp;lt;/tt&amp;gt;. This is how to use command:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php config:set mailer=mail&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Config set single.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
You can even add multiple option-value pairs like this:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php config:set mailer=mail fromname=Joomla!&amp;lt;/tt&amp;gt;&lt;br /&gt;
This will set multiple options at once.&lt;br /&gt;
&lt;br /&gt;
[[File:Config set multiple.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
=====Getting configurations=====&lt;br /&gt;
The next command in this category is the &amp;lt;tt&amp;gt;config:get&amp;lt;/tt&amp;gt; command, as the name suggests it gets the value of an option that exists inside the &amp;lt;tt&amp;gt;configuration.php&amp;lt;/tt&amp;gt;, when no argument is supplied to the command, it will display all the options available in a tabulated form. Here is the command:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php config:get sitename&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will return the value for the option &amp;lt;tt&amp;gt;sitename&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:011-cli.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php config:get&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will return all the values for the available options.&lt;br /&gt;
&lt;br /&gt;
[[File:Config get all.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
=====Getting grouped configurations=====&lt;br /&gt;
The CLI Update adds an option to &amp;lt;tt&amp;gt;config:get&amp;lt;/tt&amp;gt; command that allows us to get logically grouped options, say for example you want to view all your database related options, or you want to view all email related options. To achieve this the CLI Update provides an option to specify a group of options to display, here is how to do that: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php config:get --group=mail&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Config get group.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
The command takes in the &amp;lt;tt&amp;gt;group&amp;lt;/tt&amp;gt; option and given the value of &amp;lt;tt&amp;gt;mail&amp;lt;/tt&amp;gt;. CLI Update currently supports group values: mail, db and session.&lt;br /&gt;
&lt;br /&gt;
====Site down and Site up commands====&lt;br /&gt;
As their name suggests, these commands allow you to quickly put your Joomla powered website into offline or online mode. Here is how to use the commands:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php site:up&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Site up.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php site:down&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Site down.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
The second command puts the website in offline mode while the first command brings the website to online mode.&lt;br /&gt;
&lt;br /&gt;
==Contributing to CLI Update as a developer==&lt;br /&gt;
&lt;br /&gt;
===Adding more commands===&lt;br /&gt;
The CLI Update ships with some commands which are added based on the need seen as of the time. However, the CLI Update allows other commands to be added easily and this is what this section is for. A video tutorial is included below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;video-container&amp;quot;&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=gcJJtTcPiTg}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Calling other commands within command classes===&lt;br /&gt;
Should in case a command you want to write for the CLI Update is going to be require that you call an existing command internally, this is how that can be achieved from within another command class:&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;
class RunHelloCommand extends AbstractCommand {&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
    public function execute(): int {&lt;br /&gt;
        $command = $this-&amp;gt;getApplication()-&amp;gt;getCommand(&#039;say:hello&#039;);&lt;br /&gt;
        $code = $command-&amp;gt;execute();&lt;br /&gt;
&lt;br /&gt;
        if($code === 0) {&lt;br /&gt;
            // command ran successfully, do something&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, we&#039;re attempting to call the &amp;lt;tt&amp;gt;say:hello&amp;lt;/tt&amp;gt; command created in the Video above.&lt;br /&gt;
&lt;br /&gt;
===Some important things to checkout===&lt;br /&gt;
*Symfony Style Documentation: [https://symfony.com/doc/current/console/style.html How to Style a Console Command]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Google Summer of Code 2018]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Joomla!_4.x]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:CLI_Update/1/fa&amp;diff=498346</id>
		<title>Translations:J4.x:CLI Update/1/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:CLI_Update/1/fa&amp;diff=498346"/>
		<updated>2018-08-04T14:38:08Z</updated>

		<summary type="html">&lt;p&gt;Levelup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;بروز رسانی CLI &amp;lt;br/&amp;gt; مستندات&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:CLI_Update/fa&amp;diff=498341</id>
		<title>J4.x:CLI Update/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:CLI_Update/fa&amp;diff=498341"/>
		<updated>2018-08-04T14:37:36Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;بروز رسانی CLI &amp;lt;br /&amp;gt; مستندات&amp;quot;&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;
{{Top portal heading|color=white-bkgd|text-color=#333|title=&lt;br /&gt;
GSoC 2018 &amp;lt;br /&amp;gt;&lt;br /&gt;
بروز رسانی CLI &amp;lt;br /&amp;gt; مستندات}}&lt;br /&gt;
[[Image:Gsoc2016.png|75px|center|link=GSOC 2018]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Performing some minor task on the Joomla! administrator dashboard might seem cumbersome and slow. The CLI Update is introducing a faster way to perform some of these operations through the command line. It brings forward a way to integrate things faster in the Joomla! app. With it, small tests can be done faster without having to go through the process of the web dashboard. It a CLI Application to the Joomla! CMS that enables user to perform updates in the CMS.&lt;br /&gt;
&lt;br /&gt;
This documentation shows how the CLI Update can be used and how you can extend its functionality as a developer.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
As it goes for all CLI (Command Line Interface) Apps, access to a to your Joomla! installation via the command line is very important to  use the tools provided by the CLI Update.&lt;br /&gt;
You might want to consider having an SSH access for your live server.&lt;br /&gt;
&lt;br /&gt;
===Terms and definitions===&lt;br /&gt;
*CLI - Command Line Interface&lt;br /&gt;
*SSH - Secure SHell&lt;br /&gt;
&lt;br /&gt;
==Using the CLI Update==&lt;br /&gt;
In other for you to use the tools provided by CLI Update, as said in former section, you need access to a CLI into the root of the Joomla Installation. In other words you have to be in the root folder of your Joomla CMS as all commands will run from the root folder.&lt;br /&gt;
[[File:All commands.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
==General Command Usage==&lt;br /&gt;
In this section we will talk about the usage of commands, we will talk about different commands, what they are and how you can use them. We will go by checking out available commands in the CLI Update.&lt;br /&gt;
&lt;br /&gt;
===Available commands===&lt;br /&gt;
There are quite a number of commands available in the CLI Update that ready for use, these commands are grouped based on the area of the Joomla! CMS that they are touching.&lt;br /&gt;
&lt;br /&gt;
====Checking for Updates Updates====&lt;br /&gt;
The CLI Update provides a command to check for Joomla! updates, it works just like the web version of &amp;lt;tt&amp;gt;com_joomlaupdate&amp;lt;/tt&amp;gt;, it retrieves update and tells if update is available or not. To run the update check, we will just issue the command like this from the root directory:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php check-updates&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The command runs and the output displays an available update version, if available, or tell otherwise that the current installation is up to date.&lt;br /&gt;
[[File:CheckCheck.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
====Extension commands==== &lt;br /&gt;
The next group of commands are the extension based commands, simply put, the commands allows us to manage extensions within the Jommla! core, the CLI Update ships with commands to install, list and remove extensions.&lt;br /&gt;
&lt;br /&gt;
======Listing installed extensions======&lt;br /&gt;
This command allows us to list all installed extensions. This command can run in two different ways which are:&lt;br /&gt;
*&#039;&#039;General Listing&#039;&#039;: Lists all the extensions installed, by extensions it means components, languages, plugins, modules will be listed together when you run this command. This is how you call the command:{{-}}&amp;lt;tt&amp;gt;php cli/joomla.php extension:list&amp;lt;/tt/&amp;gt; {{-}}[[File:Extension list.png|center|800px]]&lt;br /&gt;
*&#039;&#039;Listing By types&#039;&#039;: General listing of extension can be tedious if you&#039;re looking for a particular extension out of the big list, however, you can beat down the numbers specifying the type of extensions you can the command to display by adding a type option to the command. Here is how that is done: {{-}}&amp;lt;tt&amp;gt;php cli/joomla.php extension:list --type=language&amp;lt;/tt&amp;gt;{{-}}[[File:Extension list type.png|center|800px]]&lt;br /&gt;
This will list out only language based extensions, you can specify type as module, plugin and component as well.&lt;br /&gt;
&lt;br /&gt;
======Installing an Extension======&lt;br /&gt;
Joomla provides installing an extension through an URL to the zip file or a path to the file, the CLI Update provides both as well and how you can use them is described below.&lt;br /&gt;
*&#039;&#039;Installing from URL&#039;&#039;: To install an extension from URL we will run the command like this and provide an argument and option for the &amp;lt;tt&amp;gt;extension:install&amp;lt;/tt&amp;gt; command.{{-}}&amp;lt;tt&amp;gt;php cli/joomla.php extension:install url --url=https://github.com/joomla-extensions/patchtester/releases/download/3.0.0-beta3/com_patchtester.zip&amp;lt;/tt&amp;gt;{{-}}This will download the &amp;lt;tt&amp;gt;com_patchtester&amp;lt;/tt&amp;gt; extension.&lt;br /&gt;
{{-}}[[File:Extension install url.png|center|800px]]&lt;br /&gt;
*&#039;&#039;Installing from a PATH&#039;&#039;:To install an extension from a PATH we will run the same &amp;lt;tt&amp;gt;extension:install&amp;lt;/tt&amp;gt; command and specify arguments for paths like this:{{-}}&amp;lt;tt&amp;gt;php cli/joomla.php extension:install path --path=/Users/bosunski/docs/com_pathtester.zip&amp;lt;/tt&amp;gt; {{-}}[[File:Extension install path.png|center|800px]]&lt;br /&gt;
This loads the extension and performs the installation as expected.&lt;br /&gt;
&lt;br /&gt;
======Removing an extension======&lt;br /&gt;
The last command under this category is the &amp;lt;tt&amp;gt;extension:remove&amp;lt;/tt&amp;gt; command that is used to remove extensions from the Joomla CMS. This command takes in the &amp;lt;tt&amp;gt;extension_id&amp;lt;/tt&amp;gt; as an argument, you can always use the &amp;lt;tt&amp;gt;extension:list&amp;lt;/tt&amp;gt; to display extension id. This is how we remove an extension of id &amp;lt;tt&amp;gt;803&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php extension:remove 803&amp;lt;/tt&amp;gt;&lt;br /&gt;
[[File:Extension Remove.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
====Updating the Joomla Core====&lt;br /&gt;
As much as the CLI Update provides a command to check update, it also provides a command to perform the update if an update is available. To perform update we will just run this:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php core:update&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
This command updates the Joomla core updating it to the latest version available.&lt;br /&gt;
&lt;br /&gt;
====Installing Joomla! via the CLI====&lt;br /&gt;
The next command here is the &amp;lt;tt&amp;gt;core:intall&amp;lt;/tt&amp;gt; command that lets installation of Joomla CMS to be done via the CLI. This command can  work in 2 modes: The Interactive mode and the Non-interactive mode.&lt;br /&gt;
&lt;br /&gt;
=====Interactive installation=====&lt;br /&gt;
To have a fresh installation of Joomla using the interactive mode we will just run the &amp;lt;tt&amp;gt;extension:install&amp;lt;/tt&amp;gt; command like so:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php extension:install&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default installation mode will run and will ask you to input the settings as it&#039;s required, once all options have been provided and validated, the installations will run and Joomla will be installed.&lt;br /&gt;
&lt;br /&gt;
[[File:Core install interactive.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
=====Non-interactive Installation=====&lt;br /&gt;
The next type of installation is the Non-interactive mode. In this mode you will not be asked to input the options but rather all options will be specified within a file and the command will take in an option that specifies the path to the file you want to load the options from, it&#039;s done like this:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php core:install --file=/path/to/config.json&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Core install file.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
An example of the contents of &amp;lt;tt&amp;gt;config.json&amp;lt;/tt&amp;gt; can be:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;language&amp;quot;:&amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;site_name&amp;quot;:&amp;quot;Joomla&amp;quot;,&lt;br /&gt;
  &amp;quot;admin_email&amp;quot;:&amp;quot;email@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;admin_user&amp;quot;:&amp;quot;user&amp;quot;,&lt;br /&gt;
  &amp;quot;admin_password&amp;quot;:&amp;quot;password&amp;quot;,&lt;br /&gt;
  &amp;quot;db_type&amp;quot;:&amp;quot;mysql&amp;quot;,&lt;br /&gt;
  &amp;quot;db_host&amp;quot;:&amp;quot;localhost&amp;quot;,&lt;br /&gt;
  &amp;quot;db_user&amp;quot;:&amp;quot;root&amp;quot;,&lt;br /&gt;
  &amp;quot;db_pass&amp;quot;:&amp;quot;xcdxcx&amp;quot;,&lt;br /&gt;
  &amp;quot;db_name&amp;quot;:&amp;quot;jtest&amp;quot;,&lt;br /&gt;
  &amp;quot;db_prefix&amp;quot;:&amp;quot;efs0k_&amp;quot;,&lt;br /&gt;
  &amp;quot;db_old&amp;quot;:&amp;quot;remove&amp;quot;,&lt;br /&gt;
  &amp;quot;helpurl&amp;quot;:&amp;quot;https://joomla.org&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OR as sample &amp;lt;tt&amp;gt;config.ini&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
site_name=&amp;quot;gsoc&amp;quot;&lt;br /&gt;
admin_email=&amp;quot;user@example.com&amp;quot;&lt;br /&gt;
admin_user=&amp;quot;user&amp;quot;&lt;br /&gt;
admin_password=&amp;quot;secret&amp;quot;&lt;br /&gt;
db_type=&amp;quot;mysql&amp;quot;&lt;br /&gt;
db_host=&amp;quot;localhost&amp;quot;&lt;br /&gt;
db_user=&amp;quot;root&amp;quot;&lt;br /&gt;
db_pass=&amp;quot;&amp;quot;&lt;br /&gt;
db_name=&amp;quot;joomla&amp;quot;&lt;br /&gt;
db_prefix=&amp;quot;prefix_&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The options defined are loaded and validated after which the installation will run.&lt;br /&gt;
&lt;br /&gt;
====&lt;br /&gt;
Configuration based commands====&lt;br /&gt;
The next set of commands we will be looking at is for setting and viewing configuration options inside the Joomla installation:&lt;br /&gt;
&lt;br /&gt;
=====Setting configurations=====&lt;br /&gt;
The CLI Update provides a command to change the value of an option existing in the configuration. Using the &amp;lt;tt&amp;gt;config:get&amp;lt;/tt&amp;gt; command you can set any configuration option that exists inside the &amp;lt;tt&amp;gt;configuration.php&amp;lt;/tt&amp;gt;. This is how to use command:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php config:set mailer=mail&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Config set single.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
You can even add multiple option-value pairs like this:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php config:set mailer=mail fromname=Joomla!&amp;lt;/tt&amp;gt;&lt;br /&gt;
This will set multiple options at once.&lt;br /&gt;
&lt;br /&gt;
[[File:Config set multiple.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
=====Getting configurations=====&lt;br /&gt;
The next command in this category is the &amp;lt;tt&amp;gt;config:get&amp;lt;/tt&amp;gt; command, as the name suggests it gets the value of an option that exists inside the &amp;lt;tt&amp;gt;configuration.php&amp;lt;/tt&amp;gt;, when no argument is supplied to the command, it will display all the options available in a tabulated form. Here is the command:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php config:get sitename&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will return the value for the option &amp;lt;tt&amp;gt;sitename&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:011-cli.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php config:get&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will return all the values for the available options.&lt;br /&gt;
&lt;br /&gt;
[[File:Config get all.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
=====Getting grouped configurations=====&lt;br /&gt;
The CLI Update adds an option to &amp;lt;tt&amp;gt;config:get&amp;lt;/tt&amp;gt; command that allows us to get logically grouped options, say for example you want to view all your database related options, or you want to view all email related options. To achieve this the CLI Update provides an option to specify a group of options to display, here is how to do that: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php config:get --group=mail&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Config get group.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
The command takes in the &amp;lt;tt&amp;gt;group&amp;lt;/tt&amp;gt; option and given the value of &amp;lt;tt&amp;gt;mail&amp;lt;/tt&amp;gt;. CLI Update currently supports group values: mail, db and session.&lt;br /&gt;
&lt;br /&gt;
====Site down and Site up commands====&lt;br /&gt;
As their name suggests, these commands allow you to quickly put your Joomla powered website into offline or online mode. Here is how to use the commands:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php site:up&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Site up.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;php cli/joomla.php site:down&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Site down.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
The second command puts the website in offline mode while the first command brings the website to online mode.&lt;br /&gt;
&lt;br /&gt;
==Contributing to CLI Update as a developer==&lt;br /&gt;
&lt;br /&gt;
===Adding more commands===&lt;br /&gt;
The CLI Update ships with some commands which are added based on the need seen as of the time. However, the CLI Update allows other commands to be added easily and this is what this section is for. A video tutorial is included below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;video-container&amp;quot;&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=gcJJtTcPiTg}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Calling other commands within command classes===&lt;br /&gt;
Should in case a command you want to write for the CLI Update is going to be require that you call an existing command internally, this is how that can be achieved from within another command class:&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;
class RunHelloCommand extends AbstractCommand {&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
    public function execute(): int {&lt;br /&gt;
        $command = $this-&amp;gt;getApplication()-&amp;gt;getCommand(&#039;say:hello&#039;);&lt;br /&gt;
        $code = $command-&amp;gt;execute();&lt;br /&gt;
&lt;br /&gt;
        if($code === 0) {&lt;br /&gt;
            // command ran successfully, do something&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, we&#039;re attempting to call the &amp;lt;tt&amp;gt;say:hello&amp;lt;/tt&amp;gt; command created in the Video above.&lt;br /&gt;
&lt;br /&gt;
===Some important things to checkout===&lt;br /&gt;
*Symfony Style Documentation: [https://symfony.com/doc/current/console/style.html How to Style a Console Command]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Google Summer of Code 2018]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Joomla!_4.x]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:CLI_Update/1/fa&amp;diff=498340</id>
		<title>Translations:J4.x:CLI Update/1/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:CLI_Update/1/fa&amp;diff=498340"/>
		<updated>2018-08-04T14:37:35Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;بروز رسانی CLI &amp;lt;br /&amp;gt; مستندات&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;بروز رسانی CLI &amp;lt;br /&amp;gt; مستندات&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Improved_Override_Management/fa&amp;diff=498335</id>
		<title>J4.x:Improved Override Management/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Improved_Override_Management/fa&amp;diff=498335"/>
		<updated>2018-08-04T14:36:06Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;== مقدمه ==&amp;quot;&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;
{{Top portal heading|color=white-bkgd|text-color=#333|title=&lt;br /&gt;
GSoC 2018 &amp;lt;br /&amp;gt;&lt;br /&gt;
Improved Override Management &amp;lt;br /&amp;gt;Documentation}}&lt;br /&gt;
[[Image:Gsoc2016.png|75px|center|link=GSOC 2018]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
== مقدمه ==&lt;br /&gt;
This project adds an update checking feature to Joomla so that if a template overrides core file is changed or updated, it notifies the user that one of the core files of their template overrides is changed with the update, to avoid security issues or functionality issue and they can adjust their override before anyone can notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project repository link:&#039;&#039;&#039; https://github.com/joomla-projects/gsoc18_override_management&lt;br /&gt;
&lt;br /&gt;
== Getting a head-start with Improved Override Management ==&lt;br /&gt;
=== Notes ===&lt;br /&gt;
If you are new to Joomla development, and don&#039;t know much about Template Manager and Overrides, please read:&lt;br /&gt;
#[[S:MyLanguage/J3.x:How_to_use_the_Template_Manager|How to use the Template Manager]]&lt;br /&gt;
#[[S:MyLanguage/Layout_Overrides_in_Joomla|Layout Overrides in Joomla]]&lt;br /&gt;
&lt;br /&gt;
Now, if you got familiar with how to use Template Manager and types of Overrides in Joomla. Then, let&#039;s go through this project features.&lt;br /&gt;
* Supported Overrides&lt;br /&gt;
* Diff View&lt;br /&gt;
* Override - Quick Icon Notification Plugin&lt;br /&gt;
* Installer - Override Plugin&lt;br /&gt;
* Updated - Override History &lt;br /&gt;
&lt;br /&gt;
== Types of overrides supported by this feature ==&lt;br /&gt;
It does not support Alternative Layout in which filename get renamed to something else and js, css overrides.&lt;br /&gt;
This feature supports these override files listed in Create Override tab. Example: &lt;br /&gt;
[[File:Selection 035-en.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
== Diff view between core and override files ==&lt;br /&gt;
This feature shows the difference between the core file and the override file. When you open any override file to edit you can see two buttons or switchers in the top right corner of the page if core file of that file is exited.&lt;br /&gt;
&lt;br /&gt;
Buttons like this: &lt;br /&gt;
[[File:Selection 027-en.png|center|Buttons]]&lt;br /&gt;
Here, you can control the hide and show view of diff view and core file view. &lt;br /&gt;
In the next image, you will see the location of the core file and diff view in the template manager.&lt;br /&gt;
[[File:Selection 028-en.png|center|800px]]&lt;br /&gt;
You can not edit the core file.&lt;br /&gt;
&lt;br /&gt;
=== How diff view is working ===&lt;br /&gt;
When you click on any override file to edit it, it calls a function method &amp;lt;tt&amp;gt;getCoreFile&amp;lt;/tt&amp;gt; which receives the two parameters &amp;lt;tt&amp;gt;path&amp;lt;/tt&amp;gt; of the override file in the template. Example : &amp;lt;tt&amp;gt;/html/layouts/joomla/form/field/user.php&amp;lt;/tt&amp;gt; and the client path of the file whether it belongs to &amp;lt;tt&amp;gt;Site&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;Administrator&amp;lt;/tt&amp;gt;. Then, based on these information it returns the path of the core file if it exists.&lt;br /&gt;
For showing the diff between the core and override files we used [https://github.com/kpdecker/jsdiff jsdiff] library.&lt;br /&gt;
&lt;br /&gt;
== Override - Quick Icon Notification Plugin ==&lt;br /&gt;
A quick icon notification plugin which shows the notification in cpanel and it shows the total updated overrides from all templates. When overrides are updated then the quick icon shows something like in the example below:&lt;br /&gt;
[[File:Selection 020-en.png|center|Quick Icon|800px]]&lt;br /&gt;
When you click on it, it will redirect you to Templates which contain the list of your templates with their description. You&#039;ll see a new column header &#039;&#039;&#039;Overrides&#039;&#039;&#039; showing the number of override updated which belongs to the template. If nothing has been updated in the template override it will show a Up to date badge. &lt;br /&gt;
[[File:Selection 022-en.png|center|Templates|800px]]&lt;br /&gt;
&lt;br /&gt;
=== How quick icon is working ===&lt;br /&gt;
It makes an AJAX call to the &amp;lt;tt&amp;gt;TemplateController.php&amp;lt;/tt&amp;gt; which returns the information and displays a notification when such overrides are updated.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Quick icon notification plugin only works or able to fetch data if &amp;lt;tt&amp;gt;installer/override&amp;lt;/tt&amp;gt; plugin is enabled. If &amp;lt;tt&amp;gt;installer/override&amp;lt;/tt&amp;gt; is disabled then you will see this error message in quick icon.&lt;br /&gt;
[[File:Selection 024-en.png|center|Enable|800px]]&lt;br /&gt;
If you click on the quick icon you will be redirected to the &amp;lt;tt&amp;gt;installer/override&amp;lt;/tt&amp;gt; plugin settings where you can edit the settings of the plugin.&lt;br /&gt;
== Installer - Override Plugin ==&lt;br /&gt;
This plugin is the main part of this feature. It allows to find the correct updated overrides during the extension install or update and Joomla update. &lt;br /&gt;
&lt;br /&gt;
[[File:Selection 025-en.png|center|Installer Override|800px]]&lt;br /&gt;
&lt;br /&gt;
=== How installer override plugin is working ===&lt;br /&gt;
This plugin works on 6 events:&lt;br /&gt;
*onExtensionBeforeUpdate&lt;br /&gt;
*onExtensionAfterUpdate&lt;br /&gt;
*onInstallerBeforeInstaller&lt;br /&gt;
*onInstallerAfterInstaller&lt;br /&gt;
*onJoomlaBeforeUpdate&lt;br /&gt;
*onJoomlaAfterUpdate&lt;br /&gt;
Which collect all overrides core file &amp;lt;tt&amp;gt;md5_file()&amp;lt;/tt&amp;gt; hash before update and after update then compairs both values. Then, find the correct changed or updated file. And, store information in &amp;lt;tt&amp;gt;#__templates_overrides&amp;lt;/tt&amp;gt; table.&lt;br /&gt;
&lt;br /&gt;
== Updated - Override History ==&lt;br /&gt;
You can access this from the Updated Files tab in a template.&lt;br /&gt;
This is a list view that shows the list of updated overrides which do belongs to that template. &lt;br /&gt;
[[File:Selection 029-en.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
There are many options available to manage list. Where you can check the status of override file history whether is checked or not, created date, date of change and update action like: whether it belongs to (Joomla Update, Extension Update or Extension Install).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These information are only history so if you checked the updated override changes then, you can delete the history, as not needed anymore.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Google Summer of Code 2018{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Improved_Override_Management/2/fa&amp;diff=498334</id>
		<title>Translations:J4.x:Improved Override Management/2/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J4.x:Improved_Override_Management/2/fa&amp;diff=498334"/>
		<updated>2018-08-04T14:36:06Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;== مقدمه ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== مقدمه ==&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/fa&amp;diff=282419</id>
		<title>J3.x:Upgrading from Joomla 3.4.x to 3.5/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/fa&amp;diff=282419"/>
		<updated>2016-03-12T20:07:24Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;شما باید جهت بروزرسانی از طریق کامپوننت بروزرسانی جوملا یا به وسیله ی عمل دستی چنانچه از این پس ن...&amp;quot;&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|مهم ! بروزرسانی از 3.5.x به 3.5 نمی تواند به وسیله ی مدیریت افزونه ها انجام گیرد &amp;lt;br /&amp;gt;شما باید جهت بروزرسانی از طریق کامپوننت بروزرسانی جوملا یا به وسیله ی عمل دستی چنانچه از این پس نشان داده می شود اقدام کنید|type=serious}}&lt;br /&gt;
&lt;br /&gt;
{{tip|title=Before updating, always take a [[S:Mylanguage/Backup|backup]] and don’t forget to test it.}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Preferably you update your Joomla! Installation by using the Joomla! Update component and use the fix database option via &#039;&#039;&#039;Extension&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Manage&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Database&#039;&#039;&#039; and select the &#039;&#039;&#039;Fix&#039;&#039;&#039; button on the top left.&lt;br /&gt;
&lt;br /&gt;
If you can’t update your Joomla! Installation in the prefered way because of hosting limitations or connection issues. You need to follow these steps : &lt;br /&gt;
#Download the update package from (link)&lt;br /&gt;
#Extract the download package on your computer&lt;br /&gt;
#Upload the content of the extracted download package to the root or the folder where your Joomla! Installation is. &lt;br /&gt;
#Log in to your Joomla! Administrator panel and go to &#039;&#039;&#039;Extension&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Manage&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Database&#039;&#039;&#039; and select the &#039;&#039;&#039;Fix&#039;&#039;&#039; button on the top left. &lt;br /&gt;
#Go within the manage section to &#039;&#039;Discover&#039;&#039; menu item in the left menu and click the &#039;&#039;&#039;Discover&#039;&#039;&#039; button.  Install any Joomla! extension shown in the list by pressing the &#039;&#039;Install&#039;&#039; button.&lt;br /&gt;
#In the main menu of your administrator panel, go to &#039;&#039;&#039;System&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Clear Cache&#039;&#039;&#039; and if any rows are shown, select them and click the &#039;&#039;&#039;Clear cache&#039;&#039;&#039; button. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Version 3.x FAQ]]&lt;br /&gt;
[[Category:Version 3.5 FAQ]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.5]]&lt;br /&gt;
[[Category:Update]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/10/fa&amp;diff=282418</id>
		<title>Translations:J3.x:Upgrading from Joomla 3.4.x to 3.5/10/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/10/fa&amp;diff=282418"/>
		<updated>2016-03-12T20:07:24Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;شما باید جهت بروزرسانی از طریق کامپوننت بروزرسانی جوملا یا به وسیله ی عمل دستی چنانچه از این پس ن...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;شما باید جهت بروزرسانی از طریق کامپوننت بروزرسانی جوملا یا به وسیله ی عمل دستی چنانچه از این پس نشان داده می شود اقدام کنید&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/fa&amp;diff=282383</id>
		<title>J3.x:Upgrading from Joomla 3.4.x to 3.5/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/fa&amp;diff=282383"/>
		<updated>2016-03-12T19:41:08Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;مهم ! بروزرسانی از 3.5.x به 3.5 نمی تواند به وسیله ی مدیریت افزونه ها انجام گیرد&amp;quot;&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|مهم ! بروزرسانی از 3.5.x به 3.5 نمی تواند به وسیله ی مدیریت افزونه ها انجام گیرد &amp;lt;br /&amp;gt;You have to update via the Joomla! Update component or by manual action as indicated hereafter.|type=serious}}&lt;br /&gt;
&lt;br /&gt;
{{tip|title=Before updating, always take a [[S:Mylanguage/Backup|backup]] and don’t forget to test it.}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Preferably you update your Joomla! Installation by using the Joomla! Update component and use the fix database option via &#039;&#039;&#039;Extension&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Manage&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Database&#039;&#039;&#039; and select the &#039;&#039;&#039;Fix&#039;&#039;&#039; button on the top left.&lt;br /&gt;
&lt;br /&gt;
If you can’t update your Joomla! Installation in the prefered way because of hosting limitations or connection issues. You need to follow these steps : &lt;br /&gt;
#Download the update package from (link)&lt;br /&gt;
#Extract the download package on your computer&lt;br /&gt;
#Upload the content of the extracted download package to the root or the folder where your Joomla! Installation is. &lt;br /&gt;
#Log in to your Joomla! Administrator panel and go to &#039;&#039;&#039;Extension&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Manage&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Database&#039;&#039;&#039; and select the &#039;&#039;&#039;Fix&#039;&#039;&#039; button on the top left. &lt;br /&gt;
#Go within the manage section to &#039;&#039;Discover&#039;&#039; menu item in the left menu and click the &#039;&#039;&#039;Discover&#039;&#039;&#039; button.  Install any Joomla! extension shown in the list by pressing the &#039;&#039;Install&#039;&#039; button.&lt;br /&gt;
#In the main menu of your administrator panel, go to &#039;&#039;&#039;System&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Clear Cache&#039;&#039;&#039; and if any rows are shown, select them and click the &#039;&#039;&#039;Clear cache&#039;&#039;&#039; button. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Version 3.x FAQ]]&lt;br /&gt;
[[Category:Version 3.5 FAQ]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.5]]&lt;br /&gt;
[[Category:Update]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/9/fa&amp;diff=282382</id>
		<title>Translations:J3.x:Upgrading from Joomla 3.4.x to 3.5/9/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/9/fa&amp;diff=282382"/>
		<updated>2016-03-12T19:41:07Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;مهم ! بروزرسانی از 3.5.x به 3.5 نمی تواند به وسیله ی مدیریت افزونه ها انجام گیرد&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;مهم ! بروزرسانی از 3.5.x به 3.5 نمی تواند به وسیله ی مدیریت افزونه ها انجام گیرد&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/fa&amp;diff=282381</id>
		<title>J3.x:Upgrading from Joomla 3.4.x to 3.5/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/fa&amp;diff=282381"/>
		<updated>2016-03-12T19:38:01Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;J3.x : بروزرسانی از جوملا 3.4.x به 3.5&amp;quot;&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|&#039;&#039;&#039;IMPORTANT! Updating from 3.4.x to 3.5 cannot be done by the extension manager.&#039;&#039;&#039; &amp;lt;br /&amp;gt;You have to update via the Joomla! Update component or by manual action as indicated hereafter.|type=serious}}&lt;br /&gt;
&lt;br /&gt;
{{tip|title=Before updating, always take a [[S:Mylanguage/Backup|backup]] and don’t forget to test it.}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Preferably you update your Joomla! Installation by using the Joomla! Update component and use the fix database option via &#039;&#039;&#039;Extension&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Manage&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Database&#039;&#039;&#039; and select the &#039;&#039;&#039;Fix&#039;&#039;&#039; button on the top left.&lt;br /&gt;
&lt;br /&gt;
If you can’t update your Joomla! Installation in the prefered way because of hosting limitations or connection issues. You need to follow these steps : &lt;br /&gt;
#Download the update package from (link)&lt;br /&gt;
#Extract the download package on your computer&lt;br /&gt;
#Upload the content of the extracted download package to the root or the folder where your Joomla! Installation is. &lt;br /&gt;
#Log in to your Joomla! Administrator panel and go to &#039;&#039;&#039;Extension&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Manage&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Database&#039;&#039;&#039; and select the &#039;&#039;&#039;Fix&#039;&#039;&#039; button on the top left. &lt;br /&gt;
#Go within the manage section to &#039;&#039;Discover&#039;&#039; menu item in the left menu and click the &#039;&#039;&#039;Discover&#039;&#039;&#039; button.  Install any Joomla! extension shown in the list by pressing the &#039;&#039;Install&#039;&#039; button.&lt;br /&gt;
#In the main menu of your administrator panel, go to &#039;&#039;&#039;System&#039;&#039;&#039;{{rarr}}&#039;&#039;&#039;Clear Cache&#039;&#039;&#039; and if any rows are shown, select them and click the &#039;&#039;&#039;Clear cache&#039;&#039;&#039; button. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Version 3.x FAQ]]&lt;br /&gt;
[[Category:Version 3.5 FAQ]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.5]]&lt;br /&gt;
[[Category:Update]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/Page_display_title/fa&amp;diff=282380</id>
		<title>Translations:J3.x:Upgrading from Joomla 3.4.x to 3.5/Page display title/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/Page_display_title/fa&amp;diff=282380"/>
		<updated>2016-03-12T19:38:01Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;J3.x : بروزرسانی از جوملا 3.4.x به 3.5&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;J3.x : بروزرسانی از جوملا 3.4.x به 3.5&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Understanding_Joomla!_templates/fa&amp;diff=184787</id>
		<title>Understanding Joomla! templates/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Understanding_Joomla!_templates/fa&amp;diff=184787"/>
		<updated>2015-05-26T19:22:26Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;دسته بندی:قالب ها دسته بندی:خودآموز&amp;quot;&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;
{{version|1.5,2.5,3.x}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the typical template directory structure?/fa|What is the typical template directory structure?}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the purpose of the templateDetails.xml file?/fa|What is the purpose of the templateDetails.xml file?}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the purpose of the index.php file?/fa|What is the purpose of the index.php file?}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[دسته بندی:قالب ها]]&lt;br /&gt;
[[دسته بندی:خودآموز]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Understanding_Joomla!_templates/4/fa&amp;diff=184786</id>
		<title>Translations:Understanding Joomla! templates/4/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Understanding_Joomla!_templates/4/fa&amp;diff=184786"/>
		<updated>2015-05-26T19:22:26Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;دسته بندی:قالب ها دسته بندی:خودآموز&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[دسته بندی:قالب ها]]&lt;br /&gt;
[[دسته بندی:خودآموز]]&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Understanding_Joomla!_templates/fa&amp;diff=184785</id>
		<title>Understanding Joomla! templates/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Understanding_Joomla!_templates/fa&amp;diff=184785"/>
		<updated>2015-05-26T19:21:43Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;fa&amp;quot;&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;
{{version|1.5,2.5,3.x}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the typical template directory structure?/fa|What is the typical template directory structure?}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the purpose of the templateDetails.xml file?/fa|What is the purpose of the templateDetails.xml file?}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the purpose of the index.php file?/fa|What is the purpose of the index.php file?}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Understanding_Joomla!_templates/3/fa&amp;diff=184784</id>
		<title>Translations:Understanding Joomla! templates/3/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Understanding_Joomla!_templates/3/fa&amp;diff=184784"/>
		<updated>2015-05-26T19:21:43Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;fa&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fa&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Understanding_Joomla!_templates/fa&amp;diff=184783</id>
		<title>Understanding Joomla! templates/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Understanding_Joomla!_templates/fa&amp;diff=184783"/>
		<updated>2015-05-26T19:21:34Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;fa&amp;quot;&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;
{{version|1.5,2.5,3.x}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the typical template directory structure?/fa|What is the typical template directory structure?}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the purpose of the templateDetails.xml file?/fa|What is the purpose of the templateDetails.xml file?}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the purpose of the index.php file?/en|What is the purpose of the index.php file?}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Understanding_Joomla!_templates/2/fa&amp;diff=184782</id>
		<title>Translations:Understanding Joomla! templates/2/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Understanding_Joomla!_templates/2/fa&amp;diff=184782"/>
		<updated>2015-05-26T19:21:33Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;fa&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fa&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Understanding_Joomla!_templates/fa&amp;diff=184781</id>
		<title>Understanding Joomla! templates/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Understanding_Joomla!_templates/fa&amp;diff=184781"/>
		<updated>2015-05-26T19:21:27Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;fa&amp;quot;&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;
{{version|1.5,2.5,3.x}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the typical template directory structure?/fa|What is the typical template directory structure?}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the purpose of the templateDetails.xml file?/en|What is the purpose of the templateDetails.xml file?}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the purpose of the index.php file?/en|What is the purpose of the index.php file?}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Understanding_Joomla!_templates/1/fa&amp;diff=184780</id>
		<title>Translations:Understanding Joomla! templates/1/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Understanding_Joomla!_templates/1/fa&amp;diff=184780"/>
		<updated>2015-05-26T19:21:27Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;fa&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fa&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Understanding_Joomla!_templates/fa&amp;diff=184778</id>
		<title>Understanding Joomla! templates/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Understanding_Joomla!_templates/fa&amp;diff=184778"/>
		<updated>2015-05-26T19:20:00Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;فهم قالب جوملا&amp;quot;&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;
{{version|1.5,2.5,3.x}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the typical template directory structure?/en|What is the typical template directory structure?}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the purpose of the templateDetails.xml file?/en|What is the purpose of the templateDetails.xml file?}}&lt;br /&gt;
&lt;br /&gt;
{{:What is the purpose of the index.php file?/en|What is the purpose of the index.php file?}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Understanding_Joomla!_templates/Page_display_title/fa&amp;diff=184777</id>
		<title>Translations:Understanding Joomla! templates/Page display title/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Understanding_Joomla!_templates/Page_display_title/fa&amp;diff=184777"/>
		<updated>2015-05-26T19:19:59Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;فهم قالب جوملا&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;فهم قالب جوملا&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User_talk:MATsxm&amp;diff=180132</id>
		<title>User talk:MATsxm</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User_talk:MATsxm&amp;diff=180132"/>
		<updated>2015-05-13T07:55:59Z</updated>

		<summary type="html">&lt;p&gt;Levelup: /*  The problem remains */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Translator welcome}}[[User:MATsxm|MATsxm]] ([[User talk:MATsxm|talk]]) 09:13, 25 November 2014 (CST)&lt;br /&gt;
&lt;br /&gt;
== Change text direction from LTR to RTL ? ==&lt;br /&gt;
&lt;br /&gt;
Hi dear MATsxm&amp;lt;br /&amp;gt;&lt;br /&gt;
my language direction is RTL. But when I translate Joomla documentation , the text will be displayed from left to right.&lt;br /&gt;
What should I do?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;Answer&#039;&#039;==&lt;br /&gt;
Hi&lt;br /&gt;
Are you sure you are using the translate feature????&lt;br /&gt;
It seems you changed the Core text (original) in the sandbox page.&lt;br /&gt;
This is NOT the way to translate.&lt;br /&gt;
&lt;br /&gt;
to translate a page you must &#039;&#039;&#039;NEVER&#039;&#039;&#039; change the original text (except if you have to make changes but only in en&#039;GB) then click on &amp;quot;Translate the page&amp;quot; (must be written in you language) then you will have a specific page for translation.&lt;br /&gt;
&lt;br /&gt;
Let me know if you need more help &lt;br /&gt;
Regards,&lt;br /&gt;
MAT&lt;br /&gt;
&lt;br /&gt;
==  The problem remains ==&lt;br /&gt;
&lt;br /&gt;
Hi&amp;lt;br /&amp;gt;&lt;br /&gt;
As you said i clicked on &amp;quot; Translate this page &amp;quot; and translate 2 paragraphs  but The text is still left to right&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
image attached&lt;br /&gt;
[[File:Untitled.jpg|thumbnail]]&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Untitled.jpg&amp;diff=180131</id>
		<title>File:Untitled.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Untitled.jpg&amp;diff=180131"/>
		<updated>2015-05-13T07:52:33Z</updated>

		<summary type="html">&lt;p&gt;Levelup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{CopyrightByOSM}}&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Jdoc_statements/fa&amp;diff=180130</id>
		<title>Jdoc statements/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Jdoc_statements/fa&amp;diff=180130"/>
		<updated>2015-05-13T07:35:33Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;اعلان &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; نمایش محتوای قالب بندی جوملا که برای نمایش صفحه معین شده است. اعلان های &amp;lt;code...&amp;quot;&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;
اعلان های jdoc در هر [[S:MyLanguage/Template|قالبی]] وجود دارد و محل خروجی دیگر قسمت های جوملا یا محلی را که افزونه ها باید در سراسر صفحه وب قرار بگیرند نشان میدهد. اعلان jdoc چیزی شبیه این است : &amp;lt;code&amp;gt;&amp;lt;jdoc:include type=&amp;quot;component&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
== jdoc:include ==&lt;br /&gt;
اعلان &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; نمایش محتوای قالب بندی جوملا که برای نمایش صفحه معین شده است. اعلان های &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; متنوعی وجود دارند، که هر کدام به قسمت متفاوتی از صفحه جوملا رجوع می کنند. جایگزینی به خودی خود در JDocumentHTML::_renderTemplate انجام می شود. همچنین _parseTemplate را ببینید.&lt;br /&gt;
&lt;br /&gt;
=== The type attribute ===&lt;br /&gt;
The &amp;lt;tt&amp;gt;type&amp;lt;/tt&amp;gt; attribute specifies the type of content to be rendered in place of the &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; element. For example, the &amp;lt;code&amp;gt;&amp;lt;jdoc:include &#039;&#039;&#039;&#039;&#039;type=&amp;quot;head&amp;quot;&#039;&#039;&#039;&#039;&#039; /&amp;gt;&amp;lt;/code&amp;gt; statement uses the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;type=&amp;quot;head&amp;quot;&amp;lt;/code&amp;gt;). (&#039;&#039;Note: Jdoc expressions require double quotes around attributes, and won&#039;t work with single quotes. The space before the closing /&amp;gt; is also mandatory&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
==== Component ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;component&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This element should only appear once in the &amp;lt;body&amp;gt; element of the Template to render the main content of the page with respect to the current page being viewed.&lt;br /&gt;
&lt;br /&gt;
==== Head ====&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;
This element should only appear once in the &amp;lt;head&amp;gt; element of the Template to render the content of the style, script and meta elements associated with the current page.&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;installation&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This element is only used within the Joomla! Installer template for Joomla {{JVer|2.5}} and below and is of no particular use in a Front-end or Back-end template. It&#039;s somewhat the equivalent to the &#039;component&#039; type, rendering the main content of an installation step.&lt;br /&gt;
&lt;br /&gt;
==== Message ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;message&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This element should only appear once in the &amp;lt;body&amp;gt; element of the Template to render system and error messages that occurred in the request.&lt;br /&gt;
&lt;br /&gt;
CSS styles for system messages can be found in templates\system\css\system.css&lt;br /&gt;
&lt;br /&gt;
==== Module ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;module&amp;quot; name=&amp;quot;breadcrumbs&amp;quot; title=&amp;quot;Breadcrumbs&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;module&amp;quot; name=&amp;quot;mainmenu&amp;quot; title=&amp;quot;Main Menu&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This element renders a single module given by the &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;title&amp;lt;/tt&amp;gt; attributes: &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; should match module type (mod_breadcrumbs and mod_menu in the examples above) while &amp;lt;tt&amp;gt;title&amp;lt;/tt&amp;gt; should be the module name of the desired module.&lt;br /&gt;
The module in question must be published and accessible by the current user in order to become visible. Additional attributes can be provided to control the layout and appearance of the module, if supported.&lt;br /&gt;
&lt;br /&gt;
==== Modules ====&lt;br /&gt;
Modules are rendered on a page using one of the following code examples. The modules are separated into different areas of a template using template positions set in the &amp;lt;code&amp;gt;templatedetails.xml&amp;lt;/code&amp;gt; file. Using the &amp;lt;code&amp;gt;jdoc:include&amp;lt;/code&amp;gt;&#039;s &amp;lt;code&amp;gt;name=&amp;quot;&#039;&#039;[template position name]&#039;&#039;&amp;quot;&amp;lt;/code&amp;gt; attribute, the various modules in their respective positions can be called, rendered, and styled separately. Additional attributes can be provided to control the layout and appearance of modules, if supported.&lt;br /&gt;
&lt;br /&gt;
Below are some examples of module statements with module positions used frequently by Joomla! theme developers.&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;modules&amp;quot; name=&amp;quot;debug&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;icon&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;left&amp;quot; style=&amp;quot;rounded&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;left&amp;quot; style=&amp;quot;xhtml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;right&amp;quot; style=&amp;quot;xhtml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;status&amp;quot;  /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;syndicate&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;title&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;toolbar&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;top&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;top&amp;quot; style=&amp;quot;xhtml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;user1&amp;quot; style=&amp;quot;xhtml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;user2&amp;quot; style=&amp;quot;xhtml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;user3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;user4&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The &amp;lt;code&amp;gt;name=&amp;quot;user3&amp;quot;&amp;lt;/code&amp;gt; module position is normally (by default) used for the top menu.&lt;br /&gt;
&lt;br /&gt;
=== The style attribute ===&lt;br /&gt;
The optional &amp;lt;code&amp;gt;style=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; attribute is available for the &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; types of &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; statements. The attribute value refers to the [[What is module chrome?|chrome]] style used to wrap the output generated by the Module. If no style is provided, a value of &amp;quot;&amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&amp;quot; is used by default.&lt;br /&gt;
&lt;br /&gt;
Template designers may add additional chrome names as described in [[Applying custom module chrome]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Understanding Joomla! templates]]&lt;br /&gt;
* [[Creating a basic Joomla! template]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Landing Pages]]&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Jdoc_statements/24/fa&amp;diff=180129</id>
		<title>Translations:Jdoc statements/24/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Jdoc_statements/24/fa&amp;diff=180129"/>
		<updated>2015-05-13T07:35:33Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;اعلان &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; نمایش محتوای قالب بندی جوملا که برای نمایش صفحه معین شده است. اعلان های &amp;lt;code...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;اعلان &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; نمایش محتوای قالب بندی جوملا که برای نمایش صفحه معین شده است. اعلان های &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; متنوعی وجود دارند، که هر کدام به قسمت متفاوتی از صفحه جوملا رجوع می کنند. جایگزینی به خودی خود در JDocumentHTML::_renderTemplate انجام می شود. همچنین _parseTemplate را ببینید.&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Jdoc_statements/fa&amp;diff=180108</id>
		<title>Jdoc statements/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Jdoc_statements/fa&amp;diff=180108"/>
		<updated>2015-05-13T07:26:35Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;اعلان های jdoc در هر قالبی وجود دارد و محل خروجی دیگر قسمت های جوملا یا محلی را که افز...&amp;quot;&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;
اعلان های jdoc در هر [[S:MyLanguage/Template|قالبی]] وجود دارد و محل خروجی دیگر قسمت های جوملا یا محلی را که افزونه ها باید در سراسر صفحه وب قرار بگیرند نشان میدهد. اعلان jdoc چیزی شبیه این است : &amp;lt;code&amp;gt;&amp;lt;jdoc:include type=&amp;quot;component&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
== jdoc:include ==&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; statement is a Joomla! template&#039;s method of displaying content specific to the page being viewed. There are various &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; statements, each returning a different part of a Joomla! page. The replacement itself is done in JDocumentHTML::_renderTemplate. See also _parseTemplate.&lt;br /&gt;
&lt;br /&gt;
=== The type attribute ===&lt;br /&gt;
The &amp;lt;tt&amp;gt;type&amp;lt;/tt&amp;gt; attribute specifies the type of content to be rendered in place of the &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; element. For example, the &amp;lt;code&amp;gt;&amp;lt;jdoc:include &#039;&#039;&#039;&#039;&#039;type=&amp;quot;head&amp;quot;&#039;&#039;&#039;&#039;&#039; /&amp;gt;&amp;lt;/code&amp;gt; statement uses the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;type=&amp;quot;head&amp;quot;&amp;lt;/code&amp;gt;). (&#039;&#039;Note: Jdoc expressions require double quotes around attributes, and won&#039;t work with single quotes. The space before the closing /&amp;gt; is also mandatory&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
==== Component ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;component&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This element should only appear once in the &amp;lt;body&amp;gt; element of the Template to render the main content of the page with respect to the current page being viewed.&lt;br /&gt;
&lt;br /&gt;
==== Head ====&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;
This element should only appear once in the &amp;lt;head&amp;gt; element of the Template to render the content of the style, script and meta elements associated with the current page.&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;installation&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This element is only used within the Joomla! Installer template for Joomla {{JVer|2.5}} and below and is of no particular use in a Front-end or Back-end template. It&#039;s somewhat the equivalent to the &#039;component&#039; type, rendering the main content of an installation step.&lt;br /&gt;
&lt;br /&gt;
==== Message ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;message&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This element should only appear once in the &amp;lt;body&amp;gt; element of the Template to render system and error messages that occurred in the request.&lt;br /&gt;
&lt;br /&gt;
CSS styles for system messages can be found in templates\system\css\system.css&lt;br /&gt;
&lt;br /&gt;
==== Module ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;module&amp;quot; name=&amp;quot;breadcrumbs&amp;quot; title=&amp;quot;Breadcrumbs&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;module&amp;quot; name=&amp;quot;mainmenu&amp;quot; title=&amp;quot;Main Menu&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This element renders a single module given by the &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;title&amp;lt;/tt&amp;gt; attributes: &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; should match module type (mod_breadcrumbs and mod_menu in the examples above) while &amp;lt;tt&amp;gt;title&amp;lt;/tt&amp;gt; should be the module name of the desired module.&lt;br /&gt;
The module in question must be published and accessible by the current user in order to become visible. Additional attributes can be provided to control the layout and appearance of the module, if supported.&lt;br /&gt;
&lt;br /&gt;
==== Modules ====&lt;br /&gt;
Modules are rendered on a page using one of the following code examples. The modules are separated into different areas of a template using template positions set in the &amp;lt;code&amp;gt;templatedetails.xml&amp;lt;/code&amp;gt; file. Using the &amp;lt;code&amp;gt;jdoc:include&amp;lt;/code&amp;gt;&#039;s &amp;lt;code&amp;gt;name=&amp;quot;&#039;&#039;[template position name]&#039;&#039;&amp;quot;&amp;lt;/code&amp;gt; attribute, the various modules in their respective positions can be called, rendered, and styled separately. Additional attributes can be provided to control the layout and appearance of modules, if supported.&lt;br /&gt;
&lt;br /&gt;
Below are some examples of module statements with module positions used frequently by Joomla! theme developers.&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;modules&amp;quot; name=&amp;quot;debug&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;icon&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;left&amp;quot; style=&amp;quot;rounded&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;left&amp;quot; style=&amp;quot;xhtml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;right&amp;quot; style=&amp;quot;xhtml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;status&amp;quot;  /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;syndicate&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;title&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;toolbar&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;top&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;top&amp;quot; style=&amp;quot;xhtml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;user1&amp;quot; style=&amp;quot;xhtml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;user2&amp;quot; style=&amp;quot;xhtml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;user3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;jdoc:include type=&amp;quot;modules&amp;quot; name=&amp;quot;user4&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The &amp;lt;code&amp;gt;name=&amp;quot;user3&amp;quot;&amp;lt;/code&amp;gt; module position is normally (by default) used for the top menu.&lt;br /&gt;
&lt;br /&gt;
=== The style attribute ===&lt;br /&gt;
The optional &amp;lt;code&amp;gt;style=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; attribute is available for the &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; types of &amp;lt;code&amp;gt;&amp;lt;jdoc:include /&amp;gt;&amp;lt;/code&amp;gt; statements. The attribute value refers to the [[What is module chrome?|chrome]] style used to wrap the output generated by the Module. If no style is provided, a value of &amp;quot;&amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&amp;quot; is used by default.&lt;br /&gt;
&lt;br /&gt;
Template designers may add additional chrome names as described in [[Applying custom module chrome]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Understanding Joomla! templates]]&lt;br /&gt;
* [[Creating a basic Joomla! template]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Landing Pages]]&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Jdoc_statements/45/fa&amp;diff=180107</id>
		<title>Translations:Jdoc statements/45/fa</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Jdoc_statements/45/fa&amp;diff=180107"/>
		<updated>2015-05-13T07:26:34Z</updated>

		<summary type="html">&lt;p&gt;Levelup: Created page with &amp;quot;اعلان های jdoc در هر قالبی وجود دارد و محل خروجی دیگر قسمت های جوملا یا محلی را که افز...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;اعلان های jdoc در هر [[S:MyLanguage/Template|قالبی]] وجود دارد و محل خروجی دیگر قسمت های جوملا یا محلی را که افزونه ها باید در سراسر صفحه وب قرار بگیرند نشان میدهد. اعلان jdoc چیزی شبیه این است : &amp;lt;code&amp;gt;&amp;lt;jdoc:include type=&amp;quot;component&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=JDOC:Translation_Sandbox&amp;diff=180033</id>
		<title>JDOC:Translation Sandbox</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=JDOC:Translation_Sandbox&amp;diff=180033"/>
		<updated>2015-05-12T19:49:53Z</updated>

		<summary type="html">&lt;p&gt;Levelup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
This is our translation sandbox. After you are assigned as a translator, it is a great place to play with the translator interface.&lt;br /&gt;
&lt;br /&gt;
== چطور جوملا را دانلود کنم ؟ == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
دانلود Joomla آسان است. فقط به [http://joomla.org joomla.org] برو وروی دکمه دانلود کلیک کن.&lt;br /&gt;
&lt;br /&gt;
== بعضی از ویژگی های Joomla == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
مدیریت کاربر - جوملا دارای یک سامانه ی ثبت است که به کاربران اجازه ی پیکربندی گزینه های شخصی را می دهد.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
مدیریت رسانه - مدیریت رسانه ابزاری برای مدیریت پوشه ها و فایل های رسانه ای است و می توانید تنظیمات نوع MIME را برای بکار بردن هر نوع فایلی پیکربندی کنید.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
مدیریت زبان - برای رمزنگاری UTF-8 و بسیاری زبان های دنیا ، پشتیبانی بین المللی وجود دارد&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Banner Management - It&#039;s easy to set up banners on your Web site using the Banner Manager, starting with creating a client profile.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Contact Management - The Contact Manager helps your users to find the right person and their contact information. It also supports multiple contact forms going to specific individuals as well as groups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Search - Helps navigate users to most popular search items and provides Joomla administrator with search statistics.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Web Link Management - Providing link resources for site users is simple and you can sort them into categories, even count every click.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Content Management -  Joomla&#039;s simplified three-tiered system of articles makes organizing your content a snap.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Syndication and Newsfeed Management - With Joomla, it&#039;s easy to syndicate your site content, allowing your users to subscribe to new content in their favorite RSS reader.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Menu Manager - The Menu Manager allows you to create as many menus and menu items as you need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Template Management - Templates in Joomla are a powerful way to make your site look exactly the way you want and either use a single template for the entire site or a separate template for each site section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Integrated Help System - Joomla has a built-in help section to assist users with finding what they need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
System Features - Speedy page loads are possible with page caching, granular-level module caching, and GZIP page compression.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Web Services - With Web services, you can use Remote Procedure Calls (via HTTP and XML).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
All of the above with &#039;&#039;&#039;Powerful Extensibility&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Joomla Help and Mail Lists == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
You can find help on [http://forum.joomla.org our forum] or join one of our mail lists at http://www.joomla.org/mailing-lists.html.&lt;br /&gt;
&lt;br /&gt;
== See also == &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
* [[JDOC:Documentation Translators|Documentation Translators]]&lt;br /&gt;
* [[JDOC:Page_Translation_Explained|Page Translation Explained]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
[[Category:Documentation Translation]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User_talk:MATsxm&amp;diff=180031</id>
		<title>User talk:MATsxm</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User_talk:MATsxm&amp;diff=180031"/>
		<updated>2015-05-12T19:33:24Z</updated>

		<summary type="html">&lt;p&gt;Levelup: /* Change text direction from LTR to RTL ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Translator welcome}}[[User:MATsxm|MATsxm]] ([[User talk:MATsxm|talk]]) 09:13, 25 November 2014 (CST)&lt;br /&gt;
&lt;br /&gt;
== Change text direction from LTR to RTL ? ==&lt;br /&gt;
&lt;br /&gt;
Hi dear MATsxm&amp;lt;br /&amp;gt;&lt;br /&gt;
my language direction is RTL. But when I translate Joomla documentation , the text will be displayed from left to right.&lt;br /&gt;
What should I do?&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User_talk:MATsxm&amp;diff=180030</id>
		<title>User talk:MATsxm</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User_talk:MATsxm&amp;diff=180030"/>
		<updated>2015-05-12T19:32:45Z</updated>

		<summary type="html">&lt;p&gt;Levelup: /* Change text direction from LTR to RTL ? */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Translator welcome}}[[User:MATsxm|MATsxm]] ([[User talk:MATsxm|talk]]) 09:13, 25 November 2014 (CST)&lt;br /&gt;
&lt;br /&gt;
== Change text direction from LTR to RTL ? ==&lt;br /&gt;
&lt;br /&gt;
Hi dear MATsxm&lt;br /&gt;
my language direction is RTL. But when I translate Joomla documentation , the text will be displayed from left to right.&lt;br /&gt;
What should I do?&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=JDOC:Documentation_Translators&amp;diff=179771</id>
		<title>JDOC:Documentation Translators</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=JDOC:Documentation_Translators&amp;diff=179771"/>
		<updated>2015-05-11T19:52:21Z</updated>

		<summary type="html">&lt;p&gt;Levelup: /* fa - فارسی - Persian */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:JDOC translation icon.png|right]]&lt;br /&gt;
Here, people &#039;&#039;&#039;translating&#039;&#039;&#039; {{SITENAME}} can sign up as a translator. Please be sure to read the required reading list below. &lt;br /&gt;
&lt;br /&gt;
After you add your username to the list below under the appropriate language heading, a [[JDOC:Translation Administrators|Translation Administrator]] will assign your username translator permissions. After your username is added as a translator you can start translating! Please be on the look out for a [[Template:Translator welcome|welcome message]] with more information posted to your user talk page.{{-}}&lt;br /&gt;
&lt;br /&gt;
== Required Reading ==&lt;br /&gt;
* Getting started, read [[JDOC:Page Translation Quickstart Guide|Page Translation Quickstart Guide]]&lt;br /&gt;
* Detailed explanation of translating, [[JDOC:Page Translation Explained|Page Translation Explained]].&lt;br /&gt;
* Our [[JDOC:Language policy|Language policy]]&lt;br /&gt;
* [[JDOC:Translator Tips|Translator Tips]]&lt;br /&gt;
* Having an [[JDOC:Translation Questions|issue or need help]]?&lt;br /&gt;
&lt;br /&gt;
{{tip|text=Dear translators! Please [[Special:TranslatorSignup|register for translator notifications about your language]]. You are placed on a list to receive notices about new/updated pages that need translation.|title=A Tip for Translators}}&lt;br /&gt;
&lt;br /&gt;
===Add Your Username===&lt;br /&gt;
Add your username below under a language you want to translate and you will be added to the [[Special:ListUsers/translator|Translator user group]].&lt;br /&gt;
&lt;br /&gt;
===Add Your Language===&lt;br /&gt;
If your language isn&#039;t listed below, please add it using the format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;lang code&amp;gt; - Localised language name - English language name &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the syntax, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;* {{User|YourUsername}}&amp;lt;/nowiki&amp;gt; - requested&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a Translation Administrator adds you as a translator, they will remove the &amp;quot;- requested&amp;quot; from your username.&lt;br /&gt;
&lt;br /&gt;
==Current Translations Teams==&lt;br /&gt;
&lt;br /&gt;
Documentation language codes are different from Joomla! language codes, they are ISO 639-1 2 letter code. A small quantity of 4 letter language codes are used as an exception, but these language codes are all lowercase.&lt;br /&gt;
&lt;br /&gt;
=== ar - عربي - arabe ===&lt;br /&gt;
* {{User|ghilo}}&lt;br /&gt;
&lt;br /&gt;
=== af - Afrikaans ===&lt;br /&gt;
*{{User|JoeSA}}&lt;br /&gt;
&lt;br /&gt;
=== bg - Български - Bulgarian ===&lt;br /&gt;
* {{User|bdimov}}&lt;br /&gt;
* {{User|Mastwd}}&lt;br /&gt;
&lt;br /&gt;
=== ca - Català - Catalan === &lt;br /&gt;
* {{User|el_libre}}&lt;br /&gt;
* {{User|Jcollver}}&lt;br /&gt;
* {{User|Johnnydement}}&lt;br /&gt;
&lt;br /&gt;
=== da - Dansk - Danish ===&lt;br /&gt;
* {{User|Jespertoender}}&lt;br /&gt;
* {{User|rbuelund}}&lt;br /&gt;
* {{User|tienloantran}}&lt;br /&gt;
&lt;br /&gt;
=== de - Deutsch - German ===&lt;br /&gt;
* {{User|FrankyD}}&lt;br /&gt;
* {{User|gorgonz}}&lt;br /&gt;
* {{User|joomla-agency}}&lt;br /&gt;
* {{User|Ka3media}}&lt;br /&gt;
* {{User|Paterna}}&lt;br /&gt;
* {{User|Sisko1990}}&lt;br /&gt;
* {{User|Stefanie}}&lt;br /&gt;
* {{User|Tkahl}}&lt;br /&gt;
&lt;br /&gt;
=== es - Español - Spanish ===&lt;br /&gt;
* {{User|carcam}}&lt;br /&gt;
* {{User|Crsanchez}}&lt;br /&gt;
* {{User|danielperaza}}&lt;br /&gt;
* {{User|Irene.lopez}}&lt;br /&gt;
* {{User|isidrobaq}}&lt;br /&gt;
* {{User|ivanramosnet}}&lt;br /&gt;
* {{User|Javiparati}}&lt;br /&gt;
* {{User|Jcollver}}&lt;br /&gt;
* {{User|Leo_Soto}}&lt;br /&gt;
* {{User|netandsoftware}}&lt;br /&gt;
* {{User|pfvidal}}&lt;br /&gt;
* {{User|VictorYork87}}&lt;br /&gt;
* {{User|viena}}&lt;br /&gt;
* {{User|Willin}}&lt;br /&gt;
&lt;br /&gt;
=== et - Eesti - Estonian ===&lt;br /&gt;
* {{User|Eraser}}&lt;br /&gt;
&lt;br /&gt;
=== fa - فارسی - Persian ===&lt;br /&gt;
* {{User|Grand}}&lt;br /&gt;
* {{User|mhehm}}&lt;br /&gt;
* {{User|Levelup}}&lt;br /&gt;
&lt;br /&gt;
=== fr - Français - French ===&lt;br /&gt;
* {{User|BerCalva}}&lt;br /&gt;
* {{User|Daniel}}&lt;br /&gt;
* {{User|Dylis}}&lt;br /&gt;
* {{User|Erix}}&lt;br /&gt;
* {{User|MATsxm}}&lt;br /&gt;
* {{User|Opware2000}}&lt;br /&gt;
* {{User|Rajoz}}&lt;br /&gt;
* {{User|Sandra97}}&lt;br /&gt;
* {{User|Simon}}&lt;br /&gt;
&lt;br /&gt;
=== hu - Magyar - Hungarian ===&lt;br /&gt;
* {{User|Balazs}}&lt;br /&gt;
&lt;br /&gt;
=== id - Bahasa Indonesia - Indonesian ===&lt;br /&gt;
* {{User|dw1Rianto}}&lt;br /&gt;
* {{User|Micokelana}}&lt;br /&gt;
* {{User|sikumbang}}&lt;br /&gt;
&lt;br /&gt;
=== it - Italiano - Italian ===&lt;br /&gt;
* {{User|alexred}}&lt;br /&gt;
* {{User|alikon}}&lt;br /&gt;
* {{User|donato}}&lt;br /&gt;
* {{User|nemo_bis}} (occasionally)&lt;br /&gt;
* {{User|ste}}&lt;br /&gt;
&lt;br /&gt;
=== ja - 日本語 - Japanese ===&lt;br /&gt;
* {{User|Nori}}&lt;br /&gt;
* {{User|Richell}}&lt;br /&gt;
* {{User|Yama}}&lt;br /&gt;
&lt;br /&gt;
=== nl - Nederlands - Dutch ===&lt;br /&gt;
* {{User|Arkomat}}&lt;br /&gt;
* {{User|bcdesign}}&lt;br /&gt;
* {{User|Grubosoft}}&lt;br /&gt;
* {{User|Hvdmeer}}&lt;br /&gt;
* {{User|Lara}}&lt;br /&gt;
* {{User|Lianne}}&lt;br /&gt;
* {{User|marionnijhuis}}&lt;br /&gt;
* {{User|Marnix}}&lt;br /&gt;
* {{User|MartijnM}}&lt;br /&gt;
* {{User|metdick}}&lt;br /&gt;
* {{User|Mtb}}&lt;br /&gt;
* {{User|n9iels}}&lt;br /&gt;
* {{User|Onderzoekspraktijk}}&lt;br /&gt;
* {{User|Rineke}}&lt;br /&gt;
* {{User|Schrijvers123}}&lt;br /&gt;
* {{User|slibbe}}&lt;br /&gt;
* {{User|Stitch123}}&lt;br /&gt;
* {{User|webmiep}}&lt;br /&gt;
* {{User|webcatsolutions}}&lt;br /&gt;
* {{User|wimstrik}}&lt;br /&gt;
&lt;br /&gt;
=== pl - Polski - Polish ===&lt;br /&gt;
* {{User|justyna}}&lt;br /&gt;
&lt;br /&gt;
=== pt - Português - Portuguese ===&lt;br /&gt;
* {{User|Djesus}}&lt;br /&gt;
* {{User|Horus_68}}&lt;br /&gt;
* {{User|Mansil}}&lt;br /&gt;
&lt;br /&gt;
=== pt-br - Português do Brasil - Brazilian Portuguese ===&lt;br /&gt;
* {{User|Airton}}&lt;br /&gt;
* {{User|Anabarcellos}}&lt;br /&gt;
* {{User|Ariadnepinheiro}}&lt;br /&gt;
* {{User|DiLeu}}&lt;br /&gt;
* {{User|Filipetorres}}&lt;br /&gt;
* {{User|Helvecio}}&lt;br /&gt;
* {{User|Henrydouglas}}&lt;br /&gt;
* {{User|Murilotimo}}&lt;br /&gt;
&lt;br /&gt;
=== ru - Русский - Russian ===&lt;br /&gt;
* {{User|AlexSmirnov}}&lt;br /&gt;
* {{User|Vyatka}}&lt;br /&gt;
&lt;br /&gt;
=== sv - Svenska - Swedish ===&lt;br /&gt;
* {{User|Propellerhuvud}}&lt;br /&gt;
* {{User|Sgagner}}&lt;br /&gt;
&lt;br /&gt;
=== sw - Kiswahili - Swahili ===&lt;br /&gt;
* {{User|Ayeko}}&lt;br /&gt;
&lt;br /&gt;
=== th - ไทย - Thai ===&lt;br /&gt;
* {{User|Supachai_chai}}&lt;br /&gt;
&lt;br /&gt;
=== tr - Türkçe - Turkish ===&lt;br /&gt;
* {{User|Enes}}&lt;br /&gt;
* {{User|Ugur}}&lt;br /&gt;
* {{User|Umitkenan}}&lt;br /&gt;
&lt;br /&gt;
=== ur - ur-PK - اردو - Urdu Pakistan ===&lt;br /&gt;
&lt;br /&gt;
=== vi - Tiếng Việt - Vietnamese ===&lt;br /&gt;
* {{User|huyhoa}}&lt;br /&gt;
&lt;br /&gt;
=== zh - 中文 - Chinese ===&lt;br /&gt;
* {{User|eyesofkids}}&lt;br /&gt;
* {{User|Zhang19min88}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Translation Administrators==&lt;br /&gt;
&lt;br /&gt;
The responsibilities of a Translation Administrator will require slightly more attention to the documents for translation. Translation Administrators should feel comfortable with using wiki markup, made hundreds of contributions to their specific language and assisted others in translation of docs. Administrators will need to check the documentation every few days and perform any required tasks. These tasks include re-marking pages in en-GB with edit changes, tracking language units which need translation and welcoming new translators. Ideally, we should have at least one Translation Administrator who will not be tied to any specific language and when the time comes, one Translation Administrator for active language teams. [[JDOC_talk:Documentation Translators|Volunteer as a Translation Administrator here]].&lt;br /&gt;
&lt;br /&gt;
===Current Volunteer Translation Administrators===&lt;br /&gt;
{{:Special:ListUsers/translationadmins}}&lt;br /&gt;
&lt;br /&gt;
==Common Language Codes==&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; afr - Afrikaans - Afrikaans&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ar - عربي - Arabic&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; bg - Български - Bulgarian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; bg - Български - Bulgarian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; bn - বাংলা - Bengali&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; bo - བོད་ཡིག - tibetan&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ca - Català - Catalan&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ce - Nohçi - Chechen&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; da - Dansk - Danish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; de - Deutsch - German&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; es - Español - Spanish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; fa - فارسی - Persian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; fi - - Finnish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; fr - Français - French&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; hu - Magyar - Hungarian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; hy - Հայերեն - Armenian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; id - Bahasa Indonesia - Indonesian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; is - Íslenska - Icelandic&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; it - Italiano - Italian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ja - 日本語 - Japanese&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ko - 한국어 - Korean&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; lb - Lëtzebuergesch - Luxembourgish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; min - Baso Minangkabau - Minang&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ml - liviox alvax - Malayalam&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; mr - मराठी - Marathi&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ms - Bahasa Melayu - Malay&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; nl - Nederlands - Dutch&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; pl - Polski - Polish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; pt - Português - Portuguese&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; pt-br - Português do Brasil - Brazilian Portuguese&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ro - Română - Romanian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ru - Русский - Russian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; sl - Slovenščina - Slovenianjtökók&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; sq - Shqip - Albanian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; sv - Svenska - Swedish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; sw - Kiswahili - Swahili&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ta - தமிழ் - Tamil&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; th - ไทย - Thai&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; tr - Türkçe - Turkish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; vi - Tiếng Việt - Vietnamese&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; zh 中文 Chinese&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Documentation Wiki Policies and Guidelines]]&lt;br /&gt;
[[Category:Documentation Translation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Levelup</name></author>
	</entry>
</feed>