<?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=Leo240</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=Leo240"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Leo240"/>
	<updated>2026-05-28T15:46:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Adding_custom_fields_to_core_components_using_a_plugin/ru&amp;diff=450235</id>
		<title>Adding custom fields to core components using a plugin/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Adding_custom_fields_to_core_components_using_a_plugin/ru&amp;diff=450235"/>
		<updated>2017-09-27T06:45:03Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &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;
Вы когда-нибудь желали, чтобы в компоненте com_content ядра [системы Joomla] присутствовало дополнительное поле для [ввода] номера телефона или Вам когда-нибудь было нужно дополнительное поле для материалов компонента com_content? Joomla предоставляет простой и удобный путь для интегрирования таких новых полей в компоненты ядра. Простой плагин содержимого и переопределение макета Вашего шаблона - это все что требуется для достижения [такого интегрирования].&lt;br /&gt;
&lt;br /&gt;
Эта статья показывает как добавить дополнительное поле в компоненте ядра на примере добавления дополнительного адреса электронной почты в контакты внутри компонента com_contact. Если Вам нужно добавить произвольные поля в материалы [компонента] com_content, просто измените в ниже следующем коде все упоминания &amp;quot;contact&amp;quot; на &amp;quot;content&amp;quot;. Также учтите, что компонент com_content использует свойство &amp;quot;attribs&amp;quot;, а не &amp;quot;params&amp;quot; для значений полей, так же, как и для переопределения.&lt;br /&gt;
&lt;br /&gt;
==Создание произвольного поля==&lt;br /&gt;
Для ознакомления с тем, как создать и установить какой-либо не рассмотренный здесь плагин, рекомендуется сначала прочитать [[S:MyLanguage/Creating a Plugin for Joomla|Создание плагина для Joomla]].&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы добавить какое-либо поле в какой-либо системный компонент, Вам нужно создать плагин содержимого, который подхватывает событие onContentPrepareForm и вставляет свои собственные поля в нужный [класс] JForm. Нижеследующий код предназначен только для Joomla 3.1 и следующих за ней версий.&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;
class plgContentExample extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation.&lt;br /&gt;
	 * Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var boolean&lt;br /&gt;
	 * @since &amp;lt;your version&amp;gt;&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Prepare form and add my field.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   JForm  $form  The form to be altered.&lt;br /&gt;
	 * @param   mixed  $data  The associated data for the form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  boolean&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   &amp;lt;your version&amp;gt;&lt;br /&gt;
	 */&lt;br /&gt;
	function onContentPrepareForm($form, $data)&lt;br /&gt;
	{&lt;br /&gt;
		$app    = JFactory::getApplication();&lt;br /&gt;
		$option = $app-&amp;gt;input-&amp;gt;get(&#039;option&#039;);&lt;br /&gt;
&lt;br /&gt;
		switch($option)&lt;br /&gt;
		{&lt;br /&gt;
			case &#039;com_contact&#039; :&lt;br /&gt;
				if ($app-&amp;gt;isAdmin())&lt;br /&gt;
				{&lt;br /&gt;
					JForm::addFormPath(__DIR__ . &#039;/forms&#039;);&lt;br /&gt;
					$form-&amp;gt;loadFile(&#039;contact&#039;, false);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				return true;&lt;br /&gt;
		}&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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Включить редактирование Ваших новых произвольных полей довольно легко. Для того, чтобы довавить данное поле в конкретную форму редактирования содержимого с лицевой части [веб-сайта], просто сдублируйте следующий отрывок кода:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
case &#039;com_contact&#039;:&lt;br /&gt;
	if ($app-&amp;gt;isSite())&lt;br /&gt;
	{&lt;br /&gt;
		JForm::addFormPath(__DIR__ . &#039;/forms&#039;);&lt;br /&gt;
		$form-&amp;gt;loadFile(&#039;contact&#039;, false);&lt;br /&gt;
	}&lt;br /&gt;
	return true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Сдублируйте его непосредственно снизу от уже существующего отрывка этого кода и измените &#039;isAdmin&#039; на &#039;isSite&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Как только Вы это выполнили, создайте в файле edit.php переопределение шаблона для веб-формы содержимого. Если Вы создаете набор произвольных полей для [компонента] com_content, то Вам необходимо скопировать components/com_contact/views/form/tmpl/edit.php в /templates/your-template-name/html/com_contact/form/edit.php.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри Вашего переопределения макета добавьте в вер-форму новые поля [туда], где по-Вашему они должны быть показаны (например, под заголовком [или] под описанием), удостоверяясь в том, что названия полей соответствуют XML файлу Вашего плагина (следующим Вы создадите его).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php // Checking if this is an existing item or not ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;item-&amp;gt;id) : ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php // If it is an existing item, get the attribs part of the existing record ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php $attribs = json_decode($this-&amp;gt;item-&amp;gt;attribs); ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php // Set the value of the custom field to what is already saved. ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php // Duplicate for the number of fields you need, changing the field_name as needed. ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;form-&amp;gt;setValue(&#039;field_name&#039;, &#039;attribs&#039;, $attribs-&amp;gt;field_name); ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php // This line needs added to the file right where you want to display it. So, if you want it to show right after the description field, find the description field and place this right after it. Duplicate for the number of fields you need, changing the field_name as needed. ?&amp;gt;&lt;br /&gt;
&amp;lt;?php // Now we display the field. If we are editing an existing item, the previously saved data will be populated already ?&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $this-&amp;gt;form-&amp;gt;renderField(&#039;field_name&#039;, &#039;attribs&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как только это выполнено, Ваши [новые] поля теперь появятся и будут сохранены через лицевую [веб-страницу] редактирования [содержимого].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Дополнительные поля загружаются из файла /forms/contact.xml, [находящегося] в директории плагина. Важно чтобы эти поля находились в элементе поля с названием свойства, установленным на &amp;quot;params&amp;quot;. Если Вы не установите это название свойства, то [Ваши новые ] поля появятся в административной [панели] сайта, но их значения не будут сохраняться.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае мы добавляем поле для ярлыка для описания на публичном веб-сайте поля адреса электронной почты и второе поле - для значения [самого] адреса электронной почты,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;fieldset name=&amp;quot;params&amp;quot; label=&amp;quot;PLG_CONTENT_EXAMPLE_FIELDSET_LABEL&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
				name=&amp;quot;contact_emaillabel2&amp;quot;&lt;br /&gt;
				type=&amp;quot;text&amp;quot;&lt;br /&gt;
				label=&amp;quot;PLG_CONTENT_EXAMPLE_CONTACT_EMAILLABEL2&amp;quot;&lt;br /&gt;
			/&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
				name=&amp;quot;contact_email2&amp;quot;&lt;br /&gt;
				type=&amp;quot;text&amp;quot;&lt;br /&gt;
				label=&amp;quot;PLG_CONTENT_EXAMPLE_CONTACT_EMAIL2&amp;quot;&lt;br /&gt;
				filter=&amp;quot;email&amp;quot;&lt;br /&gt;
			/&amp;gt;&lt;br /&gt;
		&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;/fields&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В заключении, нам необходим языковый файл, чтобы эти параметры были представлены в административной панели эстетично и чтобы их можно было переводить на другие языки. Это файл должен иметь название по образцу &amp;lt;tt&amp;gt;en-GB.plg_content_example.ini&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_FIELDSET_LABEL=&amp;quot;Additional Information&amp;quot;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_CONTACT_EMAIL2=&amp;quot;Additional email address&amp;quot;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_CONTACT_EMAILLABEL2=&amp;quot;Additional email label&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот и все, [что необходимо выполнить] для создания [дополнительного] поля в [компоненте] com_content. Если Вы установите этот плагин, то в веб-форме редактирования контакта Вы получите дополнительную вкладку с названием &#039;&#039;Additional Information&#039;&#039;, включающую эти дополнительные поля. Если Вы введете данные в эти новые поля описания и адреса электронной почты контакта, то Вы увидите, что [компонент] com_contact будет сохранять и извлекать эти данные.&lt;br /&gt;
&lt;br /&gt;
Этот же самый плагин может быть использован для добавления полей в другие компоненты: просто добавьте соответствующий код в функцию onContentPrepareForm и создайте соответствующие XML файлы веб-формы.&lt;br /&gt;
&lt;br /&gt;
==Показ произвольного поля==&lt;br /&gt;
Для показа произвольного поля Вам необходимо создать в Вашем шаблоне переопределение макета для соответствующего компонента. Для более подробного ознакомления с созданием шаблонов смотрите вики [[S:MyLanguage/Creating a basic Joomla! template|Создание начального шаблона для Joomla!]]. Для более подробного ознакомления с переопределением макетов смотрите [[S:MyLanguage/Understanding Output Overrides|Понимание переопределения вывода данных]].&lt;br /&gt;
&lt;br /&gt;
Скопируйте файл &amp;lt;tt&amp;gt;&amp;lt;Joomla&amp;gt;/components/com_contact/views/contact/tmpl/default.php&amp;lt;/tt&amp;gt; в &amp;lt;tt&amp;gt;&amp;lt;template&amp;gt;/html/com_contact/contact/default.php&amp;lt;/tt&amp;gt;, при необходимости создав эту папку. Мы собираемся изменить этот файл для включения дополнительной информации. Компонент com_contact автоматически загрузит эти дополнительные поля для нас и загрузит их в переменную под названием $this-&amp;gt;params. Все, что нам нажно сделать, так это проверить, установленны ли эти данные и, если это так, то показать их.&lt;br /&gt;
&lt;br /&gt;
Для показа этого поля, найдите в [файле]&amp;lt;tt&amp;gt;&amp;lt;template&amp;gt;/html/com_contact/contact/default.php&amp;lt;/tt&amp;gt; место, которое соответствует [месту] в котором Вы желаете показать эти дополнительные поля, и добавьте следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;params-&amp;gt;get(&#039;contact_emaillabel2&#039;, false)) : ?&amp;gt;&lt;br /&gt;
	&amp;lt;div&amp;gt;&lt;br /&gt;
		&amp;lt;span class=&amp;quot;contact-additionalemail&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;params-&amp;gt;get(&#039;contact_emaillabel2&#039;); ?&amp;gt;:&amp;amp;emsp;&amp;lt;a href=&amp;quot;mailto:&amp;lt;?php echo $this-&amp;gt;params-&amp;gt;get(&#039;contact_email2&#039;); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;params-&amp;gt;get(&#039;contact_email2&#039;); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если Вы добавите этот код и установите свой шаблон, то теперь на лицевой части Вашего веб-сайте у Вас будут показаны эти дополнительные поля.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Plugin Development/ru|Разработка плагинов]]&lt;br /&gt;
[[Category:Template Development/ru|Разработка шаблонов]]&lt;br /&gt;
[[Category:Tutorials/ru|Наставления]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Adding_custom_fields_to_core_components_using_a_plugin/2/ru&amp;diff=450234</id>
		<title>Translations:Adding custom fields to core components using a plugin/2/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Adding_custom_fields_to_core_components_using_a_plugin/2/ru&amp;diff=450234"/>
		<updated>2017-09-27T06:45:02Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Эта статья показывает как добавить дополнительное поле в компоненте ядра на примере добавления дополнительного адреса электронной почты в контакты внутри компонента com_contact. Если Вам нужно добавить произвольные поля в материалы [компонента] com_content, просто измените в ниже следующем коде все упоминания &amp;quot;contact&amp;quot; на &amp;quot;content&amp;quot;. Также учтите, что компонент com_content использует свойство &amp;quot;attribs&amp;quot;, а не &amp;quot;params&amp;quot; для значений полей, так же, как и для переопределения.&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Adding_custom_fields_to_core_components_using_a_plugin/ru&amp;diff=450233</id>
		<title>Adding custom fields to core components using a plugin/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Adding_custom_fields_to_core_components_using_a_plugin/ru&amp;diff=450233"/>
		<updated>2017-09-27T04:44:14Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &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;
Вы когда-нибудь желали, чтобы в компоненте com_content ядра [системы Joomla] присутствовало дополнительное поле для [ввода] номера телефона или Вам когда-нибудь было нужно дополнительное поле для материалов компонента com_content? Joomla предоставляет простой и удобный путь для интегрирования таких новых полей в компоненты ядра. Простой плагин содержимого и переопределение макета Вашего шаблона - это все что требуется для достижения [такого интегрирования].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
На примере добавления дополнительного адреса эл.почты в контакты компонента com_content, эта статья показывает как добавить какое-либо дополнительное поле в какой-либо компонент ядра. Если Вам нужно добавить произвольные поля в материалы [компонента] com_content, просто измените в ниже следующем коде все упоминания &amp;quot;contact&amp;quot; на &amp;quot;content&amp;quot;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Создание произвольного поля==&lt;br /&gt;
Для ознакомления с тем, как создать и установить какой-либо не рассмотренный здесь плагин, рекомендуется сначала прочитать [[S:MyLanguage/Creating a Plugin for Joomla|Создание плагина для Joomla]].&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы добавить какое-либо поле в какой-либо системный компонент, Вам нужно создать плагин содержимого, который подхватывает событие onContentPrepareForm и вставляет свои собственные поля в нужный [класс] JForm. Нижеследующий код предназначен только для Joomla 3.1 и следующих за ней версий.&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;
class plgContentExample extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation.&lt;br /&gt;
	 * Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var boolean&lt;br /&gt;
	 * @since &amp;lt;your version&amp;gt;&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Prepare form and add my field.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   JForm  $form  The form to be altered.&lt;br /&gt;
	 * @param   mixed  $data  The associated data for the form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  boolean&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   &amp;lt;your version&amp;gt;&lt;br /&gt;
	 */&lt;br /&gt;
	function onContentPrepareForm($form, $data)&lt;br /&gt;
	{&lt;br /&gt;
		$app    = JFactory::getApplication();&lt;br /&gt;
		$option = $app-&amp;gt;input-&amp;gt;get(&#039;option&#039;);&lt;br /&gt;
&lt;br /&gt;
		switch($option)&lt;br /&gt;
		{&lt;br /&gt;
			case &#039;com_contact&#039; :&lt;br /&gt;
				if ($app-&amp;gt;isAdmin())&lt;br /&gt;
				{&lt;br /&gt;
					JForm::addFormPath(__DIR__ . &#039;/forms&#039;);&lt;br /&gt;
					$form-&amp;gt;loadFile(&#039;contact&#039;, false);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				return true;&lt;br /&gt;
		}&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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Включить редактирование Ваших новых произвольных полей довольно легко. Для того, чтобы довавить данное поле в конкретную форму редактирования содержимого с лицевой части [веб-сайта], просто сдублируйте следующий отрывок кода:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
case &#039;com_contact&#039;:&lt;br /&gt;
	if ($app-&amp;gt;isSite())&lt;br /&gt;
	{&lt;br /&gt;
		JForm::addFormPath(__DIR__ . &#039;/forms&#039;);&lt;br /&gt;
		$form-&amp;gt;loadFile(&#039;contact&#039;, false);&lt;br /&gt;
	}&lt;br /&gt;
	return true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Сдублируйте его непосредственно снизу от уже существующего отрывка этого кода и измените &#039;isAdmin&#039; на &#039;isSite&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Как только Вы это выполнили, создайте в файле edit.php переопределение шаблона для веб-формы содержимого. Если Вы создаете набор произвольных полей для [компонента] com_content, то Вам необходимо скопировать components/com_contact/views/form/tmpl/edit.php в /templates/your-template-name/html/com_contact/form/edit.php.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри Вашего переопределения макета добавьте в вер-форму новые поля [туда], где по-Вашему они должны быть показаны (например, под заголовком [или] под описанием), удостоверяясь в том, что названия полей соответствуют XML файлу Вашего плагина (следующим Вы создадите его).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php // Checking if this is an existing item or not ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;item-&amp;gt;id) : ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php // If it is an existing item, get the attribs part of the existing record ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php $attribs = json_decode($this-&amp;gt;item-&amp;gt;attribs); ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php // Set the value of the custom field to what is already saved. ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php // Duplicate for the number of fields you need, changing the field_name as needed. ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;form-&amp;gt;setValue(&#039;field_name&#039;, &#039;attribs&#039;, $attribs-&amp;gt;field_name); ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php // This line needs added to the file right where you want to display it. So, if you want it to show right after the description field, find the description field and place this right after it. Duplicate for the number of fields you need, changing the field_name as needed. ?&amp;gt;&lt;br /&gt;
&amp;lt;?php // Now we display the field. If we are editing an existing item, the previously saved data will be populated already ?&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $this-&amp;gt;form-&amp;gt;renderField(&#039;field_name&#039;, &#039;attribs&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как только это выполнено, Ваши [новые] поля теперь появятся и будут сохранены через лицевую [веб-страницу] редактирования [содержимого].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
Дополнительные поля загружаются из файла /forms/contact.xml, [находящегося] в директории плагина. Важно чтобы эти поля находились в элементе поля с названием свойства, установленным на &amp;quot;params&amp;quot;. Если Вы не установите это название свойства, то [Ваши новые ] поля появятся в административной [панели] сайта, но их значения не будут сохраняться.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае мы добавляем поле для ярлыка для описания на публичном веб-сайте поля адреса электронной почты и второе поле - для значения [самого] адреса электронной почты,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;fieldset name=&amp;quot;params&amp;quot; label=&amp;quot;PLG_CONTENT_EXAMPLE_FIELDSET_LABEL&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
				name=&amp;quot;contact_emaillabel2&amp;quot;&lt;br /&gt;
				type=&amp;quot;text&amp;quot;&lt;br /&gt;
				label=&amp;quot;PLG_CONTENT_EXAMPLE_CONTACT_EMAILLABEL2&amp;quot;&lt;br /&gt;
			/&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
				name=&amp;quot;contact_email2&amp;quot;&lt;br /&gt;
				type=&amp;quot;text&amp;quot;&lt;br /&gt;
				label=&amp;quot;PLG_CONTENT_EXAMPLE_CONTACT_EMAIL2&amp;quot;&lt;br /&gt;
				filter=&amp;quot;email&amp;quot;&lt;br /&gt;
			/&amp;gt;&lt;br /&gt;
		&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;/fields&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В заключении, нам необходим языковый файл, чтобы эти параметры были представлены в административной панели эстетично и чтобы их можно было переводить на другие языки. Это файл должен иметь название по образцу &amp;lt;tt&amp;gt;en-GB.plg_content_example.ini&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_FIELDSET_LABEL=&amp;quot;Additional Information&amp;quot;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_CONTACT_EMAIL2=&amp;quot;Additional email address&amp;quot;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_CONTACT_EMAILLABEL2=&amp;quot;Additional email label&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот и все, [что необходимо выполнить] для создания [дополнительного] поля в [компоненте] com_content. Если Вы установите этот плагин, то в веб-форме редактирования контакта Вы получите дополнительную вкладку с названием &#039;&#039;Additional Information&#039;&#039;, включающую эти дополнительные поля. Если Вы введете данные в эти новые поля описания и адреса электронной почты контакта, то Вы увидите, что [компонент] com_contact будет сохранять и извлекать эти данные.&lt;br /&gt;
&lt;br /&gt;
Этот же самый плагин может быть использован для добавления полей в другие компоненты: просто добавьте соответствующий код в функцию onContentPrepareForm и создайте соответствующие XML файлы веб-формы.&lt;br /&gt;
&lt;br /&gt;
==Показ произвольного поля==&lt;br /&gt;
Для показа произвольного поля Вам необходимо создать в Вашем шаблоне переопределение макета для соответствующего компонента. Для более подробного ознакомления с созданием шаблонов смотрите вики [[S:MyLanguage/Creating a basic Joomla! template|Создание начального шаблона для Joomla!]]. Для более подробного ознакомления с переопределением макетов смотрите [[S:MyLanguage/Understanding Output Overrides|Понимание переопределения вывода данных]].&lt;br /&gt;
&lt;br /&gt;
Скопируйте файл &amp;lt;tt&amp;gt;&amp;lt;Joomla&amp;gt;/components/com_contact/views/contact/tmpl/default.php&amp;lt;/tt&amp;gt; в &amp;lt;tt&amp;gt;&amp;lt;template&amp;gt;/html/com_contact/contact/default.php&amp;lt;/tt&amp;gt;, при необходимости создав эту папку. Мы собираемся изменить этот файл для включения дополнительной информации. Компонент com_contact автоматически загрузит эти дополнительные поля для нас и загрузит их в переменную под названием $this-&amp;gt;params. Все, что нам нажно сделать, так это проверить, установленны ли эти данные и, если это так, то показать их.&lt;br /&gt;
&lt;br /&gt;
Для показа этого поля, найдите в [файле]&amp;lt;tt&amp;gt;&amp;lt;template&amp;gt;/html/com_contact/contact/default.php&amp;lt;/tt&amp;gt; место, которое соответствует [месту] в котором Вы желаете показать эти дополнительные поля, и добавьте следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;params-&amp;gt;get(&#039;contact_emaillabel2&#039;, false)) : ?&amp;gt;&lt;br /&gt;
	&amp;lt;div&amp;gt;&lt;br /&gt;
		&amp;lt;span class=&amp;quot;contact-additionalemail&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;params-&amp;gt;get(&#039;contact_emaillabel2&#039;); ?&amp;gt;:&amp;amp;emsp;&amp;lt;a href=&amp;quot;mailto:&amp;lt;?php echo $this-&amp;gt;params-&amp;gt;get(&#039;contact_email2&#039;); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;params-&amp;gt;get(&#039;contact_email2&#039;); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если Вы добавите этот код и установите свой шаблон, то теперь на лицевой части Вашего веб-сайте у Вас будут показаны эти дополнительные поля.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Plugin Development/ru|Разработка плагинов]]&lt;br /&gt;
[[Category:Template Development/ru|Разработка шаблонов]]&lt;br /&gt;
[[Category:Tutorials/ru|Наставления]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Adding_custom_fields_to_core_components_using_a_plugin/15/ru&amp;diff=450232</id>
		<title>Translations:Adding custom fields to core components using a plugin/15/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Adding_custom_fields_to_core_components_using_a_plugin/15/ru&amp;diff=450232"/>
		<updated>2017-09-27T04:44:14Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Включение редактирования произвольных полей с лицевой части [веб-сайта]===&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450231</id>
		<title>J3.x:Creating a Plugin for Joomla/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450231"/>
		<updated>2017-09-27T04:35:46Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=серия}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Система плагинов в Joomla! 1.5 была очень мощной и гибкой. Плагины можно использовать не только для обработки событий, вызванных ядром приложения и его расширениями, но и для того, чтобы сделать сторонние дополнения более мощными и расширяемыми. Изменения в Joomla!  2.5/3.x в отличие от 1.5 в основном касаются имен событий.&lt;br /&gt;
&lt;br /&gt;
В этом руководстве описаны основы разработки своего плагина. Большинство плагинов состоит из одного файла с кодом, но для правильной установки он должен быть упакован в установочный файл, который будет обработан установщиком Joomla!.&lt;br /&gt;
&lt;br /&gt;
===  Создание установочного файла ===&lt;br /&gt;
Как и любые расширения для Joomla, плагины легко устанавливаются в виде .zip файлов (.tar.gz тоже поддерживается), но архив должен содержать правильно составленный XML файл. Вот пример XML файла для плагина поиска по категориям.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;search&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;plg_search_categories&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Joomla! Project&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2005&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License version 2 or later; see LICENSE.txt&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;admin@joomla.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;www.joomla.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;PLG_SEARCH_CATEGORIES_XML_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;categories&amp;quot;&amp;gt;categories.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;languages&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
	&amp;lt;/languages&amp;gt;&lt;br /&gt;
	&amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_limit&amp;quot; type=&amp;quot;text&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					size=&amp;quot;5&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_content&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ALL_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_archived&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как можно заметить, он похож на другие инсталляционные XML файлы для Joomla!. Нужно только обратить внимание на запись &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; в разделе &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt;, а также на дополнительную информацию в разделе &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; . Эта информация сообщает Joomla!, в какую папку копировать файл и в какую группу будет добавлен плагин.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин, который реагирует на существующие события ядра, атрибут &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; должен быть изменен в соответствии с именем уже существующей папки для события, которое вы хотите использовать. Например, &amp;lt;code&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt;. Смотрите [[S:MyLanguage/Plugin/Events|Plugin/Events]] полный список существующих категорий событий. При создании нового плагина важно, чтобы его название было уникальным, и чтобы он не конфликтовал с уже существующими плагинами, которые могут реагировать на то же событие, какое используете вы.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин реагировать на неосновные системные события вашего выбора для &amp;lt;code&amp;gt;группы=&amp;quot;ХХХ&amp;quot;&amp;lt;/code&amp;gt; тег должен отличаться от любого из существующих базовых категорий.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Совет:&#039;&#039;&#039; если вы добавляете атрибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;br /&gt;
&lt;br /&gt;
=== Создание плагинов ===&lt;br /&gt;
Объектно-ориентированный подход к написанию плагинов включает в себя создание подклассов от [http://api.joomla.org/Joomla-Platform/Plugin/JPlugin.html JPlugin], базового класса, реализующего основные свойства плагинов. Для ваших методов доступны следующие свойства:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: набор [[S:MyLanguage/Parameter|параметров]] для данного плагина, заданный администратором&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: имя плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: группа (тип) плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: объект базы данных (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: объект приложения (since {{JVer|3.1}})&lt;br /&gt;
&#039;&#039;&#039;Совет&#039;&#039;&#039; Для использования &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;JPlugin&amp;lt;/code&amp;gt; проверяет, существуют ли свойства, и не закрытые ли они. Если предполагается использование объектов по умолчанию, создайте неинстанцированные свойства в классе плагина (к примеру &amp;lt;code&amp;gt;protected $db; protected $app;&amp;lt;/code&amp;gt; в той же области видимости, что и &amp;lt;code&amp;gt;protected $autoloadLanguage = true;&amp;lt;/code&amp;gt;). Свойства не будут существовать до тех пор, пока не будут созданы явно.&lt;br /&gt;
&lt;br /&gt;
В следующем примере &amp;lt;code&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/code&amp;gt; представляет группу (тип) плагина, а &amp;lt;code&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/code&amp;gt; его название. Обратите внимание, что имена класса и функции в PHP не чувствительны к регистру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die;&lt;br /&gt;
&lt;br /&gt;
class plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation. Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var    boolean&lt;br /&gt;
	 * @since  3.1&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method with the same name as the event will be called automatically.&lt;br /&gt;
	 */&lt;br /&gt;
	 function &amp;lt;EventName&amp;gt;()&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access database and application objects and parameters via $this-&amp;gt;db,&lt;br /&gt;
		 * $this-&amp;gt;app and $this-&amp;gt;params respectively&lt;br /&gt;
		 */&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Использование плагинов в коде ===&lt;br /&gt;
Теперь, когда вы создали свой плагин, то вам наверняка захочется его вызвать в своем коде. Но делать это необязательно, ядро Joomla! имеет набор встроенных событий, которые вы можете использовать для запуска плагина. Тогда нижеописанное делать не нужно:&lt;br /&gt;
&lt;br /&gt;
Чтобы запустить событие, используйте следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher = JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger( &#039;&amp;lt;EventName&amp;gt;&#039;, &amp;lt;ParameterArray&amp;gt; );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что параметры должны передаваться в массиве. Функция же в плагине будет получить параметры как отдельные значения. Возвращаемое значение будет состоять из массив возвращаемых значений из разных плагинов (поэтому он также может содержать многоуровневые массивы). Возвращаться будет массив значений из разных плагинов (этот массив может быть многоуровневым).&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин для нового события, а не для встроенного события ядра. то не забудьте активировать плагин после установки. Перед ссылкой на ваш новый плагин должна стоять команда &amp;lt;code&amp;gt;JPluginHelper::importPlugin()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/10/ru&amp;diff=450230</id>
		<title>Translations:J3.x:Creating a Plugin for Joomla/10/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/10/ru&amp;diff=450230"/>
		<updated>2017-09-27T04:35:45Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: набор [[S:MyLanguage/Parameter|параметров]] для данного плагина, заданный администратором&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: имя плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: группа (тип) плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: объект базы данных (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: объект приложения (since {{JVer|3.1}})&lt;br /&gt;
&#039;&#039;&#039;Совет&#039;&#039;&#039; Для использования &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;JPlugin&amp;lt;/code&amp;gt; проверяет, существуют ли свойства, и не закрытые ли они. Если предполагается использование объектов по умолчанию, создайте неинстанцированные свойства в классе плагина (к примеру &amp;lt;code&amp;gt;protected $db; protected $app;&amp;lt;/code&amp;gt; в той же области видимости, что и &amp;lt;code&amp;gt;protected $autoloadLanguage = true;&amp;lt;/code&amp;gt;). Свойства не будут существовать до тех пор, пока не будут созданы явно.&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450229</id>
		<title>J3.x:Creating a Plugin for Joomla/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450229"/>
		<updated>2017-09-27T04:24:56Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=серия}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Система плагинов в Joomla! 1.5 была очень мощной и гибкой. Плагины можно использовать не только для обработки событий, вызванных ядром приложения и его расширениями, но и для того, чтобы сделать сторонние дополнения более мощными и расширяемыми. Изменения в Joomla!  2.5/3.x в отличие от 1.5 в основном касаются имен событий.&lt;br /&gt;
&lt;br /&gt;
В этом руководстве описаны основы разработки своего плагина. Большинство плагинов состоит из одного файла с кодом, но для правильной установки он должен быть упакован в установочный файл, который будет обработан установщиком Joomla!.&lt;br /&gt;
&lt;br /&gt;
===  Создание установочного файла ===&lt;br /&gt;
Как и любые расширения для Joomla, плагины легко устанавливаются в виде .zip файлов (.tar.gz тоже поддерживается), но архив должен содержать правильно составленный XML файл. Вот пример XML файла для плагина поиска по категориям.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;search&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;plg_search_categories&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Joomla! Project&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2005&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License version 2 or later; see LICENSE.txt&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;admin@joomla.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;www.joomla.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;PLG_SEARCH_CATEGORIES_XML_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;categories&amp;quot;&amp;gt;categories.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;languages&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
	&amp;lt;/languages&amp;gt;&lt;br /&gt;
	&amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_limit&amp;quot; type=&amp;quot;text&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					size=&amp;quot;5&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_content&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ALL_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_archived&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как можно заметить, он похож на другие инсталляционные XML файлы для Joomla!. Нужно только обратить внимание на запись &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; в разделе &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt;, а также на дополнительную информацию в разделе &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; . Эта информация сообщает Joomla!, в какую папку копировать файл и в какую группу будет добавлен плагин.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин, который реагирует на существующие события ядра, атрибут &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; должен быть изменен в соответствии с именем уже существующей папки для события, которое вы хотите использовать. Например, &amp;lt;code&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt;. Смотрите [[S:MyLanguage/Plugin/Events|Plugin/Events]] полный список существующих категорий событий. При создании нового плагина важно, чтобы его название было уникальным, и чтобы он не конфликтовал с уже существующими плагинами, которые могут реагировать на то же событие, какое используете вы.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин реагировать на неосновные системные события вашего выбора для &amp;lt;code&amp;gt;группы=&amp;quot;ХХХ&amp;quot;&amp;lt;/code&amp;gt; тег должен отличаться от любого из существующих базовых категорий.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Совет:&#039;&#039;&#039; если вы добавляете атрибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;br /&gt;
&lt;br /&gt;
=== Создание плагинов ===&lt;br /&gt;
Объектно-ориентированный подход к написанию плагинов включает в себя создание подклассов от [http://api.joomla.org/Joomla-Platform/Plugin/JPlugin.html JPlugin], базового класса, реализующего основные свойства плагинов. Для ваших методов доступны следующие свойства:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: набор [[S:MyLanguage/Parameter|параметров]] для данного плагина, заданный администратором&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: имя плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: группа (тип) плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: объект базы данных (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: объект приложения (since {{JVer|3.1}})&lt;br /&gt;
&#039;&#039;&#039;Совет&#039;&#039;&#039; Для использования &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;JPlugin&amp;lt;/code&amp;gt; проверяет, существуют ли свойства, и не закрытые ли они. Если предполагается использование объектов по умолчанию, создайте неинстанцированные свойства в классе плагина (к примеру &amp;lt;code&amp;gt;protected $db; protected $app;&amp;lt;/code&amp;gt; в той же области, что и &amp;lt;code&amp;gt;protected $autoloadLanguage = true;&amp;lt;/code&amp;gt;). Свойства не будут существовать до тех пор, пока не будут созданы явно.&lt;br /&gt;
&lt;br /&gt;
В следующем примере &amp;lt;code&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/code&amp;gt; представляет группу (тип) плагина, а &amp;lt;code&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/code&amp;gt; его название. Обратите внимание, что имена класса и функции в PHP не чувствительны к регистру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die;&lt;br /&gt;
&lt;br /&gt;
class plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation. Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var    boolean&lt;br /&gt;
	 * @since  3.1&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method with the same name as the event will be called automatically.&lt;br /&gt;
	 */&lt;br /&gt;
	 function &amp;lt;EventName&amp;gt;()&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access database and application objects and parameters via $this-&amp;gt;db,&lt;br /&gt;
		 * $this-&amp;gt;app and $this-&amp;gt;params respectively&lt;br /&gt;
		 */&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Использование плагинов в коде ===&lt;br /&gt;
Теперь, когда вы создали свой плагин, то вам наверняка захочется его вызвать в своем коде. Но делать это необязательно, ядро Joomla! имеет набор встроенных событий, которые вы можете использовать для запуска плагина. Тогда нижеописанное делать не нужно:&lt;br /&gt;
&lt;br /&gt;
Чтобы запустить событие, используйте следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher = JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger( &#039;&amp;lt;EventName&amp;gt;&#039;, &amp;lt;ParameterArray&amp;gt; );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что параметры должны передаваться в массиве. Функция же в плагине будет получить параметры как отдельные значения. Возвращаемое значение будет состоять из массив возвращаемых значений из разных плагинов (поэтому он также может содержать многоуровневые массивы). Возвращаться будет массив значений из разных плагинов (этот массив может быть многоуровневым).&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин для нового события, а не для встроенного события ядра. то не забудьте активировать плагин после установки. Перед ссылкой на ваш новый плагин должна стоять команда &amp;lt;code&amp;gt;JPluginHelper::importPlugin()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/5/ru&amp;diff=450228</id>
		<title>Translations:J3.x:Creating a Plugin for Joomla/5/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/5/ru&amp;diff=450228"/>
		<updated>2017-09-27T04:24:55Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Как можно заметить, он похож на другие инсталляционные XML файлы для Joomla!. Нужно только обратить внимание на запись &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; в разделе &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt;, а также на дополнительную информацию в разделе &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; . Эта информация сообщает Joomla!, в какую папку копировать файл и в какую группу будет добавлен плагин.&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450129</id>
		<title>J3.x:Creating a Plugin for Joomla/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450129"/>
		<updated>2017-09-26T12:54:33Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=серия}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Система плагинов в Joomla! 1.5 была очень мощной и гибкой. Плагины можно использовать не только для обработки событий, вызванных ядром приложения и его расширениями, но и для того, чтобы сделать сторонние дополнения более мощными и расширяемыми. Изменения в Joomla!  2.5/3.x в отличие от 1.5 в основном касаются имен событий.&lt;br /&gt;
&lt;br /&gt;
В этом руководстве описаны основы разработки своего плагина. Большинство плагинов состоит из одного файла с кодом, но для правильной установки он должен быть упакован в установочный файл, который будет обработан установщиком Joomla!.&lt;br /&gt;
&lt;br /&gt;
===  Создание установочного файла ===&lt;br /&gt;
Как и любые расширения для Joomla, плагины легко устанавливаются в виде .zip файлов (.tar.gz тоже поддерживается), но архив должен содержать правильно составленный XML файл. Вот пример XML файла для плагина поиска по категориям.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;search&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;plg_search_categories&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Joomla! Project&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2005&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License version 2 or later; see LICENSE.txt&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;admin@joomla.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;www.joomla.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;PLG_SEARCH_CATEGORIES_XML_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;categories&amp;quot;&amp;gt;categories.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;languages&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
	&amp;lt;/languages&amp;gt;&lt;br /&gt;
	&amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_limit&amp;quot; type=&amp;quot;text&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					size=&amp;quot;5&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_content&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ALL_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_archived&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как можно заметить, он похожа на другие инсталляционные XML файлы для Joomla!. Нужно только обратить внимание на запись &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; в разделе &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt;, а также на дополнительную информацию в разделе &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; . Эта информация сообщает Joomla!, в какую папку копировать файл и в какую группу будет добавлен плагин.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин, который реагирует на существующие события ядра, атрибут &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; должен быть изменен в соответствии с именем уже существующей папки для события, которое вы хотите использовать. Например, &amp;lt;code&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt;. Смотрите [[S:MyLanguage/Plugin/Events|Plugin/Events]] полный список существующих категорий событий. При создании нового плагина важно, чтобы его название было уникальным, и чтобы он не конфликтовал с уже существующими плагинами, которые могут реагировать на то же событие, какое используете вы.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин реагировать на неосновные системные события вашего выбора для &amp;lt;code&amp;gt;группы=&amp;quot;ХХХ&amp;quot;&amp;lt;/code&amp;gt; тег должен отличаться от любого из существующих базовых категорий.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Совет:&#039;&#039;&#039; если вы добавляете атрибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;br /&gt;
&lt;br /&gt;
=== Создание плагинов ===&lt;br /&gt;
Объектно-ориентированный подход к написанию плагинов включает в себя создание подклассов от [http://api.joomla.org/Joomla-Platform/Plugin/JPlugin.html JPlugin], базового класса, реализующего основные свойства плагинов. Для ваших методов доступны следующие свойства:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: набор [[S:MyLanguage/Parameter|параметров]] для данного плагина, заданный администратором&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: имя плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: группа (тип) плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: объект базы данных (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: объект приложения (since {{JVer|3.1}})&lt;br /&gt;
&#039;&#039;&#039;Совет&#039;&#039;&#039; Для использования &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;JPlugin&amp;lt;/code&amp;gt; проверяет, существуют ли свойства, и не закрытые ли они. Если предполагается использование объектов по умолчанию, создайте неинстанцированные свойства в классе плагина (к примеру &amp;lt;code&amp;gt;protected $db; protected $app;&amp;lt;/code&amp;gt; в той же области, что и &amp;lt;code&amp;gt;protected $autoloadLanguage = true;&amp;lt;/code&amp;gt;). Свойства не будут существовать до тех пор, пока не будут созданы явно.&lt;br /&gt;
&lt;br /&gt;
В следующем примере &amp;lt;code&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/code&amp;gt; представляет группу (тип) плагина, а &amp;lt;code&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/code&amp;gt; его название. Обратите внимание, что имена класса и функции в PHP не чувствительны к регистру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die;&lt;br /&gt;
&lt;br /&gt;
class plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation. Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var    boolean&lt;br /&gt;
	 * @since  3.1&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method with the same name as the event will be called automatically.&lt;br /&gt;
	 */&lt;br /&gt;
	 function &amp;lt;EventName&amp;gt;()&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access database and application objects and parameters via $this-&amp;gt;db,&lt;br /&gt;
		 * $this-&amp;gt;app and $this-&amp;gt;params respectively&lt;br /&gt;
		 */&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Использование плагинов в коде ===&lt;br /&gt;
Теперь, когда вы создали свой плагин, то вам наверняка захочется его вызвать в своем коде. Но делать это необязательно, ядро Joomla! имеет набор встроенных событий, которые вы можете использовать для запуска плагина. Тогда нижеописанное делать не нужно:&lt;br /&gt;
&lt;br /&gt;
Чтобы запустить событие, используйте следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher = JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger( &#039;&amp;lt;EventName&amp;gt;&#039;, &amp;lt;ParameterArray&amp;gt; );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что параметры должны передаваться в массиве. Функция же в плагине будет получить параметры как отдельные значения. Возвращаемое значение будет состоять из массив возвращаемых значений из разных плагинов (поэтому он также может содержать многоуровневые массивы). Возвращаться будет массив значений из разных плагинов (этот массив может быть многоуровневым).&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин для нового события, а не для встроенного события ядра. то не забудьте активировать плагин после установки. Перед ссылкой на ваш новый плагин должна стоять команда &amp;lt;code&amp;gt;JPluginHelper::importPlugin()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/10/ru&amp;diff=450128</id>
		<title>Translations:J3.x:Creating a Plugin for Joomla/10/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/10/ru&amp;diff=450128"/>
		<updated>2017-09-26T12:54:32Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: набор [[S:MyLanguage/Parameter|параметров]] для данного плагина, заданный администратором&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: имя плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: группа (тип) плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: объект базы данных (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: объект приложения (since {{JVer|3.1}})&lt;br /&gt;
&#039;&#039;&#039;Совет&#039;&#039;&#039; Для использования &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;JPlugin&amp;lt;/code&amp;gt; проверяет, существуют ли свойства, и не закрытые ли они. Если предполагается использование объектов по умолчанию, создайте неинстанцированные свойства в классе плагина (к примеру &amp;lt;code&amp;gt;protected $db; protected $app;&amp;lt;/code&amp;gt; в той же области, что и &amp;lt;code&amp;gt;protected $autoloadLanguage = true;&amp;lt;/code&amp;gt;). Свойства не будут существовать до тех пор, пока не будут созданы явно.&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450027</id>
		<title>J3.x:Creating a Plugin for Joomla/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450027"/>
		<updated>2017-09-26T11:42:26Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=серия}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Система плагинов в Joomla! 1.5 была очень мощной и гибкой. Плагины можно использовать не только для обработки событий, вызванных ядром приложения и его расширениями, но и для того, чтобы сделать сторонние дополнения более мощными и расширяемыми. Изменения в Joomla!  2.5/3.x в отличие от 1.5 в основном касаются имен событий.&lt;br /&gt;
&lt;br /&gt;
В этом руководстве описаны основы разработки своего плагина. Большинство плагинов состоит из одного файла с кодом, но для правильной установки он должен быть упакован в установочный файл, который будет обработан установщиком Joomla!.&lt;br /&gt;
&lt;br /&gt;
===  Создание установочного файла ===&lt;br /&gt;
Как и любые расширения для Joomla, плагины легко устанавливаются в виде .zip файлов (.tar.gz тоже поддерживается), но архив должен содержать правильно составленный XML файл. Вот пример XML файла для плагина поиска по категориям.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;search&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;plg_search_categories&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Joomla! Project&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2005&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License version 2 or later; see LICENSE.txt&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;admin@joomla.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;www.joomla.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;PLG_SEARCH_CATEGORIES_XML_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;categories&amp;quot;&amp;gt;categories.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;languages&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
	&amp;lt;/languages&amp;gt;&lt;br /&gt;
	&amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_limit&amp;quot; type=&amp;quot;text&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					size=&amp;quot;5&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_content&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ALL_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_archived&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как можно заметить, он похожа на другие инсталляционные XML файлы для Joomla!. Нужно только обратить внимание на запись &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; в разделе &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt;, а также на дополнительную информацию в разделе &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; . Эта информация сообщает Joomla!, в какую папку копировать файл и в какую группу будет добавлен плагин.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин, который реагирует на существующие события ядра, атрибут &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; должен быть изменен в соответствии с именем уже существующей папки для события, которое вы хотите использовать. Например, &amp;lt;code&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt;. Смотрите [[S:MyLanguage/Plugin/Events|Plugin/Events]] полный список существующих категорий событий. При создании нового плагина важно, чтобы его название было уникальным, и чтобы он не конфликтовал с уже существующими плагинами, которые могут реагировать на то же событие, какое используете вы.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин реагировать на неосновные системные события вашего выбора для &amp;lt;code&amp;gt;группы=&amp;quot;ХХХ&amp;quot;&amp;lt;/code&amp;gt; тег должен отличаться от любого из существующих базовых категорий.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Совет:&#039;&#039;&#039; если вы добавляете атрибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;br /&gt;
&lt;br /&gt;
=== Создание плагинов ===&lt;br /&gt;
Объектно-ориентированный подход к написанию плагинов включает в себя создание подклассов от [http://api.joomla.org/Joomla-Platform/Plugin/JPlugin.html JPlugin], базового класса, реализующего основные свойства плагинов. Для ваших методов доступны следующие свойства:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: the [[S:MyLanguage/Parameter|parameters]] set for this plugin by the administrator&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: имя плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: группа (тип) плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: объект базы данных (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: объект приложения (since {{JVer|3.1}})&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В следующем примере &amp;lt;code&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/code&amp;gt; представляет группу (тип) плагина, а &amp;lt;code&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/code&amp;gt; его название. Обратите внимание, что имена класса и функции в PHP не чувствительны к регистру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die;&lt;br /&gt;
&lt;br /&gt;
class plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation. Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var    boolean&lt;br /&gt;
	 * @since  3.1&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method with the same name as the event will be called automatically.&lt;br /&gt;
	 */&lt;br /&gt;
	 function &amp;lt;EventName&amp;gt;()&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access database and application objects and parameters via $this-&amp;gt;db,&lt;br /&gt;
		 * $this-&amp;gt;app and $this-&amp;gt;params respectively&lt;br /&gt;
		 */&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Использование плагинов в коде ===&lt;br /&gt;
Теперь, когда вы создали свой плагин, то вам наверняка захочется его вызвать в своем коде. Но делать это необязательно, ядро Joomla! имеет набор встроенных событий, которые вы можете использовать для запуска плагина. Тогда нижеописанное делать не нужно:&lt;br /&gt;
&lt;br /&gt;
Чтобы запустить событие, используйте следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher = JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger( &#039;&amp;lt;EventName&amp;gt;&#039;, &amp;lt;ParameterArray&amp;gt; );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что параметры должны передаваться в массиве. Функция же в плагине будет получить параметры как отдельные значения. Возвращаемое значение будет состоять из массив возвращаемых значений из разных плагинов (поэтому он также может содержать многоуровневые массивы). Возвращаться будет массив значений из разных плагинов (этот массив может быть многоуровневым).&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин для нового события, а не для встроенного события ядра. то не забудьте активировать плагин после установки. Перед ссылкой на ваш новый плагин должна стоять команда &amp;lt;code&amp;gt;JPluginHelper::importPlugin()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/8/ru&amp;diff=450026</id>
		<title>Translations:J3.x:Creating a Plugin for Joomla/8/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/8/ru&amp;diff=450026"/>
		<updated>2017-09-26T11:42:26Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Совет:&#039;&#039;&#039; если вы добавляете атрибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450025</id>
		<title>J3.x:Creating a Plugin for Joomla/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450025"/>
		<updated>2017-09-26T11:41:29Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=серия}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Система плагинов в Joomla! 1.5 была очень мощной и гибкой. Плагины можно использовать не только для обработки событий, вызванных ядром приложения и его расширениями, но и для того, чтобы сделать сторонние дополнения более мощными и расширяемыми. Изменения в Joomla!  2.5/3.x в отличие от 1.5 в основном касаются имен событий.&lt;br /&gt;
&lt;br /&gt;
В этом руководстве описаны основы разработки своего плагина. Большинство плагинов состоит из одного файла с кодом, но для правильной установки он должен быть упакован в установочный файл, который будет обработан установщиком Joomla!.&lt;br /&gt;
&lt;br /&gt;
===  Создание установочного файла ===&lt;br /&gt;
Как и любые расширения для Joomla, плагины легко устанавливаются в виде .zip файлов (.tar.gz тоже поддерживается), но архив должен содержать правильно составленный XML файл. Вот пример XML файла для плагина поиска по категориям.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;search&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;plg_search_categories&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Joomla! Project&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2005&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License version 2 or later; see LICENSE.txt&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;admin@joomla.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;www.joomla.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;PLG_SEARCH_CATEGORIES_XML_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;categories&amp;quot;&amp;gt;categories.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;languages&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
	&amp;lt;/languages&amp;gt;&lt;br /&gt;
	&amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_limit&amp;quot; type=&amp;quot;text&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					size=&amp;quot;5&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_content&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ALL_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_archived&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как можно заметить, он похожа на другие инсталляционные XML файлы для Joomla!. Нужно только обратить внимание на запись &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; в разделе &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt;, а также на дополнительную информацию в разделе &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; . Эта информация сообщает Joomla!, в какую папку копировать файл и в какую группу будет добавлен плагин.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин, который реагирует на существующие события ядра, атрибут &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; должен быть изменен в соответствии с именем уже существующей папки для события, которое вы хотите использовать. Например, &amp;lt;code&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt;. Смотрите [[S:MyLanguage/Plugin/Events|Plugin/Events]] полный список существующих категорий событий. При создании нового плагина важно, чтобы его название было уникальным, и чтобы он не конфликтовал с уже существующими плагинами, которые могут реагировать на то же событие, какое используете вы.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин реагировать на неосновные системные события вашего выбора для &amp;lt;code&amp;gt;группы=&amp;quot;ХХХ&amp;quot;&amp;lt;/code&amp;gt; тег должен отличаться от любого из существующих базовых категорий.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Совет:&#039;&#039;&#039; если вы добавляете атбибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;br /&gt;
&lt;br /&gt;
=== Создание плагинов ===&lt;br /&gt;
Объектно-ориентированный подход к написанию плагинов включает в себя создание подклассов от [http://api.joomla.org/Joomla-Platform/Plugin/JPlugin.html JPlugin], базового класса, реализующего основные свойства плагинов. Для ваших методов доступны следующие свойства:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: the [[S:MyLanguage/Parameter|parameters]] set for this plugin by the administrator&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: имя плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: группа (тип) плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: объект базы данных (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: объект приложения (since {{JVer|3.1}})&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В следующем примере &amp;lt;code&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/code&amp;gt; представляет группу (тип) плагина, а &amp;lt;code&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/code&amp;gt; его название. Обратите внимание, что имена класса и функции в PHP не чувствительны к регистру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die;&lt;br /&gt;
&lt;br /&gt;
class plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation. Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var    boolean&lt;br /&gt;
	 * @since  3.1&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method with the same name as the event will be called automatically.&lt;br /&gt;
	 */&lt;br /&gt;
	 function &amp;lt;EventName&amp;gt;()&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access database and application objects and parameters via $this-&amp;gt;db,&lt;br /&gt;
		 * $this-&amp;gt;app and $this-&amp;gt;params respectively&lt;br /&gt;
		 */&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Использование плагинов в коде ===&lt;br /&gt;
Теперь, когда вы создали свой плагин, то вам наверняка захочется его вызвать в своем коде. Но делать это необязательно, ядро Joomla! имеет набор встроенных событий, которые вы можете использовать для запуска плагина. Тогда нижеописанное делать не нужно:&lt;br /&gt;
&lt;br /&gt;
Чтобы запустить событие, используйте следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher = JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger( &#039;&amp;lt;EventName&amp;gt;&#039;, &amp;lt;ParameterArray&amp;gt; );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что параметры должны передаваться в массиве. Функция же в плагине будет получить параметры как отдельные значения. Возвращаемое значение будет состоять из массив возвращаемых значений из разных плагинов (поэтому он также может содержать многоуровневые массивы). Возвращаться будет массив значений из разных плагинов (этот массив может быть многоуровневым).&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин для нового события, а не для встроенного события ядра. то не забудьте активировать плагин после установки. Перед ссылкой на ваш новый плагин должна стоять команда &amp;lt;code&amp;gt;JPluginHelper::importPlugin()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/8/ru&amp;diff=450024</id>
		<title>Translations:J3.x:Creating a Plugin for Joomla/8/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/8/ru&amp;diff=450024"/>
		<updated>2017-09-26T11:41:29Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Совет:&#039;&#039;&#039; если вы добавляете атбибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450023</id>
		<title>J3.x:Creating a Plugin for Joomla/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=450023"/>
		<updated>2017-09-26T11:41:06Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=серия}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Система плагинов в Joomla! 1.5 была очень мощной и гибкой. Плагины можно использовать не только для обработки событий, вызванных ядром приложения и его расширениями, но и для того, чтобы сделать сторонние дополнения более мощными и расширяемыми. Изменения в Joomla!  2.5/3.x в отличие от 1.5 в основном касаются имен событий.&lt;br /&gt;
&lt;br /&gt;
В этом руководстве описаны основы разработки своего плагина. Большинство плагинов состоит из одного файла с кодом, но для правильной установки он должен быть упакован в установочный файл, который будет обработан установщиком Joomla!.&lt;br /&gt;
&lt;br /&gt;
===  Создание установочного файла ===&lt;br /&gt;
Как и любые расширения для Joomla, плагины легко устанавливаются в виде .zip файлов (.tar.gz тоже поддерживается), но архив должен содержать правильно составленный XML файл. Вот пример XML файла для плагина поиска по категориям.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;search&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;plg_search_categories&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Joomla! Project&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2005&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License version 2 or later; see LICENSE.txt&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;admin@joomla.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;www.joomla.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;PLG_SEARCH_CATEGORIES_XML_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;categories&amp;quot;&amp;gt;categories.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;languages&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
	&amp;lt;/languages&amp;gt;&lt;br /&gt;
	&amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_limit&amp;quot; type=&amp;quot;text&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					size=&amp;quot;5&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_content&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ALL_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_archived&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как можно заметить, он похожа на другие инсталляционные XML файлы для Joomla!. Нужно только обратить внимание на запись &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; в разделе &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt;, а также на дополнительную информацию в разделе &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; . Эта информация сообщает Joomla!, в какую папку копировать файл и в какую группу будет добавлен плагин.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин, который реагирует на существующие события ядра, атрибут &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; должен быть изменен в соответствии с именем уже существующей папки для события, которое вы хотите использовать. Например, &amp;lt;code&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt;. Смотрите [[S:MyLanguage/Plugin/Events|Plugin/Events]] полный список существующих категорий событий. При создании нового плагина важно, чтобы его название было уникальным, и чтобы он не конфликтовал с уже существующими плагинами, которые могут реагировать на то же событие, какое используете вы.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин реагировать на неосновные системные события вашего выбора для &amp;lt;code&amp;gt;группы=&amp;quot;ХХХ&amp;quot;&amp;lt;/code&amp;gt; тег должен отличаться от любого из существующих базовых категорий.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;Совет:&#039;&#039;&#039;&#039; если вы добавляете атбибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;br /&gt;
&lt;br /&gt;
=== Создание плагинов ===&lt;br /&gt;
Объектно-ориентированный подход к написанию плагинов включает в себя создание подклассов от [http://api.joomla.org/Joomla-Platform/Plugin/JPlugin.html JPlugin], базового класса, реализующего основные свойства плагинов. Для ваших методов доступны следующие свойства:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: the [[S:MyLanguage/Parameter|parameters]] set for this plugin by the administrator&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: имя плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: группа (тип) плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: объект базы данных (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: объект приложения (since {{JVer|3.1}})&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В следующем примере &amp;lt;code&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/code&amp;gt; представляет группу (тип) плагина, а &amp;lt;code&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/code&amp;gt; его название. Обратите внимание, что имена класса и функции в PHP не чувствительны к регистру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die;&lt;br /&gt;
&lt;br /&gt;
class plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation. Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var    boolean&lt;br /&gt;
	 * @since  3.1&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method with the same name as the event will be called automatically.&lt;br /&gt;
	 */&lt;br /&gt;
	 function &amp;lt;EventName&amp;gt;()&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access database and application objects and parameters via $this-&amp;gt;db,&lt;br /&gt;
		 * $this-&amp;gt;app and $this-&amp;gt;params respectively&lt;br /&gt;
		 */&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Использование плагинов в коде ===&lt;br /&gt;
Теперь, когда вы создали свой плагин, то вам наверняка захочется его вызвать в своем коде. Но делать это необязательно, ядро Joomla! имеет набор встроенных событий, которые вы можете использовать для запуска плагина. Тогда нижеописанное делать не нужно:&lt;br /&gt;
&lt;br /&gt;
Чтобы запустить событие, используйте следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher = JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger( &#039;&amp;lt;EventName&amp;gt;&#039;, &amp;lt;ParameterArray&amp;gt; );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что параметры должны передаваться в массиве. Функция же в плагине будет получить параметры как отдельные значения. Возвращаемое значение будет состоять из массив возвращаемых значений из разных плагинов (поэтому он также может содержать многоуровневые массивы). Возвращаться будет массив значений из разных плагинов (этот массив может быть многоуровневым).&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин для нового события, а не для встроенного события ядра. то не забудьте активировать плагин после установки. Перед ссылкой на ваш новый плагин должна стоять команда &amp;lt;code&amp;gt;JPluginHelper::importPlugin()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/8/ru&amp;diff=450022</id>
		<title>Translations:J3.x:Creating a Plugin for Joomla/8/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/8/ru&amp;diff=450022"/>
		<updated>2017-09-26T11:41:05Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;Совет:&#039;&#039;&#039;&#039; если вы добавляете атбибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Portal:Developers/ru&amp;diff=450021</id>
		<title>Portal:Developers/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Portal:Developers/ru&amp;diff=450021"/>
		<updated>2017-09-26T11:35:19Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &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=code|icon-color=#5091cd|size=5x|text-color=#333|title=&lt;br /&gt;
Joomla! Developers Portal}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Portal:Developers/Intro/ru}}&lt;br /&gt;
{{section portal heading|icon=book|title=Приступая к работе!}}{{Portal:Developers/Resources/ru}}&lt;br /&gt;
&lt;br /&gt;
==Существуют четыре типа разработки расширений==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{section portal heading|icon=code|title=Компоненты}}&lt;br /&gt;
{{Portal:Component_Development/Reading_list/ru}}{{tip|Смотрите [[S:MyLanguage/Portal:Component_Development|страницу портала разработки компонентов ]].|title=Для дополнительных материалов и информации:}} &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{section portal heading|icon=plug|title=Плагины}}{{Portal:Plugin_Development/Reading_list/ru}}{{tip|Смотрите [[S:MyLanguage/Portal:Plugin_Development|страницу портала разработки плагинов]].|title=Для дополнительных материалов и информации:}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{section portal heading|icon=cubes|title=Модули}}{{Portal:Module_Development/Reading_list/ru}}{{tip|Смотрите &amp;quot;[[S:MyLanguage/Portal:Module_Development|страницу по модулям портала разработки]]&amp;quot;.|title=Для дополнительных материалов и информации:}} &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{section portal heading|icon=desktop|title=Шаблоны}}{{Portal:Template_Development/Reading_list/ru}}{{tip|Смотрите &amp;quot;[[S:MyLanguage/Portal:Component_Development|страницу по шаблонам на портале разработки]]&amp;quot;.|title=Для дополнительных материалов и информации:}} &lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
==Другие темы по разработке==&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-4 column&amp;quot;&amp;gt;&lt;br /&gt;
{{section portal heading|icon=database|title=База данных}}{{Portal:Developers/Database/ru}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-4 column&amp;quot;&amp;gt;&lt;br /&gt;
{{section portal heading|icon=language|title=Локализация}}{{Portal:Developers/Localisation/ru}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-4 column&amp;quot;&amp;gt;&lt;br /&gt;
{{section portal heading|icon=users|title=Темы по ACL (списку контроля доступа)}}{{Portal:Developers/Access Control/ru}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 column&amp;quot;&amp;gt;&lt;br /&gt;
{{section portal heading|icon=edit|title=Формы}}{{Portal:Developers/Forms/ru}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 column&amp;quot;&amp;gt;&lt;br /&gt;
{{section portal heading|icon=lock|title=Безопасность}}{{Portal:Developers/Security/ru}}{{tip|Смотрите [[S:MyLanguage/Security|cтраницу портала по безопасности]].|title=Для дополнительных материалов и информации:}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{section portal heading|icon=user-plus|title=Внесение своего вклада в документацию}}&lt;br /&gt;
{{Portal:Developers/Developer_Documentation/ru}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development/ru|Разработка]]&lt;br /&gt;
[[Category:JED/ru|JED]]&lt;br /&gt;
[[Category:Joomla! user profiles/ru|Профили пользователей системы Joomla!]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Portal:Developers/25/ru&amp;diff=450020</id>
		<title>Translations:Portal:Developers/25/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Portal:Developers/25/ru&amp;diff=450020"/>
		<updated>2017-09-26T11:35:18Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Существуют четыре типа разработки расширений==&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Portal:Developers/Developer_Documentation/ru&amp;diff=448318</id>
		<title>Portal:Developers/Developer Documentation/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Portal:Developers/Developer_Documentation/ru&amp;diff=448318"/>
		<updated>2017-09-23T07:12:03Z</updated>

		<summary type="html">&lt;p&gt;Leo240: 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;
Разработка документации разработчиков Joomla контролируется непосредственно [[S:MyLanguage/Documentation Working Group|Рабочей группой по документации]]. На данный момент существует один дочерний проект отражающий интересы разработчиков:&lt;br /&gt;
* [[S:MyLanguage/JDOC:Developer_Tutorials_Project|Проект справочных руководств для разработчиков]]&lt;br /&gt;
&lt;br /&gt;
Когда Вы создаете новую страницу, убедитесь,что Вы помещаете приведенный ниже маркер в нижней части страницы, чтобы она попала в список категорий:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Development]]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если Вы обнаружите другие статьи, которые по Вашему мнению будут полезны разработчикам, пожалуйста добавьте этот маркер к тем страницам&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Landing subpages]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Portal:Developers/Developer_Documentation/4/ru&amp;diff=448317</id>
		<title>Translations:Portal:Developers/Developer Documentation/4/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Portal:Developers/Developer_Documentation/4/ru&amp;diff=448317"/>
		<updated>2017-09-23T07:12:03Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;Если Вы обнаружите другие статьи, которые по Вашему мнению будут полезны разработчикам, пожалу...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Если Вы обнаружите другие статьи, которые по Вашему мнению будут полезны разработчикам, пожалуйста добавьте этот маркер к тем страницам&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Portal:Developers/Developer_Documentation/ru&amp;diff=448316</id>
		<title>Portal:Developers/Developer Documentation/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Portal:Developers/Developer_Documentation/ru&amp;diff=448316"/>
		<updated>2017-09-23T07:10:24Z</updated>

		<summary type="html">&lt;p&gt;Leo240: 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;
Разработка документации разработчиков Joomla контролируется непосредственно [[S:MyLanguage/Documentation Working Group|Рабочей группой по документации]]. На данный момент существует один дочерний проект отражающий интересы разработчиков:&lt;br /&gt;
* [[S:MyLanguage/JDOC:Developer_Tutorials_Project|Проект справочных руководств для разработчиков]]&lt;br /&gt;
&lt;br /&gt;
Когда Вы создаете новую страницу, убедитесь,что Вы помещаете приведенный ниже маркер в нижней части страницы, чтобы она попала в список категорий:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Development]]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you locate other articles you think are relevant to developers, please add this marker to those pages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Landing subpages]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Portal:Developers/Developer_Documentation/3/ru&amp;diff=448315</id>
		<title>Translations:Portal:Developers/Developer Documentation/3/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Portal:Developers/Developer_Documentation/3/ru&amp;diff=448315"/>
		<updated>2017-09-23T07:10:24Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;Когда Вы создаете новую страницу, убедитесь,что Вы помещаете приведенный ниже маркер в нижней ч...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Когда Вы создаете новую страницу, убедитесь,что Вы помещаете приведенный ниже маркер в нижней части страницы, чтобы она попала в список категорий:&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Portal:Developers/Developer_Documentation/ru&amp;diff=448314</id>
		<title>Portal:Developers/Developer Documentation/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Portal:Developers/Developer_Documentation/ru&amp;diff=448314"/>
		<updated>2017-09-23T07:08:39Z</updated>

		<summary type="html">&lt;p&gt;Leo240: 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;
Разработка документации разработчиков Joomla контролируется непосредственно [[S:MyLanguage/Documentation Working Group|Рабочей группой по документации]]. На данный момент существует один дочерний проект отражающий интересы разработчиков:&lt;br /&gt;
* [[S:MyLanguage/JDOC:Developer_Tutorials_Project|Проект справочных руководств для разработчиков]]&lt;br /&gt;
&lt;br /&gt;
When creating a new page, ensure you place the following marker at the bottom of the page so it is included in the category list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Development]]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you locate other articles you think are relevant to developers, please add this marker to those pages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Landing subpages]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Portal:Developers/Developer_Documentation/2/ru&amp;diff=448313</id>
		<title>Translations:Portal:Developers/Developer Documentation/2/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Portal:Developers/Developer_Documentation/2/ru&amp;diff=448313"/>
		<updated>2017-09-23T07:08:39Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;* Проект справочных руководств для разработчиков&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[S:MyLanguage/JDOC:Developer_Tutorials_Project|Проект справочных руководств для разработчиков]]&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Portal:Developers/Developer_Documentation/ru&amp;diff=448312</id>
		<title>Portal:Developers/Developer Documentation/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Portal:Developers/Developer_Documentation/ru&amp;diff=448312"/>
		<updated>2017-09-23T07:07:35Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;Разработка документации разработчиков Joomla контролируется непосредственно S:MyLanguage/Documentation Workin...&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;
Разработка документации разработчиков Joomla контролируется непосредственно [[S:MyLanguage/Documentation Working Group|Рабочей группой по документации]]. На данный момент существует один дочерний проект отражающий интересы разработчиков:&lt;br /&gt;
* [[S:MyLanguage/JDOC:Developer_Tutorials_Project|Developer Tutorials Project]]&lt;br /&gt;
&lt;br /&gt;
When creating a new page, ensure you place the following marker at the bottom of the page so it is included in the category list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Development]]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you locate other articles you think are relevant to developers, please add this marker to those pages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Landing subpages]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Portal:Developers/Developer_Documentation/1/ru&amp;diff=448311</id>
		<title>Translations:Portal:Developers/Developer Documentation/1/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Portal:Developers/Developer_Documentation/1/ru&amp;diff=448311"/>
		<updated>2017-09-23T07:07:35Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;Разработка документации разработчиков Joomla контролируется непосредственно S:MyLanguage/Documentation Workin...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Разработка документации разработчиков Joomla контролируется непосредственно [[S:MyLanguage/Documentation Working Group|Рабочей группой по документации]]. На данный момент существует один дочерний проект отражающий интересы разработчиков:&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Category:JED/ru&amp;diff=448310</id>
		<title>Category:JED/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Category:JED/ru&amp;diff=448310"/>
		<updated>2017-09-23T06:59:42Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;* Каталог: http://extensions.joomla.org * Условия использования: http://extensions.joomla.org/about-jed/terms-of-service * ЧАВО каталога...&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;
Расширение - это пакет программного обеспечения, который каким-либо образом дополняет Вашу установку Joomla!. Небольшой набор расширений входит в установку Joomla! по умолчанию, но гораздо больше [расширений] имеется в [http://extensions.joomla.org официальном каталоге расширений &amp;quot;Joomla! Extensions Directory&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
* Каталог: http://extensions.joomla.org&lt;br /&gt;
* Условия использования: http://extensions.joomla.org/about-jed/terms-of-service&lt;br /&gt;
* ЧАВО каталога расширений Joomla!: [[S:MyLanguage/Joomla! Extension Directory FAQs|Joomla! Extension Directory FAQs]]&lt;br /&gt;
* Документация JED: http://extensions.joomla.org/support/knowledgebase&lt;br /&gt;
* Форум: [[jforum:262|Extensions.Joomla.org Forum]]&lt;br /&gt;
* Список уязвимых расширений: http://vel.joomla.org/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Top Level]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Category:JED/5/ru&amp;diff=448309</id>
		<title>Translations:Category:JED/5/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Category:JED/5/ru&amp;diff=448309"/>
		<updated>2017-09-23T06:59:42Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;* Каталог: http://extensions.joomla.org * Условия использования: http://extensions.joomla.org/about-jed/terms-of-service * ЧАВО каталога...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Каталог: http://extensions.joomla.org&lt;br /&gt;
* Условия использования: http://extensions.joomla.org/about-jed/terms-of-service&lt;br /&gt;
* ЧАВО каталога расширений Joomla!: [[S:MyLanguage/Joomla! Extension Directory FAQs|Joomla! Extension Directory FAQs]]&lt;br /&gt;
* Документация JED: http://extensions.joomla.org/support/knowledgebase&lt;br /&gt;
* Форум: [[jforum:262|Extensions.Joomla.org Forum]]&lt;br /&gt;
* Список уязвимых расширений: http://vel.joomla.org/&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Category:JED/ru&amp;diff=448308</id>
		<title>Category:JED/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Category:JED/ru&amp;diff=448308"/>
		<updated>2017-09-23T06:55:15Z</updated>

		<summary type="html">&lt;p&gt;Leo240: 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;
Расширение - это пакет программного обеспечения, который каким-либо образом дополняет Вашу установку Joomla!. Небольшой набор расширений входит в установку Joomla! по умолчанию, но гораздо больше [расширений] имеется в [http://extensions.joomla.org официальном каталоге расширений &amp;quot;Joomla! Extensions Directory&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
* Directory: http://extensions.joomla.org&lt;br /&gt;
* Terms of Service: http://extensions.joomla.org/about-jed/terms-of-service&lt;br /&gt;
* Joomla! Extension Directory FAQs: [[S:MyLanguage/Joomla! Extension Directory FAQs|Joomla! Extension Directory FAQs]]&lt;br /&gt;
* JED documentation: http://extensions.joomla.org/support/knowledgebase&lt;br /&gt;
* Forum: [[jforum:262|Extensions.Joomla.org Forum]]&lt;br /&gt;
* Vulnerable Extensions List: http://vel.joomla.org/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Top Level]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Category:JED/4/ru&amp;diff=448307</id>
		<title>Translations:Category:JED/4/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Category:JED/4/ru&amp;diff=448307"/>
		<updated>2017-09-23T06:55:15Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;Расширение - это пакет программного обеспечения, который каким-либо образом дополняет Вашу уст...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Расширение - это пакет программного обеспечения, который каким-либо образом дополняет Вашу установку Joomla!. Небольшой набор расширений входит в установку Joomla! по умолчанию, но гораздо больше [расширений] имеется в [http://extensions.joomla.org официальном каталоге расширений &amp;quot;Joomla! Extensions Directory&amp;quot;].&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=445202</id>
		<title>J3.x:Creating a Plugin for Joomla/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=445202"/>
		<updated>2017-09-19T04:16:01Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=серия}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Система плагинов в Joomla! 1.5 была очень мощной и гибкой. Плагины можно использовать не только для обработки событий, вызванных ядром приложения и его расширениями, но и для того, чтобы сделать сторонние дополнения более мощными и расширяемыми. Изменения в Joomla!  2.5/3.x в отличие от 1.5 в основном касаются имен событий.&lt;br /&gt;
&lt;br /&gt;
В этом руководстве описаны основы разработки своего плагина. Большинство плагинов состоит из одного файла с кодом, но для правильной установки он должен быть упакован в установочный файл, который будет обработан установщиком Joomla!.&lt;br /&gt;
&lt;br /&gt;
===  Создание установочного файла ===&lt;br /&gt;
Как и любые расширения для Joomla, плагины легко устанавливаются в виде .zip файлов (.tar.gz тоже поддерживается), но архив должен содержать правильно составленный XML файл. Вот пример XML файла для плагина поиска по категориям.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;search&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;plg_search_categories&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Joomla! Project&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2005&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License version 2 or later; see LICENSE.txt&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;admin@joomla.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;www.joomla.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;PLG_SEARCH_CATEGORIES_XML_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;categories&amp;quot;&amp;gt;categories.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;languages&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
	&amp;lt;/languages&amp;gt;&lt;br /&gt;
	&amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_limit&amp;quot; type=&amp;quot;text&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					size=&amp;quot;5&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_content&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ALL_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_archived&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как можно заметить, он похожа на другие инсталляционные XML файлы для Joomla!. Нужно только обратить внимание на запись &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; в разделе &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt;, а также на дополнительную информацию в разделе &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; . Эта информация сообщает Joomla!, в какую папку копировать файл и в какую группу будет добавлен плагин.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин, который реагирует на существующие события ядра, атрибут &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; должен быть изменен в соответствии с именем уже существующей папки для события, которое вы хотите использовать. Например, &amp;lt;code&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt;. Смотрите [[S:MyLanguage/Plugin/Events|Plugin/Events]] полный список существующих категорий событий. При создании нового плагина важно, чтобы его название было уникальным, и чтобы он не конфликтовал с уже существующими плагинами, которые могут реагировать на то же событие, какое используете вы.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин реагировать на неосновные системные события вашего выбора для &amp;lt;code&amp;gt;группы=&amp;quot;ХХХ&amp;quot;&amp;lt;/code&amp;gt; тег должен отличаться от любого из существующих базовых категорий.&lt;br /&gt;
&lt;br /&gt;
Совет: если вы добавляете атбибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;br /&gt;
&lt;br /&gt;
=== Создание плагинов ===&lt;br /&gt;
Объектно-ориентированный подход к написанию плагинов включает в себя создание подклассов от [http://api.joomla.org/Joomla-Platform/Plugin/JPlugin.html JPlugin], базового класса, реализующего основные свойства плагинов. Для ваших методов доступны следующие свойства:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: the [[S:MyLanguage/Parameter|parameters]] set for this plugin by the administrator&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: имя плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: группа (тип) плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: объект базы данных (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: объект приложения (since {{JVer|3.1}})&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В следующем примере &amp;lt;code&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/code&amp;gt; представляет группу (тип) плагина, а &amp;lt;code&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/code&amp;gt; его название. Обратите внимание, что имена класса и функции в PHP не чувствительны к регистру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die;&lt;br /&gt;
&lt;br /&gt;
class plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation. Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var    boolean&lt;br /&gt;
	 * @since  3.1&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method with the same name as the event will be called automatically.&lt;br /&gt;
	 */&lt;br /&gt;
	 function &amp;lt;EventName&amp;gt;()&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access database and application objects and parameters via $this-&amp;gt;db,&lt;br /&gt;
		 * $this-&amp;gt;app and $this-&amp;gt;params respectively&lt;br /&gt;
		 */&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Использование плагинов в коде ===&lt;br /&gt;
Теперь, когда вы создали свой плагин, то вам наверняка захочется его вызвать в своем коде. Но делать это необязательно, ядро Joomla! имеет набор встроенных событий, которые вы можете использовать для запуска плагина. Тогда нижеописанное делать не нужно:&lt;br /&gt;
&lt;br /&gt;
Чтобы запустить событие, используйте следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher = JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger( &#039;&amp;lt;EventName&amp;gt;&#039;, &amp;lt;ParameterArray&amp;gt; );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что параметры должны передаваться в массиве. Функция же в плагине будет получить параметры как отдельные значения. Возвращаемое значение будет состоять из массив возвращаемых значений из разных плагинов (поэтому он также может содержать многоуровневые массивы). Возвращаться будет массив значений из разных плагинов (этот массив может быть многоуровневым).&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин для нового события, а не для встроенного события ядра. то не забудьте активировать плагин после установки. Перед ссылкой на ваш новый плагин должна стоять команда &amp;lt;code&amp;gt;JPluginHelper::importPlugin()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/12/ru&amp;diff=445201</id>
		<title>Translations:J3.x:Creating a Plugin for Joomla/12/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/12/ru&amp;diff=445201"/>
		<updated>2017-09-19T04:16:01Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Использование плагинов в коде ===&lt;br /&gt;
Теперь, когда вы создали свой плагин, то вам наверняка захочется его вызвать в своем коде. Но делать это необязательно, ядро Joomla! имеет набор встроенных событий, которые вы можете использовать для запуска плагина. Тогда нижеописанное делать не нужно:&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=445192</id>
		<title>J3.x:Creating a Plugin for Joomla/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_Plugin_for_Joomla/ru&amp;diff=445192"/>
		<updated>2017-09-19T03:43:47Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=серия}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Система плагинов в Joomla! 1.5 была очень мощной и гибкой. Плагины можно использовать не только для обработки событий, вызванных ядром приложения и его расширениями, но и для того, чтобы сделать сторонние дополнения более мощными и расширяемыми. Изменения в Joomla!  2.5/3.x в отличие от 1.5 в основном касаются имен событий.&lt;br /&gt;
&lt;br /&gt;
В этом руководстве описаны основы разработки своего плагина. Большинство плагинов состоит из одного файла с кодом, но для правильной установки он должен быть упакован в установочный файл, который будет обработан установщиком Joomla!.&lt;br /&gt;
&lt;br /&gt;
===  Создание установочного файла ===&lt;br /&gt;
Как и любые расширения для Joomla, плагины легко устанавливаются в виде .zip файлов (.tar.gz тоже поддерживается), но архив должен содержать правильно составленный XML файл. Вот пример XML файла для плагина поиска по категориям.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension version=&amp;quot;3.1&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;search&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;plg_search_categories&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Joomla! Project&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2005&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU General Public License version 2 or later; see LICENSE.txt&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;admin@joomla.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;www.joomla.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;PLG_SEARCH_CATEGORIES_XML_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;files&amp;gt;&lt;br /&gt;
		&amp;lt;filename plugin=&amp;quot;categories&amp;quot;&amp;gt;categories.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;languages&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_search_categories.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
	&amp;lt;/languages&amp;gt;&lt;br /&gt;
	&amp;lt;config&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_limit&amp;quot; type=&amp;quot;text&amp;quot;&lt;br /&gt;
					default=&amp;quot;50&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL&amp;quot;&lt;br /&gt;
					size=&amp;quot;5&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_content&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ALL_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ALL_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;field name=&amp;quot;search_archived&amp;quot; type=&amp;quot;radio&amp;quot;&lt;br /&gt;
					default=&amp;quot;0&amp;quot;&lt;br /&gt;
					description=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_DESC&amp;quot;&lt;br /&gt;
					label=&amp;quot;JFIELD_PLG_SEARCH_ARCHIVED_LABEL&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOFF&amp;lt;/option&amp;gt;&lt;br /&gt;
					&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JON&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как можно заметить, он похожа на другие инсталляционные XML файлы для Joomla!. Нужно только обратить внимание на запись &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; в разделе &amp;lt;code&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/code&amp;gt;, а также на дополнительную информацию в разделе &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; . Эта информация сообщает Joomla!, в какую папку копировать файл и в какую группу будет добавлен плагин.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин, который реагирует на существующие события ядра, атрибут &amp;lt;code&amp;gt;group=&amp;quot;xxx&amp;quot;&amp;lt;/code&amp;gt; должен быть изменен в соответствии с именем уже существующей папки для события, которое вы хотите использовать. Например, &amp;lt;code&amp;gt;group=&amp;quot;authentication&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;group=&amp;quot;user&amp;quot;&amp;lt;/code&amp;gt;. Смотрите [[S:MyLanguage/Plugin/Events|Plugin/Events]] полный список существующих категорий событий. При создании нового плагина важно, чтобы его название было уникальным, и чтобы он не конфликтовал с уже существующими плагинами, которые могут реагировать на то же событие, какое используете вы.&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин реагировать на неосновные системные события вашего выбора для &amp;lt;code&amp;gt;группы=&amp;quot;ХХХ&amp;quot;&amp;lt;/code&amp;gt; тег должен отличаться от любого из существующих базовых категорий.&lt;br /&gt;
&lt;br /&gt;
Совет: если вы добавляете атбибут &amp;lt;code&amp;gt;method=&amp;quot;upgrade&amp;quot; &amp;lt;/code&amp;gt; к тэгу &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;, то плагин можно будет устанавливать без удаления предыдущей версии. Все существующие файлы будут перезаписаны, но оставшиеся файлы удалены не будут..&lt;br /&gt;
&lt;br /&gt;
=== Создание плагинов ===&lt;br /&gt;
Объектно-ориентированный подход к написанию плагинов включает в себя создание подклассов от [http://api.joomla.org/Joomla-Platform/Plugin/JPlugin.html JPlugin], базового класса, реализующего основные свойства плагинов. Для ваших методов доступны следующие свойства:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;params&amp;lt;/code&amp;gt;: the [[S:MyLanguage/Parameter|parameters]] set for this plugin by the administrator&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_name&amp;lt;/code&amp;gt;: имя плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;_type&amp;lt;/code&amp;gt;: группа (тип) плагина&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;db&amp;lt;/code&amp;gt;: объект базы данных (since {{JVer|3.1}})&lt;br /&gt;
* &amp;lt;code&amp;gt;$this-&amp;gt;app&amp;lt;/code&amp;gt;: объект приложения (since {{JVer|3.1}})&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В следующем примере &amp;lt;code&amp;gt;&amp;lt;PluginGroup&amp;gt;&amp;lt;/code&amp;gt; представляет группу (тип) плагина, а &amp;lt;code&amp;gt;&amp;lt;PluginName&amp;gt;&amp;lt;/code&amp;gt; его название. Обратите внимание, что имена класса и функции в PHP не чувствительны к регистру.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die;&lt;br /&gt;
&lt;br /&gt;
class plg&amp;lt;PluginGroup&amp;gt;&amp;lt;PluginName&amp;gt; extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Load the language file on instantiation. Note this is only available in Joomla 3.1 and higher.&lt;br /&gt;
	 * If you want to support 3.0 series you must override the constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var    boolean&lt;br /&gt;
	 * @since  3.1&lt;br /&gt;
	 */&lt;br /&gt;
	protected $autoloadLanguage = true;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Plugin method with the same name as the event will be called automatically.&lt;br /&gt;
	 */&lt;br /&gt;
	 function &amp;lt;EventName&amp;gt;()&lt;br /&gt;
	 {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Plugin code goes here.&lt;br /&gt;
		 * You can access database and application objects and parameters via $this-&amp;gt;db,&lt;br /&gt;
		 * $this-&amp;gt;app and $this-&amp;gt;params respectively&lt;br /&gt;
		 */&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Использования плагинов в коде ===&lt;br /&gt;
Теперь, когда вы создали свой плагин, то вам наверняка захочется его вызвать. Но необязательно, ядро Joomla! имеет набор встроенных событий, которые вы пожете использовать для запуска плагина. Тогда нижеописанное делать не нужно:&lt;br /&gt;
&lt;br /&gt;
Чтобы запустить событие, используйте следующий код:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher = JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger( &#039;&amp;lt;EventName&amp;gt;&#039;, &amp;lt;ParameterArray&amp;gt; );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что параметры должны передаваться в массиве. Функция же в плагине будет получить параметры как отдельные значения. Возвращаемое значение будет состоять из массив возвращаемых значений из разных плагинов (поэтому он также может содержать многоуровневые массивы). Возвращаться будет массив значений из разных плагинов (этот массив может быть многоуровневым).&lt;br /&gt;
&lt;br /&gt;
Если вы создаете плагин для нового события, а не для встроенного события ядра. то не забудьте активировать плагин после установки. Перед ссылкой на ваш новый плагин должна стоять команда &amp;lt;code&amp;gt;JPluginHelper::importPlugin()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/Page_display_title/ru&amp;diff=445191</id>
		<title>Translations:J3.x:Creating a Plugin for Joomla/Page display title/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_Plugin_for_Joomla/Page_display_title/ru&amp;diff=445191"/>
		<updated>2017-09-19T03:43:46Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Создание плагина для Joomla&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Adding_Form_Fields/ru&amp;diff=371496</id>
		<title>J3.x:Creating a simple module/Adding Form Fields/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Adding_Form_Fields/ru&amp;diff=371496"/>
		<updated>2017-03-14T10:30:13Z</updated>

		<summary type="html">&lt;p&gt;Leo240: 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;
{{J3.x:Creating_a_simple_module/ru}}&lt;br /&gt;
Поля формы дают много возможностей по настройке в Joomla и для модулей являются единственным способом, позволяющим пользователю настроить их для нужд своего сайта.&lt;br /&gt;
&lt;br /&gt;
== Добавление полей формы к модулю ==&lt;br /&gt;
In this case we are going to extend our previous example using the database to provide a list of languages for the user to select from. To allow this to happen we will use the SQL form field type (full details for this on the [[S:MyLanguage/SQL_form_field_type|SQL Form Field]] docs page).&lt;br /&gt;
&lt;br /&gt;
First of all we are going to add a form field into our xml file. Remember those config tags that we added in earlier? Well now inside these tags we are going to add the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;field&lt;br /&gt;
               name=&amp;quot;lang&amp;quot;&lt;br /&gt;
               type=&amp;quot;sql&amp;quot;&lt;br /&gt;
               default=&amp;quot;1&amp;quot;&lt;br /&gt;
               label=&amp;quot;Select a language&amp;quot;&lt;br /&gt;
               query=&amp;quot;SELECT id AS value, lang FROM #__helloworld&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/fields&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This selects the languages from the database table and allows the user to choose which one from a select element.&lt;br /&gt;
&lt;br /&gt;
If you were to install the module as it is now you would see if you were to access the module in the backend of Joomla that a dropdown had appeared (although picking an option won&#039;t affect the module at the moment).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note:&#039;&#039; The form field parameters are stored for each module in the #__modules table under the params field as json encoded string.&lt;br /&gt;
&lt;br /&gt;
Now lets make the form field do something!&lt;br /&gt;
&lt;br /&gt;
Lets go into the mod_helloworld.php and retrieve the parameter (note you &#039;&#039;&#039;cannot&#039;&#039;&#039; retrieve the parameter in the helper), and then pass it into the helper function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
  * This retrieves the lang parameter we stored earlier. Note the second part&lt;br /&gt;
  * which states to use the default value of 1 if the parameter cannot be&lt;br /&gt;
  * retrieved for some reason&lt;br /&gt;
**/&lt;br /&gt;
$language = $params-&amp;gt;get(&#039;lang&#039;, &#039;1&#039;);&lt;br /&gt;
$hello    = modHelloWorldHelper::getHello( $language );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets edit our database query in the helper file to reflect our parameter choice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Obtain a database connection&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
// Retrieve the shout - note we are now retrieving the id not the lang field.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
            -&amp;gt;select($db-&amp;gt;quoteName(&#039;hello&#039;))&lt;br /&gt;
            -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;))&lt;br /&gt;
            -&amp;gt;where(&#039;id = &#039;. $db-&amp;gt;Quote($params));&lt;br /&gt;
// Prepare the query&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
// Load the row.&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
// Return the Hello&lt;br /&gt;
return $result;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Form fields give the user an easy way to customise the module to their sites settings. This allows the modules scope to be increased as well for many languages and applications.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Using_the_Database|Prev: Using the Database|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Adding_Auto_Update|Next: Adding Auto Update|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Tutorials in a Series]]&lt;br /&gt;
[[Category:Module Development]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Adding_Form_Fields/3/ru&amp;diff=371495</id>
		<title>Translations:J3.x:Creating a simple module/Adding Form Fields/3/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Adding_Form_Fields/3/ru&amp;diff=371495"/>
		<updated>2017-03-14T10:30:13Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;== Добавление полей формы к модулю ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Добавление полей формы к модулю ==&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Adding_Form_Fields/ru&amp;diff=371494</id>
		<title>J3.x:Creating a simple module/Adding Form Fields/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Adding_Form_Fields/ru&amp;diff=371494"/>
		<updated>2017-03-14T10:29:34Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;Поля формы дают много возможностей по настройке в Joomla и для модулей являются единственным спос...&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;
{{J3.x:Creating_a_simple_module/ru}}&lt;br /&gt;
Поля формы дают много возможностей по настройке в Joomla и для модулей являются единственным способом, позволяющим пользователю настроить их для нужд своего сайта.&lt;br /&gt;
&lt;br /&gt;
== Adding Form Fields to the module ==&lt;br /&gt;
In this case we are going to extend our previous example using the database to provide a list of languages for the user to select from. To allow this to happen we will use the SQL form field type (full details for this on the [[S:MyLanguage/SQL_form_field_type|SQL Form Field]] docs page).&lt;br /&gt;
&lt;br /&gt;
First of all we are going to add a form field into our xml file. Remember those config tags that we added in earlier? Well now inside these tags we are going to add the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;field&lt;br /&gt;
               name=&amp;quot;lang&amp;quot;&lt;br /&gt;
               type=&amp;quot;sql&amp;quot;&lt;br /&gt;
               default=&amp;quot;1&amp;quot;&lt;br /&gt;
               label=&amp;quot;Select a language&amp;quot;&lt;br /&gt;
               query=&amp;quot;SELECT id AS value, lang FROM #__helloworld&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/fields&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This selects the languages from the database table and allows the user to choose which one from a select element.&lt;br /&gt;
&lt;br /&gt;
If you were to install the module as it is now you would see if you were to access the module in the backend of Joomla that a dropdown had appeared (although picking an option won&#039;t affect the module at the moment).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note:&#039;&#039; The form field parameters are stored for each module in the #__modules table under the params field as json encoded string.&lt;br /&gt;
&lt;br /&gt;
Now lets make the form field do something!&lt;br /&gt;
&lt;br /&gt;
Lets go into the mod_helloworld.php and retrieve the parameter (note you &#039;&#039;&#039;cannot&#039;&#039;&#039; retrieve the parameter in the helper), and then pass it into the helper function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
  * This retrieves the lang parameter we stored earlier. Note the second part&lt;br /&gt;
  * which states to use the default value of 1 if the parameter cannot be&lt;br /&gt;
  * retrieved for some reason&lt;br /&gt;
**/&lt;br /&gt;
$language = $params-&amp;gt;get(&#039;lang&#039;, &#039;1&#039;);&lt;br /&gt;
$hello    = modHelloWorldHelper::getHello( $language );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets edit our database query in the helper file to reflect our parameter choice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Obtain a database connection&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
// Retrieve the shout - note we are now retrieving the id not the lang field.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
            -&amp;gt;select($db-&amp;gt;quoteName(&#039;hello&#039;))&lt;br /&gt;
            -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;))&lt;br /&gt;
            -&amp;gt;where(&#039;id = &#039;. $db-&amp;gt;Quote($params));&lt;br /&gt;
// Prepare the query&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
// Load the row.&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
// Return the Hello&lt;br /&gt;
return $result;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Form fields give the user an easy way to customise the module to their sites settings. This allows the modules scope to be increased as well for many languages and applications.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Using_the_Database|Prev: Using the Database|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Adding_Auto_Update|Next: Adding Auto Update|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Tutorials in a Series]]&lt;br /&gt;
[[Category:Module Development]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Adding_Form_Fields/2/ru&amp;diff=371493</id>
		<title>Translations:J3.x:Creating a simple module/Adding Form Fields/2/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Adding_Form_Fields/2/ru&amp;diff=371493"/>
		<updated>2017-03-14T10:29:33Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;Поля формы дают много возможностей по настройке в Joomla и для модулей являются единственным спос...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Поля формы дают много возможностей по настройке в Joomla и для модулей являются единственным способом, позволяющим пользователю настроить их для нужд своего сайта.&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Adding_Form_Fields/ru&amp;diff=371492</id>
		<title>J3.x:Creating a simple module/Adding Form Fields/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Adding_Form_Fields/ru&amp;diff=371492"/>
		<updated>2017-03-14T10:23:44Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;ru&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;
{{J3.x:Creating_a_simple_module/ru}}&lt;br /&gt;
Form fields give a great deal of customisation in Joomla and for modules are the sole way of allowing the user to tweak the module to the needs of their site.&lt;br /&gt;
&lt;br /&gt;
== Adding Form Fields to the module ==&lt;br /&gt;
In this case we are going to extend our previous example using the database to provide a list of languages for the user to select from. To allow this to happen we will use the SQL form field type (full details for this on the [[S:MyLanguage/SQL_form_field_type|SQL Form Field]] docs page).&lt;br /&gt;
&lt;br /&gt;
First of all we are going to add a form field into our xml file. Remember those config tags that we added in earlier? Well now inside these tags we are going to add the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;field&lt;br /&gt;
               name=&amp;quot;lang&amp;quot;&lt;br /&gt;
               type=&amp;quot;sql&amp;quot;&lt;br /&gt;
               default=&amp;quot;1&amp;quot;&lt;br /&gt;
               label=&amp;quot;Select a language&amp;quot;&lt;br /&gt;
               query=&amp;quot;SELECT id AS value, lang FROM #__helloworld&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/fields&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This selects the languages from the database table and allows the user to choose which one from a select element.&lt;br /&gt;
&lt;br /&gt;
If you were to install the module as it is now you would see if you were to access the module in the backend of Joomla that a dropdown had appeared (although picking an option won&#039;t affect the module at the moment).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note:&#039;&#039; The form field parameters are stored for each module in the #__modules table under the params field as json encoded string.&lt;br /&gt;
&lt;br /&gt;
Now lets make the form field do something!&lt;br /&gt;
&lt;br /&gt;
Lets go into the mod_helloworld.php and retrieve the parameter (note you &#039;&#039;&#039;cannot&#039;&#039;&#039; retrieve the parameter in the helper), and then pass it into the helper function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
  * This retrieves the lang parameter we stored earlier. Note the second part&lt;br /&gt;
  * which states to use the default value of 1 if the parameter cannot be&lt;br /&gt;
  * retrieved for some reason&lt;br /&gt;
**/&lt;br /&gt;
$language = $params-&amp;gt;get(&#039;lang&#039;, &#039;1&#039;);&lt;br /&gt;
$hello    = modHelloWorldHelper::getHello( $language );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets edit our database query in the helper file to reflect our parameter choice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Obtain a database connection&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
// Retrieve the shout - note we are now retrieving the id not the lang field.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
            -&amp;gt;select($db-&amp;gt;quoteName(&#039;hello&#039;))&lt;br /&gt;
            -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;))&lt;br /&gt;
            -&amp;gt;where(&#039;id = &#039;. $db-&amp;gt;Quote($params));&lt;br /&gt;
// Prepare the query&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
// Load the row.&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
// Return the Hello&lt;br /&gt;
return $result;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Form fields give the user an easy way to customise the module to their sites settings. This allows the modules scope to be increased as well for many languages and applications.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Using_the_Database|Prev: Using the Database|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Adding_Auto_Update|Next: Adding Auto Update|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Tutorials in a Series]]&lt;br /&gt;
[[Category:Module Development]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Adding_Form_Fields/1/ru&amp;diff=371491</id>
		<title>Translations:J3.x:Creating a simple module/Adding Form Fields/1/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Adding_Form_Fields/1/ru&amp;diff=371491"/>
		<updated>2017-03-14T10:23:44Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;ru&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ru&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Adding_Form_Fields/ru&amp;diff=371490</id>
		<title>J3.x:Creating a simple module/Adding Form Fields/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Adding_Form_Fields/ru&amp;diff=371490"/>
		<updated>2017-03-14T10:23:07Z</updated>

		<summary type="html">&lt;p&gt;Leo240: 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;
{{J3.x:Creating_a_simple_module/en}}&lt;br /&gt;
Form fields give a great deal of customisation in Joomla and for modules are the sole way of allowing the user to tweak the module to the needs of their site.&lt;br /&gt;
&lt;br /&gt;
== Adding Form Fields to the module ==&lt;br /&gt;
In this case we are going to extend our previous example using the database to provide a list of languages for the user to select from. To allow this to happen we will use the SQL form field type (full details for this on the [[S:MyLanguage/SQL_form_field_type|SQL Form Field]] docs page).&lt;br /&gt;
&lt;br /&gt;
First of all we are going to add a form field into our xml file. Remember those config tags that we added in earlier? Well now inside these tags we are going to add the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;field&lt;br /&gt;
               name=&amp;quot;lang&amp;quot;&lt;br /&gt;
               type=&amp;quot;sql&amp;quot;&lt;br /&gt;
               default=&amp;quot;1&amp;quot;&lt;br /&gt;
               label=&amp;quot;Select a language&amp;quot;&lt;br /&gt;
               query=&amp;quot;SELECT id AS value, lang FROM #__helloworld&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/fields&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This selects the languages from the database table and allows the user to choose which one from a select element.&lt;br /&gt;
&lt;br /&gt;
If you were to install the module as it is now you would see if you were to access the module in the backend of Joomla that a dropdown had appeared (although picking an option won&#039;t affect the module at the moment).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note:&#039;&#039; The form field parameters are stored for each module in the #__modules table under the params field as json encoded string.&lt;br /&gt;
&lt;br /&gt;
Now lets make the form field do something!&lt;br /&gt;
&lt;br /&gt;
Lets go into the mod_helloworld.php and retrieve the parameter (note you &#039;&#039;&#039;cannot&#039;&#039;&#039; retrieve the parameter in the helper), and then pass it into the helper function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
  * This retrieves the lang parameter we stored earlier. Note the second part&lt;br /&gt;
  * which states to use the default value of 1 if the parameter cannot be&lt;br /&gt;
  * retrieved for some reason&lt;br /&gt;
**/&lt;br /&gt;
$language = $params-&amp;gt;get(&#039;lang&#039;, &#039;1&#039;);&lt;br /&gt;
$hello    = modHelloWorldHelper::getHello( $language );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets edit our database query in the helper file to reflect our parameter choice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Obtain a database connection&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
// Retrieve the shout - note we are now retrieving the id not the lang field.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
            -&amp;gt;select($db-&amp;gt;quoteName(&#039;hello&#039;))&lt;br /&gt;
            -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;))&lt;br /&gt;
            -&amp;gt;where(&#039;id = &#039;. $db-&amp;gt;Quote($params));&lt;br /&gt;
// Prepare the query&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
// Load the row.&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
// Return the Hello&lt;br /&gt;
return $result;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Form fields give the user an easy way to customise the module to their sites settings. This allows the modules scope to be increased as well for many languages and applications.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Using_the_Database|Prev: Using the Database|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Adding_Auto_Update|Next: Adding Auto Update|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Tutorials in a Series]]&lt;br /&gt;
[[Category:Module Development]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Adding_Form_Fields/Page_display_title/ru&amp;diff=371489</id>
		<title>Translations:J3.x:Creating a simple module/Adding Form Fields/Page display title/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Adding_Form_Fields/Page_display_title/ru&amp;diff=371489"/>
		<updated>2017-03-14T10:23:07Z</updated>

		<summary type="html">&lt;p&gt;Leo240: Created page with &amp;quot;Добавление полей формы&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Добавление полей формы&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Using_the_Database/ru&amp;diff=371488</id>
		<title>J3.x:Creating a simple module/Using the Database/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Using_the_Database/ru&amp;diff=371488"/>
		<updated>2017-03-14T10:20:18Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &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;
{{J3.x:Creating_a_simple_module/ru}}&lt;br /&gt;
Многие модули в Joomla требуют использования базы данных. В этом учебнике предполагается, что вы уже понимаете основы использования класса JDatabase. В противном случае, обратитесь к документации на [[S:MyLanguage/Accessing_the_database_using_JDatabase/3.1|доступ к базе данных, с использованием JDatabase]], прежде чем продолжить этот урок.&lt;br /&gt;
&lt;br /&gt;
== Создание таблицы при установке ==&lt;br /&gt;
Чтобы создать XML-таблицу при установке мы собираемся добавить следующие строки в &amp;lt;tt&amp;gt;&#039;&#039;mod_helloworld.xml&#039;&#039;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;install&amp;gt;&lt;br /&gt;
     &amp;lt;sql&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/mysql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;sqlazure&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/sqlazure/install.sqlazure.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
     &amp;lt;/sql&amp;gt;&lt;br /&gt;
&amp;lt;/install&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;uninstall&amp;gt;&lt;br /&gt;
     &amp;lt;sql&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/mysql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;sqlazure&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/sqlazure/uninstall.sqlazure.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
     &amp;lt;/sql&amp;gt;&lt;br /&gt;
&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;update&amp;gt; &lt;br /&gt;
    &amp;lt;schemas&amp;gt;&lt;br /&gt;
        &amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/mysql/updates&amp;lt;/schemapath&amp;gt; &lt;br /&gt;
	&amp;lt;schemapath type=&amp;quot;sqlazure&amp;quot;&amp;gt;sql/sqlazure/updates&amp;lt;/schemapath&amp;gt; &lt;br /&gt;
    &amp;lt;/schemas&amp;gt; &lt;br /&gt;
&amp;lt;/update&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом коде есть 3 секции:&lt;br /&gt;
*Тег &amp;quot;install&amp;quot; добавляет таблицу базы данных.&lt;br /&gt;
*Тег &amp;quot;uninstall&amp;quot; удаляет таблицу базы данных, если модуль удаляется. Обратите внимание, что не все модули захотят использовать эту функцию (и это не обязательно).&lt;br /&gt;
*Тег &amp;quot;update&amp;quot; будет обновлять базы данных, если база данных должна быть изменена при обновлении модуля.&lt;br /&gt;
&lt;br /&gt;
Далее следует указать тег &amp;quot;folder&amp;quot; в разделе &amp;quot;files&amp;quot;, чтобы гарантировать, что SQL-файлы скопированы с установочного zip-архива:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что у нас есть схемы и для MySQL и для Microsoft SQL - опять же вы можете выбрать, будете ли вы адаптировать свой модуль для одной из этих систем или же для обеих .&lt;br /&gt;
&lt;br /&gt;
В этом примере мы просто покажем пример файлов для базы данных MySQL. Создание файлов для Microsoft SQL Server будет оставлено в качестве упражнения для самостоятельной тренировки читателя.&lt;br /&gt;
&lt;br /&gt;
В нашем файле &amp;lt;tt&amp;gt;install.mysql.utf8.sql&amp;lt;/tt&amp;gt; мы создадим таблицу и поместим некоторые приветствия в нее.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `#__helloworld` (&lt;br /&gt;
	`id` int(10) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
	`hello` text NOT NULL,&lt;br /&gt;
	`lang` varchar(25) NOT NULL,&lt;br /&gt;
&lt;br /&gt;
  PRIMARY KEY (`id`)&lt;br /&gt;
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Hello World&#039;, &#039;en-GB&#039;);&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Hola Mundo&#039;, &#039;es-ES&#039;);&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Bonjour tout le monde&#039;, &#039;fr-FR&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле uninstall мы просто удалим таблицу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP TABLE IF EXISTS `#__helloworld`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally we&#039;ll just leave a placeholder in the updates file. There is an SQL file for each component version. Each file name must match the version string in the manifest file for that version. Joomla uses this string to determine which SQL files(s) to execute, and in what order they will be executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Важное Замечание:&#039;&#039; эти файлы также используются, чтобы установить номер версии в таблице #__schemas. Этот номер версии должен присутствовать в текущей версии компонента для того, чтобы новые файлы SQL были запущены во время обновления. Например, если у вас версия 1.0 и вы обновляетесь до версии 1.1, файл 1.1.sql  не будет выполнен, если файла 1.0.sql нет в релизе 1.0. По этой причине, это хорошая практика - иметь файл обновления SQL для каждой версии, даже если нет изменений SQL в этой версии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
# Placeholder file for database changes for version 1.0.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание запроса в файле хелпера ==&lt;br /&gt;
При установке нашего модуля мы должны заметить, что теперь у нас есть таблица helloworld в нашей базе данных с нашими приветствиями в ней. Теперь мы должны извлечь это из базы данных для отображения пользователю. Сейчас мы будем вносить изменения в функцию &amp;quot;getHello&amp;quot;, которую мы разместили в файле хелпера в последней части.&lt;br /&gt;
&lt;br /&gt;
Пока что мы будем не будем рассматривать использование полей формы для выбора приветствия и просто получим английскую версию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Obtain a database connection&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
// Retrieve the shout&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
            -&amp;gt;select($db-&amp;gt;quoteName(&#039;hello&#039;))&lt;br /&gt;
            -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;))&lt;br /&gt;
            -&amp;gt;where(&#039;lang = &#039; . $db-&amp;gt;Quote(&#039;en-GB&#039;));&lt;br /&gt;
// Prepare the query&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
// Load the row.&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
// Return the Hello&lt;br /&gt;
return $result;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
Используя модули с подключениями к базе данных для Joomla! это довольно простой и понятный процесс. С помощью методов, описанных в этом руководстве, очень многие модули могут быть разработаны без особых хлопот, с обновлениями простыми для управления.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Developing_a_Basic_Module|Назад: Разработка базового модуля|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Adding_Form_Fields|Далее: Добавление полей формы|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials/ru|Урок]]&lt;br /&gt;
[[Category:Tutorials in a Series/ru|Уроки в этой серии]]&lt;br /&gt;
[[Category:Module Development/ru|Разработка модуля]]&lt;br /&gt;
[[Category:Beginner Development/ru|Разработка для начинающих]]&lt;br /&gt;
[[Category:Joomla! 3.x/ru|Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0/ru|Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1/ru|Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2/ru|Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3/ru|Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4/ru|Joomla! 3.4]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Using_the_Database/13/ru&amp;diff=371487</id>
		<title>Translations:J3.x:Creating a simple module/Using the Database/13/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Using_the_Database/13/ru&amp;diff=371487"/>
		<updated>2017-03-14T10:20:17Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Важное Замечание:&#039;&#039; эти файлы также используются, чтобы установить номер версии в таблице #__schemas. Этот номер версии должен присутствовать в текущей версии компонента для того, чтобы новые файлы SQL были запущены во время обновления. Например, если у вас версия 1.0 и вы обновляетесь до версии 1.1, файл 1.1.sql  не будет выполнен, если файла 1.0.sql нет в релизе 1.0. По этой причине, это хорошая практика - иметь файл обновления SQL для каждой версии, даже если нет изменений SQL в этой версии.&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Using_the_Database/ru&amp;diff=371486</id>
		<title>J3.x:Creating a simple module/Using the Database/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Using_the_Database/ru&amp;diff=371486"/>
		<updated>2017-03-14T10:18:15Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &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;
{{J3.x:Creating_a_simple_module/ru}}&lt;br /&gt;
Многие модули в Joomla требуют использования базы данных. В этом учебнике предполагается, что вы уже понимаете основы использования класса JDatabase. В противном случае, обратитесь к документации на [[S:MyLanguage/Accessing_the_database_using_JDatabase/3.1|доступ к базе данных, с использованием JDatabase]], прежде чем продолжить этот урок.&lt;br /&gt;
&lt;br /&gt;
== Создание таблицы при установке ==&lt;br /&gt;
Чтобы создать XML-таблицу при установке мы собираемся добавить следующие строки в &amp;lt;tt&amp;gt;&#039;&#039;mod_helloworld.xml&#039;&#039;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;install&amp;gt;&lt;br /&gt;
     &amp;lt;sql&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/mysql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;sqlazure&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/sqlazure/install.sqlazure.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
     &amp;lt;/sql&amp;gt;&lt;br /&gt;
&amp;lt;/install&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;uninstall&amp;gt;&lt;br /&gt;
     &amp;lt;sql&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/mysql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;sqlazure&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/sqlazure/uninstall.sqlazure.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
     &amp;lt;/sql&amp;gt;&lt;br /&gt;
&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;update&amp;gt; &lt;br /&gt;
    &amp;lt;schemas&amp;gt;&lt;br /&gt;
        &amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/mysql/updates&amp;lt;/schemapath&amp;gt; &lt;br /&gt;
	&amp;lt;schemapath type=&amp;quot;sqlazure&amp;quot;&amp;gt;sql/sqlazure/updates&amp;lt;/schemapath&amp;gt; &lt;br /&gt;
    &amp;lt;/schemas&amp;gt; &lt;br /&gt;
&amp;lt;/update&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом коде есть 3 секции:&lt;br /&gt;
*Тег &amp;quot;install&amp;quot; добавляет таблицу базы данных.&lt;br /&gt;
*Тег &amp;quot;uninstall&amp;quot; удаляет таблицу базы данных, если модуль удаляется. Обратите внимание, что не все модули захотят использовать эту функцию (и это не обязательно).&lt;br /&gt;
*Тег &amp;quot;update&amp;quot; будет обновлять базы данных, если база данных должна быть изменена при обновлении модуля.&lt;br /&gt;
&lt;br /&gt;
Далее следует указать тег &amp;quot;folder&amp;quot; в разделе &amp;quot;files&amp;quot;, чтобы гарантировать, что SQL-файлы скопированы с установочного zip-архива:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что у нас есть схемы и для MySQL и для Microsoft SQL - опять же вы можете выбрать, будете ли вы адаптировать свой модуль для одной из этих систем или же для обеих .&lt;br /&gt;
&lt;br /&gt;
В этом примере мы просто покажем пример файлов для базы данных MySQL. Создание файлов для Microsoft SQL Server будет оставлено в качестве упражнения для самостоятельной тренировки читателя.&lt;br /&gt;
&lt;br /&gt;
В нашем файле &amp;lt;tt&amp;gt;install.mysql.utf8.sql&amp;lt;/tt&amp;gt; мы создадим таблицу и поместим некоторые приветствия в нее.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `#__helloworld` (&lt;br /&gt;
	`id` int(10) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
	`hello` text NOT NULL,&lt;br /&gt;
	`lang` varchar(25) NOT NULL,&lt;br /&gt;
&lt;br /&gt;
  PRIMARY KEY (`id`)&lt;br /&gt;
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Hello World&#039;, &#039;en-GB&#039;);&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Hola Mundo&#039;, &#039;es-ES&#039;);&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Bonjour tout le monde&#039;, &#039;fr-FR&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле uninstall мы просто удалим таблицу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP TABLE IF EXISTS `#__helloworld`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally we&#039;ll just leave a placeholder in the updates file. There is an SQL file for each component version. Each file name must match the version string in the manifest file for that version. Joomla uses this string to determine which SQL files(s) to execute, and in what order they will be executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Важное Замечание:&#039;&#039; эти файлы также используются, чтобы установить номер версии в таблице #__schemas. Этот номер версии должен присутствовать в текущей версии компонента для того, чтобы новые файлы SQL были запущены во время обновления. Например, если у вас версия 1.0 и вы обновляетесь до версии 1.1, файл 1.1.sql  не будет выполнен, если нет файла 1.0.sql нет в релизе 1.0. По этой причине, это хорошая практика, чтобы иметь файл обновления SQL для каждой версии, даже если нет изменений SQL в этой версии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
# Placeholder file for database changes for version 1.0.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание запроса в файле хелпера ==&lt;br /&gt;
При установке нашего модуля мы должны заметить, что теперь у нас есть таблица helloworld в нашей базе данных с нашими приветствиями в ней. Теперь мы должны извлечь это из базы данных для отображения пользователю. Сейчас мы будем вносить изменения в функцию &amp;quot;getHello&amp;quot;, которую мы разместили в файле хелпера в последней части.&lt;br /&gt;
&lt;br /&gt;
Пока что мы будем не будем рассматривать использование полей формы для выбора приветствия и просто получим английскую версию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Obtain a database connection&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
// Retrieve the shout&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
            -&amp;gt;select($db-&amp;gt;quoteName(&#039;hello&#039;))&lt;br /&gt;
            -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;))&lt;br /&gt;
            -&amp;gt;where(&#039;lang = &#039; . $db-&amp;gt;Quote(&#039;en-GB&#039;));&lt;br /&gt;
// Prepare the query&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
// Load the row.&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
// Return the Hello&lt;br /&gt;
return $result;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
Используя модули с подключениями к базе данных для Joomla! это довольно простой и понятный процесс. С помощью методов, описанных в этом руководстве, очень многие модули могут быть разработаны без особых хлопот, с обновлениями простыми для управления.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Developing_a_Basic_Module|Назад: Разработка базового модуля|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Adding_Form_Fields|Далее: Добавление полей формы|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials/ru|Урок]]&lt;br /&gt;
[[Category:Tutorials in a Series/ru|Уроки в этой серии]]&lt;br /&gt;
[[Category:Module Development/ru|Разработка модуля]]&lt;br /&gt;
[[Category:Beginner Development/ru|Разработка для начинающих]]&lt;br /&gt;
[[Category:Joomla! 3.x/ru|Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0/ru|Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1/ru|Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2/ru|Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3/ru|Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4/ru|Joomla! 3.4]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Using_the_Database/13/ru&amp;diff=371485</id>
		<title>Translations:J3.x:Creating a simple module/Using the Database/13/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Using_the_Database/13/ru&amp;diff=371485"/>
		<updated>2017-03-14T10:18:14Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Важное Замечание:&#039;&#039; эти файлы также используются, чтобы установить номер версии в таблице #__schemas. Этот номер версии должен присутствовать в текущей версии компонента для того, чтобы новые файлы SQL были запущены во время обновления. Например, если у вас версия 1.0 и вы обновляетесь до версии 1.1, файл 1.1.sql  не будет выполнен, если нет файла 1.0.sql нет в релизе 1.0. По этой причине, это хорошая практика, чтобы иметь файл обновления SQL для каждой версии, даже если нет изменений SQL в этой версии.&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Using_the_Database/ru&amp;diff=371484</id>
		<title>J3.x:Creating a simple module/Using the Database/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Using_the_Database/ru&amp;diff=371484"/>
		<updated>2017-03-14T10:16:03Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &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;
{{J3.x:Creating_a_simple_module/ru}}&lt;br /&gt;
Многие модули в Joomla требуют использования базы данных. В этом учебнике предполагается, что вы уже понимаете основы использования класса JDatabase. В противном случае, обратитесь к документации на [[S:MyLanguage/Accessing_the_database_using_JDatabase/3.1|доступ к базе данных, с использованием JDatabase]], прежде чем продолжить этот урок.&lt;br /&gt;
&lt;br /&gt;
== Создание таблицы при установке ==&lt;br /&gt;
Чтобы создать XML-таблицу при установке мы собираемся добавить следующие строки в &amp;lt;tt&amp;gt;&#039;&#039;mod_helloworld.xml&#039;&#039;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;install&amp;gt;&lt;br /&gt;
     &amp;lt;sql&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/mysql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;sqlazure&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/sqlazure/install.sqlazure.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
     &amp;lt;/sql&amp;gt;&lt;br /&gt;
&amp;lt;/install&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;uninstall&amp;gt;&lt;br /&gt;
     &amp;lt;sql&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/mysql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;sqlazure&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/sqlazure/uninstall.sqlazure.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
     &amp;lt;/sql&amp;gt;&lt;br /&gt;
&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;update&amp;gt; &lt;br /&gt;
    &amp;lt;schemas&amp;gt;&lt;br /&gt;
        &amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/mysql/updates&amp;lt;/schemapath&amp;gt; &lt;br /&gt;
	&amp;lt;schemapath type=&amp;quot;sqlazure&amp;quot;&amp;gt;sql/sqlazure/updates&amp;lt;/schemapath&amp;gt; &lt;br /&gt;
    &amp;lt;/schemas&amp;gt; &lt;br /&gt;
&amp;lt;/update&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом коде есть 3 секции:&lt;br /&gt;
*Тег &amp;quot;install&amp;quot; добавляет таблицу базы данных.&lt;br /&gt;
*Тег &amp;quot;uninstall&amp;quot; удаляет таблицу базы данных, если модуль удаляется. Обратите внимание, что не все модули захотят использовать эту функцию (и это не обязательно).&lt;br /&gt;
*Тег &amp;quot;update&amp;quot; будет обновлять базы данных, если база данных должна быть изменена при обновлении модуля.&lt;br /&gt;
&lt;br /&gt;
Далее следует указать тег &amp;quot;folder&amp;quot; в разделе &amp;quot;files&amp;quot;, чтобы гарантировать, что SQL-файлы скопированы с установочного zip-архива:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что у нас есть схемы и для MySQL и для Microsoft SQL - опять же вы можете выбрать, будете ли вы адаптировать свой модуль для одной из этих систем или же для обеих .&lt;br /&gt;
&lt;br /&gt;
В этом примере мы просто покажем пример файлов для базы данных MySQL. Создание файлов для Microsoft SQL Server будет оставлено в качестве упражнения для самостоятельной тренировки читателя.&lt;br /&gt;
&lt;br /&gt;
В нашем файле &amp;lt;tt&amp;gt;install.mysql.utf8.sql&amp;lt;/tt&amp;gt; мы создадим таблицу и поместим некоторые приветствия в нее.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `#__helloworld` (&lt;br /&gt;
	`id` int(10) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
	`hello` text NOT NULL,&lt;br /&gt;
	`lang` varchar(25) NOT NULL,&lt;br /&gt;
&lt;br /&gt;
  PRIMARY KEY (`id`)&lt;br /&gt;
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Hello World&#039;, &#039;en-GB&#039;);&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Hola Mundo&#039;, &#039;es-ES&#039;);&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Bonjour tout le monde&#039;, &#039;fr-FR&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле uninstall мы просто удалим таблицу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP TABLE IF EXISTS `#__helloworld`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally we&#039;ll just leave a placeholder in the updates file. There is an SQL file for each component version. Each file name must match the version string in the manifest file for that version. Joomla uses this string to determine which SQL files(s) to execute, and in what order they will be executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Important Note:|Важное Замечание&#039;&#039; эти файлы также используются, чтобы установить номер версии в таблице #__schemas. Этот номер версии должен присутствовать в текущей версии компонента для того, чтобы новые файлы SQL были запущены во время обновления. Например, если у вас версия 1.0 и вы обновляетесь до версии 1.1, файл 1.1.sql  не будет выполнен, если нет файла 1.0.sql нет в релизе 1.0. По этой причине, это хорошая практика, чтобы иметь файл обновления SQL для каждой версии, даже если нет изменений SQL в этой версии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
# Placeholder file for database changes for version 1.0.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание запроса в файле хелпера ==&lt;br /&gt;
При установке нашего модуля мы должны заметить, что теперь у нас есть таблица helloworld в нашей базе данных с нашими приветствиями в ней. Теперь мы должны извлечь это из базы данных для отображения пользователю. Сейчас мы будем вносить изменения в функцию &amp;quot;getHello&amp;quot;, которую мы разместили в файле хелпера в последней части.&lt;br /&gt;
&lt;br /&gt;
Пока что мы будем не будем рассматривать использование полей формы для выбора приветствия и просто получим английскую версию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Obtain a database connection&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
// Retrieve the shout&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
            -&amp;gt;select($db-&amp;gt;quoteName(&#039;hello&#039;))&lt;br /&gt;
            -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;))&lt;br /&gt;
            -&amp;gt;where(&#039;lang = &#039; . $db-&amp;gt;Quote(&#039;en-GB&#039;));&lt;br /&gt;
// Prepare the query&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
// Load the row.&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
// Return the Hello&lt;br /&gt;
return $result;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
Используя модули с подключениями к базе данных для Joomla! это довольно простой и понятный процесс. С помощью методов, описанных в этом руководстве, очень многие модули могут быть разработаны без особых хлопот, с обновлениями простыми для управления.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Developing_a_Basic_Module|Назад: Разработка базового модуля|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Adding_Form_Fields|Далее: Добавление полей формы|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials/ru|Урок]]&lt;br /&gt;
[[Category:Tutorials in a Series/ru|Уроки в этой серии]]&lt;br /&gt;
[[Category:Module Development/ru|Разработка модуля]]&lt;br /&gt;
[[Category:Beginner Development/ru|Разработка для начинающих]]&lt;br /&gt;
[[Category:Joomla! 3.x/ru|Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0/ru|Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1/ru|Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2/ru|Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3/ru|Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4/ru|Joomla! 3.4]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Using_the_Database/13/ru&amp;diff=371483</id>
		<title>Translations:J3.x:Creating a simple module/Using the Database/13/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Using_the_Database/13/ru&amp;diff=371483"/>
		<updated>2017-03-14T10:16:02Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Important Note:|Важное Замечание&#039;&#039; эти файлы также используются, чтобы установить номер версии в таблице #__schemas. Этот номер версии должен присутствовать в текущей версии компонента для того, чтобы новые файлы SQL были запущены во время обновления. Например, если у вас версия 1.0 и вы обновляетесь до версии 1.1, файл 1.1.sql  не будет выполнен, если нет файла 1.0.sql нет в релизе 1.0. По этой причине, это хорошая практика, чтобы иметь файл обновления SQL для каждой версии, даже если нет изменений SQL в этой версии.&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Using_the_Database/ru&amp;diff=371482</id>
		<title>J3.x:Creating a simple module/Using the Database/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Using_the_Database/ru&amp;diff=371482"/>
		<updated>2017-03-14T10:03:16Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &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;
{{J3.x:Creating_a_simple_module/ru}}&lt;br /&gt;
Многие модули в Joomla требуют использования базы данных. В этом учебнике предполагается, что вы уже понимаете основы использования класса JDatabase. В противном случае, обратитесь к документации на [[S:MyLanguage/Accessing_the_database_using_JDatabase/3.1|доступ к базе данных, с использованием JDatabase]], прежде чем продолжить этот урок.&lt;br /&gt;
&lt;br /&gt;
== Создание таблицы при установке ==&lt;br /&gt;
Чтобы создать XML-таблицу при установке мы собираемся добавить следующие строки в &amp;lt;tt&amp;gt;&#039;&#039;mod_helloworld.xml&#039;&#039;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;install&amp;gt;&lt;br /&gt;
     &amp;lt;sql&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/mysql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;sqlazure&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/sqlazure/install.sqlazure.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
     &amp;lt;/sql&amp;gt;&lt;br /&gt;
&amp;lt;/install&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;uninstall&amp;gt;&lt;br /&gt;
     &amp;lt;sql&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/mysql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
         &amp;lt;file driver=&amp;quot;sqlazure&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/sqlazure/uninstall.sqlazure.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
     &amp;lt;/sql&amp;gt;&lt;br /&gt;
&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;update&amp;gt; &lt;br /&gt;
    &amp;lt;schemas&amp;gt;&lt;br /&gt;
        &amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/mysql/updates&amp;lt;/schemapath&amp;gt; &lt;br /&gt;
	&amp;lt;schemapath type=&amp;quot;sqlazure&amp;quot;&amp;gt;sql/sqlazure/updates&amp;lt;/schemapath&amp;gt; &lt;br /&gt;
    &amp;lt;/schemas&amp;gt; &lt;br /&gt;
&amp;lt;/update&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом коде есть 3 секции:&lt;br /&gt;
*Тег &amp;quot;install&amp;quot; добавляет таблицу базы данных.&lt;br /&gt;
*Тег &amp;quot;uninstall&amp;quot; удаляет таблицу базы данных, если модуль удаляется. Обратите внимание, что не все модули захотят использовать эту функцию (и это не обязательно).&lt;br /&gt;
*Тег &amp;quot;update&amp;quot; будет обновлять базы данных, если база данных должна быть изменена при обновлении модуля.&lt;br /&gt;
&lt;br /&gt;
Далее следует указать тег &amp;quot;folder&amp;quot; в разделе &amp;quot;files&amp;quot;, чтобы гарантировать, что SQL-файлы скопированы с установочного zip-архива:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что у нас есть схемы и для MySQL и для Microsoft SQL - опять же вы можете выбрать, будете ли вы адаптировать свой модуль для одной из этих систем или же для обеих .&lt;br /&gt;
&lt;br /&gt;
В этом примере мы просто покажем пример файлов для базы данных MySQL. Создание файлов для Microsoft SQL Server будет оставлено в качестве упражнения для самостоятельной тренировки читателя.&lt;br /&gt;
&lt;br /&gt;
В нашем файле &amp;lt;tt&amp;gt;install.mysql.utf8.sql&amp;lt;/tt&amp;gt; мы создадим таблицу и поместим некоторые приветствия в нее.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `#__helloworld` (&lt;br /&gt;
	`id` int(10) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
	`hello` text NOT NULL,&lt;br /&gt;
	`lang` varchar(25) NOT NULL,&lt;br /&gt;
&lt;br /&gt;
  PRIMARY KEY (`id`)&lt;br /&gt;
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Hello World&#039;, &#039;en-GB&#039;);&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Hola Mundo&#039;, &#039;es-ES&#039;);&lt;br /&gt;
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES (&#039;Bonjour tout le monde&#039;, &#039;fr-FR&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле uninstall мы просто удалим таблицу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP TABLE IF EXISTS `#__helloworld`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally we&#039;ll just leave a placeholder in the updates file. There is an SQL file for each component version. Each file name must match the version string in the manifest file for that version. Joomla uses this string to determine which SQL files(s) to execute, and in what order they will be executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Important Note:&#039;&#039; эти файлы также используются, чтобы установить номер версии в таблице #__schemas. Этот номер версии должен присутствовать в текущей версии компонента для того, чтобы новые файлы SQL были запущены во время обновления. Например, если у вас версия 1.0 и вы обновляетесь до версии 1.1, файл 1.1.sql  не будет выполнен, если нет файла 1.0.sql нет в релизе 1.0. По этой причине, это хорошая практика, чтобы иметь файл обновления SQL для каждой версии, даже если нет изменений SQL в этой версии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
# Placeholder file for database changes for version 1.0.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание запроса в файле хелпера ==&lt;br /&gt;
При установке нашего модуля мы должны заметить, что теперь у нас есть таблица helloworld в нашей базе данных с нашими приветствиями в ней. Теперь мы должны извлечь это из базы данных для отображения пользователю. Сейчас мы будем вносить изменения в функцию &amp;quot;getHello&amp;quot;, которую мы разместили в файле хелпера в последней части.&lt;br /&gt;
&lt;br /&gt;
Пока что мы будем не будем рассматривать использование полей формы для выбора приветствия и просто получим английскую версию.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Obtain a database connection&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
// Retrieve the shout&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
            -&amp;gt;select($db-&amp;gt;quoteName(&#039;hello&#039;))&lt;br /&gt;
            -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;))&lt;br /&gt;
            -&amp;gt;where(&#039;lang = &#039; . $db-&amp;gt;Quote(&#039;en-GB&#039;));&lt;br /&gt;
// Prepare the query&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
// Load the row.&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
// Return the Hello&lt;br /&gt;
return $result;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
Используя модули с подключениями к базе данных для Joomla! это довольно простой и понятный процесс. С помощью методов, описанных в этом руководстве, очень многие модули могут быть разработаны без особых хлопот, с обновлениями простыми для управления.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Developing_a_Basic_Module|Назад: Разработка базового модуля|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Adding_Form_Fields|Далее: Добавление полей формы|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Tutorials/ru|Урок]]&lt;br /&gt;
[[Category:Tutorials in a Series/ru|Уроки в этой серии]]&lt;br /&gt;
[[Category:Module Development/ru|Разработка модуля]]&lt;br /&gt;
[[Category:Beginner Development/ru|Разработка для начинающих]]&lt;br /&gt;
[[Category:Joomla! 3.x/ru|Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0/ru|Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1/ru|Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2/ru|Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3/ru|Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4/ru|Joomla! 3.4]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Using_the_Database/13/ru&amp;diff=371481</id>
		<title>Translations:J3.x:Creating a simple module/Using the Database/13/ru</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Creating_a_simple_module/Using_the_Database/13/ru&amp;diff=371481"/>
		<updated>2017-03-14T10:03:16Z</updated>

		<summary type="html">&lt;p&gt;Leo240: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Important Note:&#039;&#039; эти файлы также используются, чтобы установить номер версии в таблице #__schemas. Этот номер версии должен присутствовать в текущей версии компонента для того, чтобы новые файлы SQL были запущены во время обновления. Например, если у вас версия 1.0 и вы обновляетесь до версии 1.1, файл 1.1.sql  не будет выполнен, если нет файла 1.0.sql нет в релизе 1.0. По этой причине, это хорошая практика, чтобы иметь файл обновления SQL для каждой версии, даже если нет изменений SQL в этой версии.&lt;/div&gt;</summary>
		<author><name>Leo240</name></author>
	</entry>
</feed>