<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Dev Joomla</title>
	
	<link>http://www.dev-joomla.ru</link>
	<description>Школа разработчика для Joomla</description>
	<lastBuildDate>Tue, 08 May 2012 17:08:45 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Dev-Joomla" /><feedburner:info uri="dev-joomla" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>Dev-Joomla</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Разработка модулей в Joomla 2.5: Часть 3. Использование параметров в модуле</title>
		<link>http://feedproxy.google.com/~r/Dev-Joomla/~3/JmQjaPGbX44/</link>
		<comments>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-chast-3-ispolzovanie-parametrov-v-module/#comments</comments>
		<pubDate>Mon, 07 May 2012 16:57:02 +0000</pubDate>
		<dc:creator>Dev-Joomla</dc:creator>
				<category><![CDATA[Разработка модулей для Joomla]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[fields]]></category>
		<category><![CDATA[fieldset]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[params]]></category>
		<category><![CDATA[параметры]]></category>

		<guid isPermaLink="false">http://www.dev-joomla.ru/?p=216</guid>
		<description><![CDATA[Разрабатывая свой модуль нужно побеспокоиться о возможности его настройки. Joomla позволяет использовать параметры, о них мы уже говорили в предыдущей части: «Альтернативный макет». В этой части мы рассмотрим, как добавить параметр в XML файл описания модуля, чтобы потом можно было его задавать в «Менеджере модулей». А также как использовать параметры в модуле. Начнем с изменения [...]]]></description>
			<content:encoded><![CDATA[<p>Разрабатывая свой модуль нужно побеспокоиться о возможности его настройки. Joomla позволяет использовать параметры, о них мы уже говорили в предыдущей части: «Альтернативный макет». В этой части мы рассмотрим, как добавить параметр в XML файл описания модуля, чтобы потом можно было его задавать в «Менеджере модулей». А также как использовать параметры в модуле.<br />
<span id="more-216"></span></p>
<p>Начнем с изменения  кода шаблона <code>tmpl/default.php</code>:</p>
<pre class="brush: php; title: ;">
&lt;?php
/**
 * @package	Joomla.Tutorials
 * @subpackage	Module
 * @copyright	Copyright (C) 2005 - 2010 Open Source Matters, Inc. All rights reserved.
 * @license	License GNU General Public License version 2 or later; see LICENSE.txt
 */
// No direct access to this file
defined('_JEXEC') or die;
?&gt;
&lt;p&gt;&lt;?php echo $params-&gt;get('greeting', 'I am a module'); ?&gt;&lt;/p&gt;
</pre>
<p>В строке 11 мы получаем значение параметра <code>greeting</code>, которое задано в «Менеджере модулей» (первый параметр в функции <code>get()</code>). Во втором параметре функции <code>get()</code> мы передаем значение по умолчанию, на случай если в «Менеджере модулей» параметр <code>greeting</code> не задан. </p>
<p>Далее нам нужно отредактировать XML файл описания модуля <code>mod_helloworld.xml</code> и добавить в него описание параметра (строки 21–34):</p>
<pre class="brush: xml; title: ;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;extension type=&quot;module&quot; version=&quot;2.5.0&quot; method=&quot;upgrade&quot;&gt;
	&lt;name&gt;Hello World!&lt;/name&gt;
	&lt;!-- Следующие элементы не обязательны и могут содержать все, что вы считаете нужным --&gt;
	&lt;creationDate&gt;05.05.2012&lt;/creationDate&gt;
	&lt;author&gt;Dev Joomla&lt;/author&gt;
	&lt;authorEmail&gt;info@dev-joomla.ru&lt;/authorEmail&gt;
	&lt;authorUrl&gt;http://www.dev-joomla.ru&lt;/authorUrl&gt;
	&lt;copyright&gt;Copyright Info&lt;/copyright&gt;
	&lt;license&gt;License Info&lt;/license&gt;
	&lt;!-- Версия модуля – эта строка сохраняется в таблице расширений --&gt;
	&lt;version&gt;0.0.1&lt;/version&gt;
	&lt;!-- Описание модуля также не обязательно и если оно не указано, то берется из тэга  name --&gt;
	&lt;description&gt;Это описание модуля Hello World...&lt;/description&gt;
	&lt;!-- Обратите внимание на тэг  files: в нем содержится информация, о том какие файлу нужно копировать в каталог модуля --&gt;
	&lt;files&gt;
		&lt;filename module=&quot;mod_helloworld&quot;&gt;mod_helloworld.php&lt;/filename&gt;
		&lt;filename&gt;mod_helloworld.xml&lt;/filename&gt;
		&lt;folder&gt;tmpl&lt;/folder&gt;
	&lt;/files&gt;
	&lt;!-- Описание параметров модуля --&gt;
	&lt;config&gt;
		&lt;fields name=&quot;params&quot;&gt;
			&lt;fieldset name=&quot;basic&quot;&gt;
				&lt;field
					name=&quot;greeting&quot;
					type=&quot;text&quot;
					default=&quot;I am a module&quot;
					label=&quot;Greeting&quot;
					description=&quot;The greeting to display&quot;
				/&gt;
			&lt;/fieldset&gt;
		&lt;/fields&gt;
	&lt;/config&gt;
&lt;/extension&gt;
</pre>
<p>В этих строках, определяется один параметр с именем (<code>name</code>) <code>"greeting"</code>, который попадет в группу «Основные параметры» (<code>fieldset name="basic"</code>). Тип параметра (<code>type</code>) <code>"text"</code>, значение по умолчанию (<code>default</code>) <code>"I am a module"</code>, имя параметра для отображения в «Менеджере модулей» (<code>label</code>) <code>"Greeting"</code> и описание параметра (<code>description</code>) <code>"The greeting to display"</code>.</p>
<p>Скачать исходные тексты <a href="http://www.dev-joomla.ru/files/mod_helloworld-part03.zip">mod_helloworld-part03.zip</a></p>
<img src="http://feeds.feedburner.com/~r/Dev-Joomla/~4/JmQjaPGbX44" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-chast-3-ispolzovanie-parametrov-v-module/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<enclosure url="http://www.dev-joomla.ru/files/mod_helloworld-part03.zip" length="8690" type="application/zip" /><media:content url="http://www.dev-joomla.ru/files/mod_helloworld-part03.zip" fileSize="8690" type="application/zip" /><feedburner:origLink>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-chast-3-ispolzovanie-parametrov-v-module/</feedburner:origLink></item>
		<item>
		<title>Разработка модулей в Joomla 2.5: Часть 2. Использование шаблонов в модуле</title>
		<link>http://feedproxy.google.com/~r/Dev-Joomla/~3/JjbigwGag-c/</link>
		<comments>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-chast-2-ispolzovanie-shablonov-v-module/#comments</comments>
		<pubDate>Sun, 06 May 2012 14:57:15 +0000</pubDate>
		<dc:creator>Dev-Joomla</dc:creator>
				<category><![CDATA[Разработка модулей для Joomla]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[tmpl]]></category>
		<category><![CDATA[модуль]]></category>
		<category><![CDATA[шаблон]]></category>

		<guid isPermaLink="false">http://www.dev-joomla.ru/?p=212</guid>
		<description><![CDATA[Разрабатывая модуль, нам необходимо продумать возможность вывода результатов его работы, лучше всего использовать для этого шаблоны. Конечно, можно не использовать шаблоны и сделать вывод результатов в основном PHP файле. Но это не самый лучший подход, необходимо разделять логику приложения от логики отображения. Также использование шаблонов дает возможность переопределить шаблон вывода без изменения самого модуля, а [...]]]></description>
			<content:encoded><![CDATA[<p>Разрабатывая модуль, нам необходимо продумать возможность вывода результатов его работы, лучше всего использовать для этого шаблоны. Конечно, можно не использовать шаблоны и сделать вывод результатов в основном PHP файле. Но это не самый лучший подход, необходимо разделять логику приложения от логики отображения. Также использование шаблонов дает возможность переопределить шаблон вывода без изменения самого модуля, а также сделать альтернативные стили вывода модуля.<br />
<span id="more-212"></span></p>
<p>Для того чтобы создать шаблон модуля нужно сделать всего две вещи:</p>
<ol>
<li>Создать шаблон модуля</li>
<li>Сделать загрузку шаблона и его отображение</li>
</ol>
<p>Создадим каталог <code>tmpl</code>, а в нем создадим файл <code>default.php</code> со следующим содержимым:</p>
<pre class="brush: php; title: ;">
&lt;?php
/**
 * @package	Joomla.Tutorials
 * @subpackage	Module
 * @copyright	Copyright (C) 2005 - 2010 Open Source Matters, Inc. All rights reserved.
 * @license	License GNU General Public License version 2 or later; see LICENSE.txt
 */
// No direct access to this file
defined('_JEXEC') or die;

?&gt;
&lt;p&gt;Hello World! &lt;/p&gt;
</pre>
<p>Это очень простой  шаблон, все, что он делает, это выводит HTML код. Далее нам необходимо модифицировать код модуля <code>mod_helloworld.php</code>, для загрузки и вывода шаблона:</p>
<pre class="brush: php; title: ;">
&lt;?php
/**
 * @package	Joomla.Tutorials
 * @subpackage	Module
 * @copyright	Copyright (C) 2005 - 2010 Open Source Matters, Inc. All rights reserved.
 * @license	License GNU General Public License version 2 or later; see LICENSE.txt
 */
// No direct access to this file
defined('_JEXEC') or die;
require JModuleHelper::getLayoutPath('mod_helloworld', $params-&gt;get('layout', 'default'));
</pre>
<p>Как мы видим, единственное, что нам потребовалось для загрузки и вывода шаблона, это вызов функции <code>JModuleHelper::getLayoutPath()</code>. Первый аргумент этой функции – имя модуля, чтобы можно было найти шаблон (конечно, это название нашего модуля: <code>mod_helloworld</code>). Понять второй аргумент немного сложнее, он дает возможность задать для модуля альтернативный макет, сделать это можно в «Менеджере модулей» в «Дополнительных параметрах». Параметр <code>layout</code> доступен для всех модулей в «Менеджере модулей». В функции <code>JModuleHelper::getLayoutPath()</code> во втором параметре можно было просто передать значение <code>default</code>, но тогда выбор альтернативного макет в «Менеджере модулей» ничего бы не дал.</p>
<p>Ну и напоследок нам нужно модифицировать XML файл описания модуля, для того чтобы файлы шаблона копировались при установке модуля (строка 19):</p>
<pre class="brush: xml; title: ;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;extension type=&quot;module&quot; version=&quot;2.5.0&quot; method=&quot;upgrade&quot;&gt;
	&lt;name&gt;Hello World!&lt;/name&gt;
	&lt;!-- Следующие элементы не обязательны и могут содержать все, что вы считаете нужным --&gt;
	&lt;creationDate&gt;05.05.2012&lt;/creationDate&gt;
	&lt;author&gt;Dev Joomla&lt;/author&gt;
	&lt;authorEmail&gt;info@dev-joomla.ru&lt;/authorEmail&gt;
	&lt;authorUrl&gt;http://www.dev-joomla.ru&lt;/authorUrl&gt;
	&lt;copyright&gt;Copyright Info&lt;/copyright&gt;
	&lt;license&gt;License Info&lt;/license&gt;
	&lt;!-- Версия модуля – эта строка сохраняется в таблице расширений --&gt;
	&lt;version&gt;0.0.1&lt;/version&gt;
	&lt;!-- Описание модуля также не обязательно и если оно не указано, то берется из тэга  name --&gt;
	&lt;description&gt;Это описание модуля Hello World...&lt;/description&gt;
	&lt;!-- Обратите внимание на тэг  files: в нем содержится информация, о том какие файлу нужно копировать в каталог модуля --&gt;
	&lt;files&gt;
		&lt;filename module=&quot;mod_helloworld&quot;&gt;mod_helloworld.php&lt;/filename&gt;
		&lt;filename&gt;mod_helloworld.xml&lt;/filename&gt;
		&lt;folder&gt;tmpl&lt;/folder&gt;
	&lt;/files&gt;
&lt;/extension&gt;
</pre>
<p>Обратите внимание, что мы просто указали название каталога и не стали перечислять все файлы, которые там есть.</p>
<p>Скачать исходные тексты <a href="http://www.dev-joomla.ru/files/mod_helloworld-part02.zip">mod_helloworld-part02.zip</a></p>
<img src="http://feeds.feedburner.com/~r/Dev-Joomla/~4/JjbigwGag-c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-chast-2-ispolzovanie-shablonov-v-module/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<enclosure url="http://www.dev-joomla.ru/files/mod_helloworld-part02.zip" length="8538" type="application/zip" /><media:content url="http://www.dev-joomla.ru/files/mod_helloworld-part02.zip" fileSize="8538" type="application/zip" /><feedburner:origLink>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-chast-2-ispolzovanie-shablonov-v-module/</feedburner:origLink></item>
		<item>
		<title>Разработка модулей в Joomla 2.5: Часть 1. Разработка базового модуля</title>
		<link>http://feedproxy.google.com/~r/Dev-Joomla/~3/aT0hX6B5-v0/</link>
		<comments>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-chast-1-razrabotka-bazovogo-modulya/#comments</comments>
		<pubDate>Sat, 05 May 2012 15:17:05 +0000</pubDate>
		<dc:creator>Dev-Joomla</dc:creator>
				<category><![CDATA[Разработка модулей для Joomla]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[модуль]]></category>

		<guid isPermaLink="false">http://www.dev-joomla.ru/?p=200</guid>
		<description><![CDATA[Давай те создадим наш первый модуль «Hello World». Все имена файлов и пути к ним указываются относительно каталога, в котором разрабатывается модуль. Для создания нашего первого модуля потребуется создание всего двух файлов. Файл самого модуля и XML файл описания модуля. Наш первый модуль не будет особенным, все, что он будет делать это выводить текст: «Hello [...]]]></description>
			<content:encoded><![CDATA[<p>Давай те создадим наш первый модуль «Hello World». Все имена файлов и пути к ним указываются относительно каталога, в котором разрабатывается модуль. Для создания нашего первого модуля потребуется создание всего двух файлов. Файл самого модуля и XML файл описания модуля. Наш первый модуль не будет особенным, все, что он будет делать это выводить текст: «Hello World» в позицию, в которой он опубликован.<br />
<span id="more-200"></span><br />
Давай начнем, запустите свой любимый редактор и создайте файл <code>mod_helloworld.php</code>:</p>
<pre class="brush: php; title: ;">
Hello World!
</pre>
<p>Также создадим и XML файл описания модуля <code>mod_helloworld.xml</code>:</p>
<pre class="brush: xml; title: ;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;extension type=&quot;module&quot; version=&quot;2.5.0&quot; method=&quot;upgrade&quot;&gt;

	&lt;name&gt;Hello World!&lt;/name&gt;
	&lt;!-- Следующие элементы не обязательны и могут содержать все, что вы считаете нужным --&gt;
	&lt;creationDate&gt;05.05.2012&lt;/creationDate&gt;
	&lt;author&gt;Dev Joomla&lt;/author&gt;
	&lt;authorEmail&gt;info@dev-joomla.ru&lt;/authorEmail&gt;
	&lt;authorUrl&gt;http://www.dev-joomla.ru&lt;/authorUrl&gt;
	&lt;copyright&gt;Copyright Info&lt;/copyright&gt;
	&lt;license&gt;License Info&lt;/license&gt;
	&lt;!-- Версия модуля – эта строка сохраняется в таблице расширений --&gt;
	&lt;version&gt;0.0.1&lt;/version&gt;
	&lt;!-- Описание модуля также не обязательно и если оно не указано, то берется из тэга  name --&gt;
	&lt;description&gt;Это описание модуля Hello World...&lt;/description&gt;
	&lt;!-- Обратите внимание на тэг  files: в нем содержится информация, о том какие файлу нужно копировать в каталог модуля --&gt;
	&lt;files&gt;
		&lt;filename module=&quot;mod_helloworld&quot;&gt;mod_helloworld.php&lt;/filename&gt;
		&lt;filename&gt;mod_helloworld.xml&lt;/filename&gt;
	&lt;/files&gt;
&lt;/extension&gt;
</pre>
<p>XML файл описания модуля получился достаточно большим. Но это только по тому, что наш модуль практически ничего не делает. Наиболее важное, на что нужно обратить внимание это строка 18 в ней в атрибуте <code>module="mod_helloworld"</code> мы указываем, какой файл будет считаться точкой входа модуля. Другими словами, с какого файла начинается выполнение модуля. Вообще это может быть файл с любым названием, но по соглашению принятого в Joomla имя файла должно начинаться с приставки <code>mod_</code>, мы так и поступили. И выполнение нашего модуля начнется с файла <code>mod_helloworld.php</code>. </p>
<p>XML файл описания модуля <code>mod_helloworld.xml</code> необходим для установки модуля и для того, чтобы Joomla дала вам возможность использовать этот модуль. В нем содержится все необходимые для работы Joomla описания модуля. Мы рассмотрели только минимальный набор тэгов, но в дальнейшем мы это наверстаем.</p>
<p>Для тестирования нашего модуля его необходимо установить. В Joomla существует два способа это сделать. Наиболее распространенный – установка из файла пакета (архив в формате zip в котором содержаться все необходимые файлы). Второй способ с помощью «поиска». Оба метода мы рассмотрим ниже, но рекомендую использовать установки с помощью файла пакета. Этот метод более «жестко» относиться к устанавливаемы файлам и ошибкам в них, особенно к XML файлу описания. Это дает нам возможность увидеть ошибки еще в процессе установки.</p>
<p>Если вы уже сталкивались с установкой расширений в Joomla, то вы наверняка заметили, что все расширения устанавливаются с помощью zip архива в котором содержатся вся необходимая информация для установки и удаления расширения.</p>
<p>Начиная с Joomla 1.6 появился новый способ установки с помощью поиска, суть его заключается в том, что вы сами размещаете файлы расширения в нужных местах (для нашего модуля это будет каталог <code>modules/mod_helloworld</code> относительно каталога? в который установлена Joomla), и в менеджере расширений производите поиск таких расширений, после чего можете его установить. Применять этот метод имеет смысл, если по каким-то причинам не получается установить расширение с помощью пакета. Обычно это случается при каких либо ограничениях хостинга (ограничение на размер загружаемого файла, на время выполнения) или при наличие конфликта в правах (в целях повышения безопасности можно запретить запись в определенные каталоги, в том числе и в те куда Joomla будет устанавливать расширение).</p>
<p>Все, что нам осталось сделать – это создать ZIP архив содержащий созданные нами файлы и установить полученный файл через «Менеджер расширений» и протестировать наш первый модуль.</p>
<p>Для тестирования нашего модуля необходимо проделать несколько шагов:</p>
<ol>
<li>Перейти в «Менеджер модулей»</li>
<li>Создать новый модуль и выбрать тип модуля «Hello world»</li>
<li>Заполнить поле «Заголовок»</li>
<li>Выбрать позицию, в которой модуль будет опубликован</li>
<li>Убедиться что в поле «Состояние» выбрано «Опубликовано» </li>
<li>И сохранить настройки модуля</li>
<li>Насладиться работой своего первого модуля</li>
</ol>
<p>Скачать исходные тексты <a href="http://www.dev-joomla.ru/files/mod_helloworld-part01.zip">mod_helloworld-part01.zip</a></p>
<img src="http://feeds.feedburner.com/~r/Dev-Joomla/~4/aT0hX6B5-v0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-chast-1-razrabotka-bazovogo-modulya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<enclosure url="http://www.dev-joomla.ru/files/mod_helloworld-part01.zip" length="7821" type="application/zip" /><media:content url="http://www.dev-joomla.ru/files/mod_helloworld-part01.zip" fileSize="7821" type="application/zip" /><feedburner:origLink>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-chast-1-razrabotka-bazovogo-modulya/</feedburner:origLink></item>
		<item>
		<title>Разработка модулей в Joomla 2.5: Введение</title>
		<link>http://feedproxy.google.com/~r/Dev-Joomla/~3/C4TPdVoRsuM/</link>
		<comments>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-vvedenie/#comments</comments>
		<pubDate>Fri, 04 May 2012 15:33:06 +0000</pubDate>
		<dc:creator>Dev-Joomla</dc:creator>
				<category><![CDATA[Разработка модулей для Joomla]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[модуль]]></category>

		<guid isPermaLink="false">http://www.dev-joomla.ru/?p=194</guid>
		<description><![CDATA[Как вы уже знаете, а если не знаете, то я вам об этом сообщу, фактически, Joomla – это большой фреймворк. Набор инструментов для разработчика. Большим достоинством данной CMS является изначально заложенная в нее расширяемость. Этот цикл заметок основывается на документации Joomla: User:Rvsjoen/tutorial/Developing a Module. Но это не будет банальным переводом, взяв за основу документацию, я [...]]]></description>
			<content:encoded><![CDATA[<p>Как вы уже знаете, а если не знаете, то я вам об этом сообщу, фактически, Joomla – это большой фреймворк. Набор инструментов для разработчика. Большим достоинством данной CMS является изначально заложенная в нее расширяемость.<br />
<span id="more-194"></span><br />
Этот цикл заметок основывается на документации Joomla: <a href="http://docs.joomla.org/User:Rvsjoen/tutorial/Developing_a_Module" rel="nofollow">User:Rvsjoen/tutorial/Developing a Module</a>. Но это не будет банальным переводом, взяв за основу документацию, я постараюсь более подробно написать о разработке модулей для Joomla. Литературы на русском языке по этой CMS очень мало, а для разработчиков и вообще практически нет. Надеюсь, что я смогу внести свой маленький вклад в популяризацию Joomla.</p>
<p>Официальная документация содержит 6 частей:</p>
<ul>
<li>Часть 1 – Разработка базового модуля</li>
<li>Часть 2 – Использование шаблонов в модуле</li>
<li>Часть 3 – Использование параметров в модуле</li>
<li>Часть 4 – Добавление перевода</li>
<li>Часть 5 – Добавление вспомогательных функцией (helper)</li>
<li>Часть 6 – Доступ к базе данных</li>
</ul>
<p>В рамках этих 6 частей будет разрабатываться простой модуль «Hello World». Также будут рассмотрены принятые в Joomla стандарты и соглашения. Где это необходимо будут приложенные исходные файлы.</p>
<p>О чем будут дальнейшие статьи, зависит и от вас читателей. О чем написать, что подробнее рассмотреть – все это вы можете написать в комментариях, и на основе этого уже будут формироваться дальнейшие заметки. Что в итоге получиться у меня, я пока не знаю. Но вскоре мы вместе все увидим.</p>
<p>Вы можете подписаться на RSS, чтобы знать о новых заметках или просто почаще заходить в мой блог. Как бы там ни было, спасибо, что вы заглянули.</p>
<img src="http://feeds.feedburner.com/~r/Dev-Joomla/~4/C4TPdVoRsuM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-vvedenie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.dev-joomla.ru/razrabotka-modulejj-dlya-joomla/razrabotka-modulejj-v-joomla-2-5-vvedenie/</feedburner:origLink></item>
		<item>
		<title>Добавляем свое меню в «Панели управления» Joomla. Часть 4. Убираем «лишние» пункты меню</title>
		<link>http://feedproxy.google.com/~r/Dev-Joomla/~3/5HTs5hatdTY/</link>
		<comments>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-4-ubiraem-lishnie-punkty-menyu/#comments</comments>
		<pubDate>Wed, 02 May 2012 17:01:54 +0000</pubDate>
		<dc:creator>Dev-Joomla</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Общие вопросы программирования в Joomla]]></category>
		<category><![CDATA[acl]]></category>
		<category><![CDATA[administrator]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[группы]]></category>
		<category><![CDATA[меню]]></category>
		<category><![CDATA[панель управления]]></category>
		<category><![CDATA[права доступа]]></category>

		<guid isPermaLink="false">http://www.dev-joomla.ru/?p=184</guid>
		<description><![CDATA[Хотите сделать более удобное меню в Панели управления Joomla? Нет ничего проще, несколько простых шагов и сможете делать с меню все что захотите. Во третьей части Добавляем свое меню в «Панели управления» Joomla. Часть 3. Локализация и выключенное меню мы разобрались, как пользоваться языковыми файлами и, как добавить пункт к выключенному меню. Но не будем [...]]]></description>
			<content:encoded><![CDATA[<p>Хотите сделать более удобное меню в Панели управления Joomla? Нет ничего проще, несколько простых шагов и сможете делать с меню все что захотите.<br />
<span id="more-184"></span></p>
<p>Во третьей части <a href="http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-3-lokalizaciya-i-vyklyuchennoe-menyu/">Добавляем свое меню в «Панели управления» Joomla. Часть 3. Локализация и выключенное меню</a> мы разобрались, как пользоваться языковыми файлами и, как добавить пункт к выключенному меню. </p>
<p>Но не будем останавливаться на достигнутом и избавим наших пользователей от пунктов меню, которые им не нужны. Не важно, по каким причинам, наша это прихоть или желание заказчика. </p>
<p>Давай для простоты объяснения, определимся, что для всех групп пользователей кроме группы «Супер-пользователи» должны быть доступны: из меню «Сайт» – пункты «Панель управления», «Мой профиль», «Выйти», меню «Материалы» – полностью, меню «Мое меню» – полностью и меню «Справка» – полностью. Практически такой набор пунктов меню мы получим, если у пользователя будет группа «Менеджер». За исключением одного но, там не нужен  пункт меню «Компоненты» которое включено для этой группы.<br />
Ни и теперь, сформулировав задачу мы снова обратимся файлу формирования включенного меню <code>default_enabled.php</code>. Так хотелось опять полезть в дебри кода и быстро все исправить, но в Joomla мы можем управлять правами группы и, все, что нам необходимо – это просто запретить использовать расширения находящиеся в пункте меню «Компоненты». </p>
<p>Рассмотри на примере компонента «Баннеры». Заходим в «Менеджер баннеров»: Меню > Компоненты > Баннеры:<br />
<img src="http://www.dev-joomla.ru/wp-content/uploads/2012/05/banners.png" alt="" title="Компонент баннеры" width="436" height="112" class="aligncenter size-full wp-image-186" /><br />
В правом верхнем меню выбираем «Настройки», в всплывающем окне «Настройки менеджера баннеров» выбираем закладку «Права» и выбираем группу «Менеджеры»:<br />
<a href="http://www.dev-joomla.ru/wp-content/uploads/2012/05/banners-options.png" target="_blank"><img src="http://www.dev-joomla.ru/wp-content/uploads/2012/05/banners-options-300x148.png" alt="Настройки менеджера баннеров" title="Настройки менеджера баннеров" width="300" height="148" class="aligncenter size-medium wp-image-187" /></a><br />
Для всех действий выбираем «Запрещено», сохраняемся. Вот и все для всех пользователей группы «Менеджер» компонент «Баннеры» не доступен. Проделав такую операцию со всеми компонентами, расположенными в пункте меню «Компоненты» мы сможем избавиться и от самого пункта «Компоненты», Если в нем не будет подпунктов, то он просто не будет отображаться. </p>
<p>Но, все таки существуют задачи, в которых может понадобиться правка <code>default_enabled.php</code>. Например, можно захотеть дать доступ к компоненту «Баннеры», но при этом убрать пункт меню «Компоненты». В данной ситуации мы не можем запретить доступ к компоненту «Баннеры», следовательно пункт «Компоненты» будет отображаться. Для решения этой задачи, найдем в файле формирования меню следующие строки:</p>
<pre class="brush: php; title: ;">
//
// Components Submenu
//
// Get the authorised components and sub-menus.
$components = ModMenuHelper::getComponents( true );
// Check if there are any components, otherwise, don't render the menu
if ($components)
{
</pre>
<p>В этом куске кода, в 5 строке, проверяется, есть ли компоненты для вывода и если есть, то дальше идет формирование пункта «Компоненты». Нам нужно отключить формирование, если пользователь принадлежит группе «Менеджеры». В «Менеджер пользователей: Группы пользователей» на нужно посмотреть <code>ID</code> этой группы – он равен 6. Получить список групп пользователя можно так: <code>$user->get('groups')</code> – это будет массив со всеми группами, к которым принадлежит пользователь. И теперь мы можем изменить приведенный выше код, чтобы для группы «Менеджеры» пункт меню «Компоненты» не выводился:, исправляем 7 строку на:</p>
<pre class="brush: php; title: ;">
if ($components and !in_array(6, $user-&gt;get('groups')))
</pre>
<p>Вообще, данный код некорректен с логической точки зрения, потому, что если пользователь будет принадлежать помимо группы «Менеджеры» еще и к группе «Администратор», то у него тоже отключится вывод формирование пункта «Компоненты». Но, как иллюстрацию применения такого подхода этим можно пренебречь. Вообще для решения подобной задачи можно было пойти от противного не запретить какой-то группе, а разрешить определенным группам. В нашем случае это бы выглядело так: разрешить пользователям из групп «Супер-пользователи» (ID=8) и «Администраторы» (ID=7) показывать пункт меню «Компоненты». И соответственно строка 7 была бы такой:</p>
<pre class="brush: php; title: ;">
if ($components and (in_array(7, $user-&gt;get('groups')) or in_array(8, $user-&gt;get('groups'))))
</pre>
<p>или такой</p>
<pre class="brush: php; title: ;">
if ($components and !empty(array_intersect(array(7,8), $user-&gt;get('groups'))))
</pre>
<img src="http://feeds.feedburner.com/~r/Dev-Joomla/~4/5HTs5hatdTY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-4-ubiraem-lishnie-punkty-menyu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-4-ubiraem-lishnie-punkty-menyu/</feedburner:origLink></item>
		<item>
		<title>Добавляем свое меню в «Панели управления» Joomla. Часть 3. Локализация и выключенное меню</title>
		<link>http://feedproxy.google.com/~r/Dev-Joomla/~3/rWNh-o2LRBk/</link>
		<comments>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-3-lokalizaciya-i-vyklyuchennoe-menyu/#comments</comments>
		<pubDate>Sat, 28 Apr 2012 07:07:36 +0000</pubDate>
		<dc:creator>Dev-Joomla</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Общие вопросы программирования в Joomla]]></category>
		<category><![CDATA[administrator]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[локализация]]></category>
		<category><![CDATA[меню]]></category>
		<category><![CDATA[панель управления]]></category>

		<guid isPermaLink="false">http://www.dev-joomla.ru/?p=164</guid>
		<description><![CDATA[Хотите сделать более удобное меню в Панели управления Joomla? Нет ничего проще, несколько простых шагов и сможете делать с меню все что захотите. Во второй части Добавляем свое меню в «Панели управления» Joomla. Часть 2. Добавление элементов меню мы остановились на функции JText::_(), эта функция отвечает за локализацию, или другими словами за перевод на другие [...]]]></description>
			<content:encoded><![CDATA[<p>Хотите сделать более удобное меню в Панели управления Joomla? Нет ничего проще, несколько простых шагов и сможете делать с меню все что захотите.<br />
<span id="more-164"></span><br />
Во второй части <a href="http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-2-dobavlenie-ehlementov-menyu/">Добавляем свое меню в «Панели управления» Joomla. Часть 2. Добавление элементов меню</a> мы остановились на функции <code>JText::_()</code>, эта функция отвечает за локализацию, или другими словами за перевод на другие языки. </p>
<p>Файлы локализации для панели управления находятся  в каталоге <code>administrator/language</code>. В нем находятся каталоги с названиями языка, например: <code>en-GB</code> – английский язык, <code>ru-RU</code> – русский язык. И соотвественно уже в этих каталогах находятся сами языковые файлы. Они представляют из себя обычные текстовые файлы. Эти файлы должны иметь расширение <code>ini</code>, начинаться с префикса языка, для которого они предназначены, иметь кодировку UTF-8 без заголовка BOM. В названии файлы между префиксом языка и расширением содержится название расширения, к которому относиться данный языковой модуль.<br />
Мы работаем с модулем панели управления <code>mod_menu</code>, следовательно, нас интересует языковой файл <code>ru-RU.mod_menu.ini</code>, который располагается в каталоге <code>administrator/language/ru-RU/</code>.</p>
<p>Добавим в конце этого файла строки:
<pre class="brush: php; title: ;">
MOD_MENU_MY_TOP_MENU=&quot;Мое меню&quot;
MOD_MENU_MY_ELEMENT1=&quot;Редактирование основного меню&quot;
MOD_MENU_MY_ELEMENT2=&quot;Создать материал&quot;
</pre>
<p>Как видно, сначала идет строка, которую мы указывали в функции <code>JText::_()</code>, а затем через знак равенства в прямых кавычках перевод, то есть тот текст, который должен отображаться.<br />
<img src="http://www.dev-joomla.ru/wp-content/uploads/2012/04/my-menu-rus.png" alt="" title="Локализация меню" width="272" height="116" class="aligncenter size-full wp-image-166" /><br />
Мы практические закончили, но остался один нюанс: При включенном меню мы видим пункт «Мое меню», а при выключенном, например, когда происходит редактирование какого-либо элемента, не видим. В общем-то в этом нет ничего страшного, но оставив без изменения выклеенное меню, мы рискуем ввести в заблуждение пользователей для которых оно создано и спровоцировать шквал вопросов, которые нам совсем нужны. Так что лучше потратим еще немного времени и добавим необходимый функционал в выключенное меню.</p>
<p>Как уже говорилось, за формирование выключенного меню отвечает файл <code>default_disabled.php</code>. Так как выключенное меню не позволяет показывать, раскрывающееся меню, то нам достаточно будет сформировать только пункт выключенный пункт меню «Мое меню».</p>
<p>Открываем для редактирования файл <code>administrator/templates/bluestork/html/mod_menu/ default_disabled.php </code>, и находим следующие строки:
<pre class="brush: php; title: ;">
//
// Help Submenu
//
</pre>
<p>Перед ними вставляем следующий код:
<pre class="brush: php; title: ;">
//
// My Submenu
//
$menu-&gt;addChild(new JMenuNode(JText::_('MOD_MENU_MY_TOP_MENU'), null, 'disabled'));
</pre>
<p>В второй части мы уже рассматривали подобный код, сейчас остановимся только на отличиях. За место ссылки мы используем значение null, а зачем нам ссылка в выключенном меню. Также мы не стали указывать, что меню содержит дочерние пункты и наконец, в конструкторе элемента меню <code>JMenuNode</code> в третьем параметре мы явно указали, что меню выключено <code>'disabled'</code>.<br />
<img src="http://www.dev-joomla.ru/wp-content/uploads/2012/04/my-menu-dis.png" alt="" title="Выключенное меню" width="280" height="66" class="aligncenter size-full wp-image-168" /></p>
<p>Продолжение <a href="http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-4-ubiraem-lishnie-punkty-menyu/">Добавляем свое меню в «Панели управления» Joomla. Часть 4. Убираем «лишние» пункты меню</a></p>
<img src="http://feeds.feedburner.com/~r/Dev-Joomla/~4/rWNh-o2LRBk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-3-lokalizaciya-i-vyklyuchennoe-menyu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-3-lokalizaciya-i-vyklyuchennoe-menyu/</feedburner:origLink></item>
		<item>
		<title>Защита административной панели от несанкционированного доступа – как делать нельзя</title>
		<link>http://feedproxy.google.com/~r/Dev-Joomla/~3/qVxvpWHNdt8/</link>
		<comments>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/zashhita-administrativnojj-paneli-ot-nesankcionirovannogo-dostupa-kak-delat-nelzya/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 13:45:25 +0000</pubDate>
		<dc:creator>Dev-Joomla</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Общие вопросы программирования в Joomla]]></category>
		<category><![CDATA[Ошибки в Joomla и расширениях]]></category>
		<category><![CDATA[administrator]]></category>
		<category><![CDATA[joomla]]></category>

		<guid isPermaLink="false">http://www.dev-joomla.ru/?p=157</guid>
		<description><![CDATA[Читая журнал «The Joomla!® Community Magazine», наткнулся на одну забавную статью под названием: «Защита административной панели от несанкционированного доступа», название заинтересовало. Но, не прочитав и трети статьи, стало понятно, что статья из категории «как делать нельзя». Для тех, кто присоединился, оригинальную статью можно прочесть здесь: Защита административной панели от несанкционированного доступа. Автор, &#171;при рассмотрении файлов [...]]]></description>
			<content:encoded><![CDATA[<p>Читая журнал «The Joomla!® Community Magazine», наткнулся на одну забавную статью под названием: «Защита административной панели от несанкционированного доступа», название заинтересовало. Но, не прочитав и трети статьи, стало понятно, что статья из категории «как делать нельзя».<br />
<span id="more-157"></span><br />
Для тех, кто присоединился, оригинальную статью можно прочесть здесь: <a href="http://magazine.joomla.org/international-stories-all/articles-in-russian-all/Protection-of-the-administrative-panel-from-unauthorized-access" rel="nofollow" target="_blank">Защита административной панели от несанкционированного доступа</a>.</p>
<p>Автор, &laquo;при рассмотрении файлов новой версии Joomla&raquo;, открыл для себя файл  <code>define.php </code>. А вот дальше начинается самое интересное, константа стала почему-то  переменной, на да бог с ним, хотя на таком ресурсе нужно серьезно походить к публикуемым материалам. Он предлагает в папке administrator создать файл, в котором будет устанавливаться секретная cookies и если эта печенька не установлена, то не определять константу  <code>JPATH_CONFIGURATION</code>. </p>
<p>Да, в панель управления после этого попасть, не зная, какие cookies должны быть установлены или название этого файла будет нельзя, но название этого файла может просочиться в интернет, просто подсмотрено или другие варианты. Переименовать то конечно не сложно, но это и не самое главное. После любого обновления все изменения нужно будет делать заново. А об это можно и забыть. Да и никто не мешает запросить другие файлы, которые там могут быть, так что, скрыть панель управления все равно не получиться.</p>
<p>В зависимости от настроек хостинга, все ошибки могут вывалиться в прямо в окно браузера, и обязательно попадут в лог сервера, тем самым захламляя и без того не маленькие логи. А ошибки и предупреждения будут точно: «использование неопределенной константы», «подключение не существующего файла», да еще и в нескольких экземплярах. </p>
<p>А вот это вообще шедевр:  <code>if (@$_COOKIE['OHO_CAMOE']==...</code>, автор не подозревает о наличии стандартной функции  <code>isset()</code>.</p>
<p>«Что же делать?» – спросите вы, защититься то охота. Я был не прав сказав, что так делать нельзя, но не сказав как можно. </p>
<p>Сходу приходит только один правильный ответ: используйте возможности  <code>.htaccess</code>. С помощью него вы сможете ограничить доступ по IP адресу. Сделать дополнительную «http basic» авторизацию. В Joomla можно включить SSL для панели инструментов, и настроить SSL подключение так, чтобы дополнительная авторизация происходила по сертификату. </p>
<img src="http://feeds.feedburner.com/~r/Dev-Joomla/~4/qVxvpWHNdt8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/zashhita-administrativnojj-paneli-ot-nesankcionirovannogo-dostupa-kak-delat-nelzya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/zashhita-administrativnojj-paneli-ot-nesankcionirovannogo-dostupa-kak-delat-nelzya/</feedburner:origLink></item>
		<item>
		<title>Добавляем свое меню в «Панели управления» Joomla. Часть 2. Добавление элементов меню</title>
		<link>http://feedproxy.google.com/~r/Dev-Joomla/~3/GzpUXro8Auo/</link>
		<comments>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-2-dobavlenie-ehlementov-menyu/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 01:45:47 +0000</pubDate>
		<dc:creator>Dev-Joomla</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Общие вопросы программирования в Joomla]]></category>
		<category><![CDATA[administrator]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[локализация]]></category>
		<category><![CDATA[меню]]></category>
		<category><![CDATA[панель управления]]></category>

		<guid isPermaLink="false">http://www.dev-joomla.ru/?p=142</guid>
		<description><![CDATA[Хотите сделать более удобное меню в Панели управления Joomla? Нет ничего проще, несколько простых шагов и сможете делать с меню все что захотите. Ну что же, в первой части Добавляем свое меню в «Панели управления» Joomla. Часть 1. Введение мы все подготовили, теперь можно перейти и к самому интересному: добавлению своих элементов в меню панели [...]]]></description>
			<content:encoded><![CDATA[<p>Хотите сделать более удобное меню в Панели управления Joomla? Нет ничего проще, несколько простых шагов и сможете делать с меню все что захотите.<br />
<span id="more-142"></span><br />
Ну что же, в первой части <a href="http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-1-vvedenie/">Добавляем свое меню в «Панели управления» Joomla. Часть 1. Введение</a> мы все подготовили, теперь можно перейти и к самому интересному: добавлению своих элементов в меню панели инструментов. Для начала давайте поизучаем файл <code>default_enabled.php</code> и выясним, как формируется меню и его элементы.</p>
<p>Этот фрагмент кода нам в этом поможет:</p>
<pre class="brush: php; title: ;">
//
// Site SubMenu
//
$menu-&gt;addChild(
	new JMenuNode(JText::_('JSITE'), '#'), true
);
$menu-&gt;addChild(
	new JMenuNode(JText::_('MOD_MENU_CONTROL_PANEL'), 'index.php', 'class:cpanel')
);
...
$menu-&gt;getParent();
</pre>
<p>Многие разработчики Joomla возможно уже поняли, как происходит формирование меню, если это не так, ничего страшного, сейчас мы с этим разберемся.</p>
<p>В 5 и 8 строках вызывается конструктор элемента меню <code>JMenuNode</code>, ему необходимо передать два параметра: название пункта и ссылка по которой нужно переходить при выборе этого пункта. Остальные параметры не обязательны, но их можно передавать, пример в 8 строке. Метод <code>addChild</code> (строка 4) добавляет в меню, только что созданный конструктором <code>JMenuNode</code> элемент меню, второй параметр в этом методе указывает, будет ли этот элемент родительским для других элементов. Если он равен <code>true</code>, то элемент будет родительским, иначе нет. В приведенном выше фрагменте кода в строка с 4–6 формируется родительские элемент меню, а в строках 7–9 формируется элемент меню который будет дочерним по отношению к предыдущему пункту и не будет иметь других дочерних пунктов. Нужно заметить, что когда мы создаем родительский элемент меню, мы как бы опускаемся на уровень вниз. И все последующие операции происходят на этом уровне и чтобы вернуться, нам нужно подняться на уровень верх. В 11 строке мы как раз это и делаем. </p>
<p>Ну с теорией в общем-то все, перейдем к практике. Добавим наше меню перед пунктом «Справка». Для этого найдем в коде файла строки (у меня это 344 строка):</p>
<pre class="brush: php; title: ;">
//
// Help Submenu
//
</pre>
<p>И перед ними добавим следующий код (не забывайте, что мы работаем с файлами расположенными в каталоге <code>administrator/templates/bluestork/html/mod_menu/</code>):</p>
<pre class="brush: php; title: ;">
//
// My Submenu
//
$menu-&gt;addChild(
	new JMenuNode(JText::_('MOD_MENU_MY_TOP_MENU'), '#'), true
);
$menu-&gt;addChild(
	new JMenuNode(JText::_('MOD_MENU_MY_ELEMENT1'), 'index.php?option=com_menus&amp;view=items&amp;menutype=mainmenu', 'class:panel')
);
$menu-&gt;addChild(
	new JMenuNode(JText::_('MOD_MENU_MY_ELEMENT2'), 'index.php?option=com_content&amp;view=article&amp;layout=edit', 'class:panel')
);
$menu-&gt;getParent();
</pre>
<p>Сохраняемся и едем в панель управления смотреть, что у нас получилось. Если вы все сделали правильно, то без труда увидите картинку как у меня:<br />
<img src="http://www.dev-joomla.ru/wp-content/uploads/2012/04/my-menu.png" alt="" title="Добавляем свое меню в «Панели управления» Joomla" width="297" height="114" class="aligncenter size-full wp-image-145" /></p>
<p>Все хорошо, только названия не очень понятные, можно конечно вместо<code>JText::_()</code> сразу написать необходимые названия, но это не подходит под философию Joomla. Для этого существуют языковые файлы. Именно поэтому Joomla и ее расширения переведены на множество различных языков. </p>
<p>Продолжение <a href="http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-3-lokalizaciya-i-vyklyuchennoe-menyu/">Добавляем свое меню в «Панели управления» Joomla. Часть 3. Локализация и выключенное меню</a></p>
<img src="http://feeds.feedburner.com/~r/Dev-Joomla/~4/GzpUXro8Auo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-2-dobavlenie-ehlementov-menyu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-2-dobavlenie-ehlementov-menyu/</feedburner:origLink></item>
		<item>
		<title>Добавляем свое меню в «Панели управления» Joomla. Часть 1. Введение</title>
		<link>http://feedproxy.google.com/~r/Dev-Joomla/~3/ffsfY4B1a3U/</link>
		<comments>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-1-vvedenie/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 16:24:19 +0000</pubDate>
		<dc:creator>Dev-Joomla</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Общие вопросы программирования в Joomla]]></category>
		<category><![CDATA[administrator]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[локализация]]></category>
		<category><![CDATA[меню]]></category>
		<category><![CDATA[панель управления]]></category>

		<guid isPermaLink="false">http://www.dev-joomla.ru/?p=136</guid>
		<description><![CDATA[Хотите сделать более удобное меню в Панели управления Joomla? Нет ничего проще, несколько простых шагов и сможете делать с меню все что захотите. Существует много разных задач, в которых может помочь индивидуализация меню в панели управления. Одни из самых важных задач: сделать меню интуитивно понятным и вынести наиболее часто используемые пункты поближе. Так же можно [...]]]></description>
			<content:encoded><![CDATA[<p>Хотите сделать более удобное меню в Панели управления Joomla? Нет ничего проще, несколько простых шагов и сможете делать с меню все что захотите.<br />
<span id="more-136"></span><br />
Существует  много разных задач, в которых может помочь индивидуализация меню в панели управления. Одни из самых важных задач: сделать меню интуитивно понятным и вынести наиболее часто используемые пункты поближе. Так же можно убрать пункты меню, которые загромождают меню для остальных пользователей (не администраторов). Мы также можем убрать часть пунктов, которые не нужны пользователю в повседневной работе или пункты меню, с помощью которых обычный пользователь может нанести вред сайту. </p>
<p>Вы конечно же знаете, что меню панели управления нельзя изменять, Joomla позволяет управлять только меню на самом сайте, но не в панели управления. Но, в общем-то, не все так страшно, все, что необходимо для формирования меню (названия пунктов, ссылки и иерархия) находиться в шаблоне вывода модуля меню. Переопределяя его поведение, мы можем управлять меню в панели управления, так как захотим. Такой подход конечно требует умения программировать, но в целом внесение необходимых изменений доступны даже начинающему программисту PHP.</p>
<p>В Joomla 2.5 шаблон вывода меню состоит из трех файлов расположенных в каталоге <code>administrator/modules/mod_menu/tmpl/</code>: <code>default.php</code>, <code>default_disabled.php</code> и <code>default_enabled.php</code>. Файл <code>default.php</code> отвечает за выбор основного обработчика вывода меню, в зависимости от того в каком состоянии находится меню – включено или выключено. Если меню выключено, то подключается обработчик <code>default_enabled.php</code>. Если выключено, то <code>default_disabled.php</code>. В отключенном состоянии мы можем увидеть меню, когда редактируем какой-либо элемент в Joomla. В первую очередь нас интересует изменение включенного меню, но рекомендуем сделать изменения и выключенном, чтобы пункты меню не «скакали» при переходе от включенного меню к выключенному, и обратно.</p>
<p>В Joomla стандартным подходом для изменения поведения расширений считается перегрузка шаблона вывода расширения в шаблоне темы. Мы будем работать с шаблоном панели управления bluestork. Более подробно о перегрузке шаблонов вывода расширений поговорим в следующий раз, а сейчас нам достаточно знать, что нам необходимо скопировать необходимые нам файлы из каталога <code>administrator/modules/mod_menu/tmpl/</code> в каталог <code>administrator/templates/bluestork/html/mod_menu/</code>. Файл <code>default.php</code>, как уже говорилось выше, отвечает за выбор основного обработчика, его поведение нам не нужно менять, поэтому копировать его не будем. Нам нужно скопировать файлы <code>default_disabled.php</code> и <code>default_enabled.php</code>, которые мы и будем изменять. Если вы вдруг сделали ошибку, которую не можете исправить, можно или просто переименовать файл с ошибкой или скопировать из каталога модуля еще раз. Так что не бойтесь экспериментировать, в любой момент вы можете вернуть все как было.</p>
<p>Продолжение <a href="http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-2-dobavlenie-ehlementov-menyu/">Добавляем свое меню в «Панели управления» Joomla. Часть 2. Добавление элементов меню</a></p>
<img src="http://feeds.feedburner.com/~r/Dev-Joomla/~4/ffsfY4B1a3U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-1-vvedenie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/dobavlyaem-svoe-menyu-v-paneli-upravleniya-joomla-chast-1-vvedenie/</feedburner:origLink></item>
		<item>
		<title>Получение ссылки на страницу в Joomla без вывода ее в меню на сайте</title>
		<link>http://feedproxy.google.com/~r/Dev-Joomla/~3/Cs6kgAw3Jp8/</link>
		<comments>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/poluchenie-ssylki-na-stranicu-v-joomla-bez-vyvoda-ee-v-menyu-na-sajjte/#comments</comments>
		<pubDate>Sat, 21 Apr 2012 16:04:19 +0000</pubDate>
		<dc:creator>Dev-Joomla</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Общие вопросы программирования в Joomla]]></category>

		<guid isPermaLink="false">http://www.dev-joomla.ru/?p=125</guid>
		<description><![CDATA[В Joomla иногда может потребоваться создать страницу, которая была бы не доступна через меню, в то же время она должна быть доступна по ссылке введенной вручную. Например, это может быть страница с благодарностью за заполнение формы, или страница с дополнительным материалом из основной статьи, или страница какого-либо расширения, в выводе которой в меню нет необходимости. [...]]]></description>
			<content:encoded><![CDATA[<p>В Joomla иногда может потребоваться создать страницу, которая была бы не доступна через меню, в то же время она должна быть доступна по ссылке введенной вручную. Например, это может быть страница с благодарностью за заполнение формы, или страница с дополнительным материалом из основной статьи, или страница какого-либо расширения, в выводе которой в меню нет необходимости.<br />
<span id="more-125"></span><br />
Возможно, в модуле вы захотите сделать ссылку на определенный материал или категорию которых в меню нет и не должно быть. Также это даст возможность задать индивидуальные настройки для отображения страницы.</p>
<p>Такая задача очень часто встает перед пользователями Joomla, мне не однократно задавали такой вопрос. Поэтому я написал маленькое руководство как получить ссылку на любую страницу в Joomla не отображая ее в меню на сайте.</p>
<p>Дело в том, что вы не сможете создать ссылку, без меню. Но с другой стороны, кто сказал, что меню обязательно нужно показывать на сайте? </p>
<p>Итак, для того чтобы получить ссылку на любую страницу в Joomla и при этом не отображать ее в меню на сайте необходимо:</p>
<ol>
<li>С помощью менеджера меню создать новое меню. Назовем его «скрытое меню» и тип меню (системное имя меню) будет «hidenmenu». Не забываем нажить кнопку «Сохранить и закрыть».</p>
<p><img src="http://www.dev-joomla.ru/wp-content/uploads/2012/04/create_menu.png" alt="" title="Создание меню" width="432" height="159" class="aligncenter size-full wp-image-126" /></p>
<p><img src="http://www.dev-joomla.ru/wp-content/uploads/2012/04/hidden_menu.png" alt="" title="Создание меню, заполнение полей" width="480" height="142" class="aligncenter size-full wp-image-127" />
</li>
<li>
В меню «скрытое меню» создаем пункт меню, который будет указывать на нужную нам страницу в Joomla. Выбираем тип пункта меню (я выбрал Материал), указываем заголовок меню (я выбрал Визитная карточка, не забывайте, что этот заголовок может отображаться в заголовке страницы браузера), указываем Алиас (у меня vizitnaya-kartochka, фактически это и будет нужная нам ссылка). И не забываем сохраняться. В создании модуля для вывода этого меню необходимости нет.</p>
<p><img src="http://www.dev-joomla.ru/wp-content/uploads/2012/04/create_menu_item.png" alt="" title="Создание пункта меню" width="466" height="176" class="aligncenter size-full wp-image-130" /></p>
<p><img src="http://www.dev-joomla.ru/wp-content/uploads/2012/04/menu_item.png" alt="" title="Настройка пункта меню" width="560" height="458" class="aligncenter size-full wp-image-131" /></p>
<p>Если вы используете редактор JCE или другое расширение для вставки ссылок, то можете уже использовать созданную ссылку. Если нет то вам не составит друга сделать это самим. При включенном ЧПУ ссылка будет иметь вид при «/алиас» (для моего примера «/vizitnaya-kartochka», на рисунке помечено цифрой 1). При выключенном ЧПУ, ссылку можно скопировать из поля «Ссылка» и добавить «/» в начале (в моем примере это будет «/index.php?option=com_content&#038;view=article&#038;id=84», на рисунке помечено цифрой 2), эта ссылка будет работоспособна как при включенном, так и при выключенном ЧПУ.</li>
</ol>
<p>Если необходимо создать несколько таких ссылок, просто повторяйте выполнение пункта 2.</p>
<img src="http://feeds.feedburner.com/~r/Dev-Joomla/~4/Cs6kgAw3Jp8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/poluchenie-ssylki-na-stranicu-v-joomla-bez-vyvoda-ee-v-menyu-na-sajjte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.dev-joomla.ru/obshhie-voprosy-programmirovaniya-v-joomla/poluchenie-ssylki-na-stranicu-v-joomla-bez-vyvoda-ee-v-menyu-na-sajjte/</feedburner:origLink></item>
	<media:rating>nonadult</media:rating></channel>
</rss>

