<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
        <channel>
        <title>шаблоны / Tag search / Русский клуб Joomla</title>
        <link>http://joomclub.net/en/rss/tag/шаблоны/</link>
        <description><![CDATA[Сайт посвящен Joomla во всех ее проявлениях, мы рассказываем о шаблонах, расширениях, компонентах, плагинах и модулях]]></description>
        <language>ru</language>
        <managingEditor>tena2000@mail.ru</managingEditor>
        <webMaster>tena2000@mail.ru</webMaster>
        <generator>Alto CMS v.1.1.13</generator>
                    <item>
                <title>RoundTheme выпустили новый шаблон Kunena и провели большое обновление</title>
                <guid isPermaLink="true">http://joomclub.net/en/t/278/</guid>
                <link>http://joomclub.net/en/blog/templates/278.html</link>
                <author>vadim@joomline.ru</author>
                <description><![CDATA[<p>Клуб шаблонов RoundTheme выпустил новый шаблон для Kunena форума под названием RND Kascetic. Шаблон выполнен в легких тонах и аскетичном стиле и отлично впишется в большинство современных шаблонов Joomla от известных производителей.</p><p><img src="/uploads/images/00/00/02/2014/08/18/0u4949368e-10b16603-28247df8.jpg" /></p><p><a name="cut" rel="nofollow"></a> </p><p>Также было проведено большое обновление с уже существующими шаблонами Kunena — все они получили дополнительные 5 цветовых стилей для унификации и демонстрации большей гибкости. Все шаблоны от RoundTheme выполнены с использованием техники адаптивного дизайна и корректно отображаются на мобильных устройствах.</p><p>Также были обновлены все квикстарты до актуальных версий Joomla и Kunena, а также улучшен скрипт демо-полигона для более удобной навигации.</p><p><a href="http://www.roundtheme.com/themes/kunena/rnd-kascetic" target="_blank" rel="nofollow" >Страница шаблона RND Kascetic</a></p>]]></description>
                <pubDate>Mon, 18 Aug 2014 21:07:12 +0400</pubDate>
                            </item>
                    <item>
                <title>Первый русский клуб шаблонов для Joomla! Поддержим ребят.</title>
                <guid isPermaLink="true">http://joomclub.net/en/t/205/</guid>
                <link>http://joomclub.net/en/blog/community/205.html</link>
                <author>vadim@joomline.ru</author>
                <description><![CDATA[<p>Мы обсуждали эту тему достаточно давно, но не все верили, что это свершится. Но самое главное ребятам это удалось, и они, спустя два года подготовки запустили проект, клуба шаблонов для Joomla. Надо сказать, что начали они со специфической области шаблонов для расширений. Пожелаем им удачи. Под катом будет рассказ, что и почему было сделано.</p><p><img src="http://joomclub.net/uploads/images/00/00/02/2014/03/26/fdd9b9.jpg"/></p><p><a name="cut" rel="nofollow"></a> </p><p><a title="RoundTheme - Responsive templates for Kunena &amp;amp; JComments" href="http://www.roundtheme.com" rel="nofollow" target="_blank">Клуб RoundTheme</a> — новый проект студии <strong>Round Interactive</strong>, который мы рады анонсировать как результат многомесячной работы нашего творческого коллектива.</p><p>Экосистема клуба включает в себя:</p><ul><li><strong>Категории и страницы шаблонов.</strong> Удобная навигация с импровизированной сортировкой по категориям;</li><li><strong>Личный кабинет пользователя.</strong> Просмотр последних ответов на вопросы пользователя, заданные на форуме, быстрые ссылки на скачивание и форум. Возможность перехода на более высокий тарифный план;</li><li><strong>Документация.</strong> Подробная документация по общим вопросам, связанным с шаблонами Joomla, а также работа с Kunena и JComments, в том числе, уроки;</li><li><strong>Страница FAQ.</strong> Часто-задаваемые вопросы;</li><li><strong>Форум поддержки.</strong> Профессиональная поддержка шаблонов;</li><li><strong>Файловый архив.</strong> Установочные дистрибутивы и qucikstart’ы с установленными расширениями;</li><li><strong>Демо-полигон.</strong> Возможность посмотреть шаблоны и их возможности на реальных примерах;</li><li><strong>Валидация шаблонов.</strong> Сервис проверки легального статуса шаблонов. Пользователь вводит домен, система проверяет его наличие в базе клуба.</li></ul><p>К сожалению для русскоязычной аудитории, весь сайт на английском, что впринципе и понятно, так как российская аудитория, не столь многочисленная, как бы хотелось и самое главное не очень любит платить. Я думаю, что для вебмастеров английский язык это не столь большая проблема :-). Для тех, кто плохо понимает английский, рекомендую жать на кнопочку «subscribe now». Во первых ребятам нужна помощь и стимул, а во вторых хорошие шаблоны, хотя бы для JComments нужны всем.</p>Клуб на первых порах заявил о поддержку шаблонов для двух расширений:<img style="display: block;" src="http://joomlablog.ru/images/icons/kunena-logo.png" alt="Kunena форум" align="left"/><strong>Kunena</strong> является лучшим компонентом форума для Joomla на протяжении нескольких лет. Kunena имеет широкие функциональные возможности и интегрируется с большим количеством сторонних расширений, таких как: UddeIM, AlphaUserPoints, JomSocial и т.д.<img style="display: block;" src="http://joomlablog.ru/images/icons/jcomments-logo.png" alt="Компонент JComments" align="left"/><strong>JComments</strong> — один из наиболее популярных компонентов для организации системы комментариев на Joomla и безоговорочный лидер среди расширений комментариев в русскоязычном сообществе Joomla. Нами были разработаны <em>шаблоны для JComments</em>, которые легко вписываются и дополняют сторонние шаблоны Jooomla.<p>На момент написания поста клуб предлагал по подписке 5 шаблонов для JComments и 5 шаблонов для Kunena. На мой взгляд, за вполне адекватные деньги — 39 баксов. Могу вас заверить, что это нормально, так как недавно искал шаблон для Kunena, плохонький шаблончик для форума стоил от 20 баксов, а что-то приличное 40-50. Так что от всей души желаю удачи в вашем деле.</p><p>Сайт клуба: <a href="http://www.roundtheme.com" rel="nofollow" target="_blank">www.roundtheme.com</a></p><p>Кстати, для тех, кто хочет чуть-чуть халявы. Можно воспользоваться купоном на скидку 10%. Купон скидки: <strong>RNDTHEME2014RUSSIA</strong></p>]]></description>
                <pubDate>Wed, 26 Mar 2014 12:37:58 +0400</pubDate>
                            </item>
                    <item>
                <title>Ликбез по CSS спрайтам</title>
                <guid isPermaLink="true">http://joomclub.net/en/t/61/</guid>
                <link>http://joomclub.net/en/blog/verstka/61.html</link>
                <author>al-teen@inbox.ru</author>
                <description><![CDATA[<p>CSS спрайты — это вывод отдельных элементов единого изображения на веб — странице. То есть одна большая картинка, либо несколько разных, но объединенных в один файл рядом друг с другом. Зачастую подобным образом группируют множество различных иконок. Разработчики называют подобный файл <b>мастер сеткой</b>. В качестве примера возьмем одну картинку, из которой нам нужно вывести в разных частях страницы различные ее элементы. Как вариант, порезать ее на куски и определять каждую часть отдельно, 1 элемент — 1 отдельный файл. Впрочем еще несколько лет назад именно так все и делали. Простейший вариант по своей сути. Но данный метод имеет один существенный недостаток, а именно — количество HTTP запросов, которые отсылает сервер браузеру. Одна картинка — это один запрос. Чем их больше, тем дольше будет загружаться страница. Посему CSS спрайты в первую очередь служат для сокращения количества этих самых запросов.Выше на картинке вполне четко показан принцип работы CSS спрайтов если представлять <a name="cut" rel="nofollow"></a> выделенную в кружок область в качестве области с изображением на нашей странице.Работает данная технология следующим образом. В нашей странице имеется блок:</p>

<p>Код</p>

<pre class="prettyprint"><code>&lt;a href=&quot;http://december.com/html/4/element/div.html&quot;&gt;&lt;span&gt;&lt;div&lt;/span&gt;&lt;/a&gt; id=&quot;mushroom&quot;&gt;&lt;span&gt;&lt;/div&gt;&lt;/span&gt;</code></pre>

В нем нам нужно вывести грибок с картинки выше. Открываем всю картинку в редакторе, например Paint.NET, там находим в самом низу шкалу координат. Средством выделения узнаем точный размер области с грибом, у меня получилось 18x18 пикселов. Записываем размеры. Затем опять же при помощи выделения узнаем расстояние до верха картинки от края мастер сетки, аналогично расстояние от левого края. У меня это 40px и 0px. Затем создаем в CSS описание класса mushroom такого типа:

<p>Код</p>

<pre class="prettyprint"><code>#mushroom{
 &nbsp; &nbsp;background: url(sprite&lt;span&gt;.gif&lt;/span&gt;) no-repeat -36px 0px;
 &nbsp; &nbsp;height: 18px;
 &nbsp; &nbsp;width: 18px;
}</code></pre>

Разберем пример. Свойством background выводим грибок в блок &lt;div id=«mushroom»&gt;&lt;/div&gt; в качестве фонового изображения, no-repeat запрещаем повторяться картинке, -36px и 0px это наши координаты X,Y, именно при помощи них мы и перемещаем по мастер сетке фокус к нужному нам элементу. height:18px и width:18px регулируем размер видимой на странице области. Как видно ничего сложного в этом всем нет, все гениальное — просто.

Для <b>потребленцев</b> людей выбирающих американский образ жизни, порекомендую <a rel="nofollow" href="http://ru.spritegen.website-performance.org/" target="_blank">он — лайн генератор CSS спрайтов
</a>

Для нормальных людей — читаем ниже.

<b>1.Простые спрайты.</b>

Для объединения изображений в спрайты рекомендую использовать не сложные графические редакторы. Такие как Paint.NET для Windows, Gnome Paint для Linux. Создаем в редакторе новый файл, на нем, посредством наложения слоев, размещаем нужные изображения для нашего спрайта. Ничего сложного. Таким образом создается мастер сетка.
После ее создания, рекомендую выполнить оптимизацию общего изображения, для уменьшения веса. Об оптимизации графики смотрим <a href="http://joomlaforum.ru/index.php/topic,169308.0.html" target="_blank" rel="nofollow">тут</a>.

Далее, как показано выше, создаем CSS классы для каждого нужного элемента и выводим их на страницу.

Примечание: для повторяющихся изображений, например для repeat-x (y) подобного рода мастер сетка не подойдет. Для горизонтального повторения (repeat-x) создается вертикальная тонкая полоска, в которой все элементы распологаются один над другим. Причем справа или слева пробелов быть не должно, иначе фон будет повторяться и с ними тоже. Аналогично и для вертикальной мастер сетки, только изображение соответственно будет горизонтальным и элементы располаться будут один рядом с другим по горизонтали.

<b>2.Спрайты через псевдо — элементы.</b>

Главное преимущество использования псевдо-элементов заключается в том, что дизайнеры смогут подрезать спрайты. В общем, ничего нового, так как многие сайты уже используют для этого дополнительные теги. Например, Yahoo! Search использует для этих целей пустой тег s, а Facebook — тег i. Но можно ведь создавать компактные CSS спрайты и без пустых вставок между изображениями в спрайте.

<img src="http://rghost.ru/12593771/private/73cf0b5d64e22891c5e13e37aa0b3243/image.png">
Два следующих изображения — второй элемент спрайта — сгенерированы с использованием каждой техники соответственно.

<ul><li>Метод Николаса Галагера, cтилизация псевдо-элемента фоновым изображением:</li></ul><p>Код</p>

<pre class="prettyprint"><code>#first:before { 
	content: &quot;&quot;; 
	float: left; 
	width: 15px; 
	height: 15px; 
	margin: 4px 5px 0 0; 
	background: url(sprite&lt;span&gt;.png&lt;/span&gt;) -15px 0; 
}</code></pre>

<ul><li>Метод нового url()/clip, использование свойства content для вставки спрайта, подрезанного с помощью свойства clip:</li></ul><p>Код</p>

<pre class="prettyprint"><code>#second { 
	position: relative; 
	padding-left: 20px; 
	background-image: expression(this.runtimeStyle.backgroundImage=&quot;none&quot;,this.innerHTML = '&lt;img alt=&quot;&quot; src=&quot;sprite.png&quot;&gt;'+this.innerHTML); 
} 
&nbsp;
#second:before, 
#second img { 
	content: url(sprite&lt;span&gt;.png&lt;/span&gt;); 
	position: absolute; 
	top: 3px; 
	clip: rect(0 30px 15px 15px); 
	left: -15px;
	_left: -35px;
}</code></pre>

Как это работает.

Вместо того, чтобы стилизовать псевдо-элемент как фон, мы используем его для вставки изображения (через content)
С помощью clip мы подрезаем его, чтобы отображалась только та часть, которая нужна. Это значит, что не нужно вставлять пустые теги в изображения, чтобы не отображать другие части изображения (обычно используется как фоновое изображение больших элементов)
Мы смещаем значения clip с помощью свойства left и/или top.

Если не подрезать спрайты, изображения в нем должны выровняться по левому или правому краю, чтобы соответствовать контексту RTL/LTR (background-position: | [vertical value]). Проблемы также возникают при создании спрайтов, где изображения следуют одно за другим (так как другие изображения тоже смогут отображаться). Если же подрезать спрайт, то изображения просто налезут друг на дружку.

Пример:

<img src="http://rghost.ru/12594081/private/66997346e7f8e8e7b7191b30375fb468/image.png">
Преимущества этой техники по сравнению с другими:

<ul><li>Отображение при печати. В отличие от фоновых изображений, при печати они распечатаются в документе.</li><li>Доступность. В отличие от фоновых изображений, они будут отображать в режиме high contrast или при контрастных CSS стилях.</li><li>Работает в IE. Метод подходит для Internet Explorer 6 и 7.</li></ul>Отметьте также, что может быть использована схема data URI для игнорирования HTTP запросов. IE 6/7 не поддерживает данную схему, но можно воспользоваться MHTML для IE6/7.

<b>3.Стилизация ссылок с помощью псевдо-элементов.</b>

Николас Галагер показал много интересных фишек, касающихся псевдо-элементов. Единственное, чтобы я добавил, так это пример использования :after для стилизации ссылок типа «читать дальше», например:

<p>Код</p>

<pre class="prettyprint"><code>.more:after { 
	white-space:nowrap; 
	content: &quot; &lt;span&gt;\00BB; /* » */
} 
.more { 
	white-space:nowrap; 
	background-image: expression(this.runtimeStyle.backgroundImage=&quot;&lt;/span&gt;none&quot;,this.innerHTML = this.innerHTML+' »'); 
}</code></pre>

Слово о доступности.

Имейте в виду, что генерируемый контент читается скрин-ридерами, и так как нет механизмов, которые предоставляли бы соответствующий текст изображению через свойство content, мы должны быть уверены, что эти изображения используются только для стилизации, так как пользователи со скрин-ридерами не смогут достучаться до той информации.

Оригиналы материалов:
<a rel="nofollow" href="http://coding.smashingmagazine.com/2011/03/19/styling-elements-with-glyphs-sprites-and-pseudo-elements/" target="_blank">http://coding.smashingmagazine.com/2011/03/19/styling-elements-with-glyphs-sprites-and-pseudo-elements/</a>]]></description>
                <pubDate>Tue, 09 Oct 2012 02:12:25 +0400</pubDate>
                            </item>
                    <item>
                <title>Условия в шаблонах</title>
                <guid isPermaLink="true">http://joomclub.net/en/t/40/</guid>
                <link>http://joomclub.net/en/blog/verstka/40.html</link>
                <author>al-teen@inbox.ru</author>
                <description><![CDATA[<h6><span>Что это и зачем они нужны? </span></h6>
<p>Простейший пример применения условий в шаблонах Joomla. У нас имеется сайт, на главной странице которого мы выводим левую колонку, ну внутренних страницах правую, или вообще никаких левых/правых контитулов, в только один контент-блок во всю ширину рабочей области. Или еще проще пример, выключаем модуль в позиции, вместе с ним прячется и вся разметка блока, обрамляющего модуль. Это и есть работа условий шаблона. </p><p><a name="cut" rel="nofollow"></a> </p>


<p>В любом языке программирования существуют так называемые условные операторы: 
</p>

<pre class="prettyprint"><code>if условие then команды end // условный оператор с одной ветвью.</code></pre>

<pre class="prettyprint"><code>if условие then команды1 else команды2 end // условный оператор с двумя ветвями</code></pre>
<p>Благодаря им и задаются <a href="http://joomlaforum.ru/index.php/topic,67278.new.html" target="_blank" rel="nofollow">Различные условия в шаблонах Joomla</a>. Берем нужный нам параметр и задаем условия согласно его значению. Ничего архисложного, как видите. Разберем вышеописанные примеры:</p>

<p><span style="color: green;"><b>готовые рецепты</b></span></p>
<hr>

<pre class="prettyprint"><code>$showLeftColumn = ($this-&gt;countModules('menu') or $this-&gt;countModules('mod'));

/* Создаем переменную $showLeftColumn значением которой будет проверка включения модулей в 
*/
/* позции 
menu или mod. Для удобства переменные принято объявлять вначале документа. */


&lt;?php if($this-&gt;countModules('menu') or $this-&gt;countModules('mod')) : ?&gt;

&lt;!-- Универсальное условие для проверки подключенных модулей в позиции --&gt;

&nbsp; &nbsp;&lt;section class=&quot;left&quot;&gt;

&nbsp; &nbsp; &nbsp;&lt;jdoc:include type=&quot;modules&quot; name=&quot;menu&quot; style=&quot;menu&quot;/&gt;

&nbsp; &nbsp; &nbsp;&lt;aside&gt;&lt;jdoc:include type=&quot;modules&quot; name=&quot;mod&quot; style=&quot;modbox&quot;/&gt;&lt;/aside&gt;

&nbsp; &nbsp;&lt;/section&gt;

&lt;?php endif; ?&gt;&nbsp; &nbsp;



&lt;section class=&quot;articles&lt;?php if ($showLeftColumn==NULL){ echo ' bigger';} ?&gt;&quot;&gt;

&lt;!-- Если переменная $showLeftColumn==NULL, то есть в позициях menu и mod пусто, то к 
class=&quot;articles&quot; добавится bigger. class=&quot;articles bigger&quot; --&gt;

&nbsp; &nbsp;&lt;div class=&quot;content&quot;&gt;

&nbsp; &lt;jdoc:include type=&quot;message&quot; /&gt;

&nbsp; &lt;jdoc:include type=&quot;component&quot; /&gt;

&nbsp; &nbsp;&lt;/div&gt;

&lt;/section&gt;

&lt;style&gt;
.left{width:240px;float:left;}
.articles{margin:0 0 0 250px;float:right;}
.articles.bigger{margin:0;float:none;}
&lt;/style&gt;</code></pre>
<p>Так же можно строить условия по значению параметров Joomla. Наример выводить контент только на определенной странице, показывать блоки только авторизованным пользователям и т.д. В общем — использовать параметры <a href="http://docs.joomla.org/Category:Framework" rel="nofollow">платформы</a>  в наших шаблонах.</p>]]></description>
                <pubDate>Thu, 20 Sep 2012 13:52:15 +0400</pubDate>
                            </item>
                    <item>
                <title>В продолжение темы отключения Mootools в шаблоне сайта на Joomla 2.5</title>
                <guid isPermaLink="true">http://joomclub.net/en/t/37/</guid>
                <link>http://joomclub.net/en/blog/joomla25/37.html</link>
                <author>dron79-79@yandex.ru</author>
                <description><![CDATA[<p>Прочитав способ отключения  <a href="http://joomclub.net/profile/Yazov/" rel="nofollow">Yazov</a> <a href="http://joomclub.net/blog/joomla25/33.html" rel="nofollow">отключения Mootools на уровне фреймворка Joomla,</a> и немного поразмыслив пришел к выводу, что в моем подходе к <a href="http://joomclub.net/blog/joomla25/32.html" rel="nofollow">отключению JavaScript на уровне шаблона</a> я не правильно сформулировал условия при которых вывод яваскриптов mootools должен выводится. Ошибочно предположив что они нам могут понадобится только при создании или редактировании материалов компанента com_content. На самом деле вариантов когда нужно использования Mootools намного больше, во первых это возможность использования сторонних компонентов использующих для своей работы данные JS библиотеки, во вторых различные модулили и плагины которые так же могут требовать для своей работы данные библиотеки.</p>
<p>По этому я считаю правильнее пойти от обратного, нужно выбрать варианты когда лишние JS на странице действительно не нужны. Это решит проблему со сторонними компанентами и частично с выводом модулей. Когда нам не нужны на странице лишние яваскрипты? Во первых это посещение сайта роботами, но к <a name="cut" rel="nofollow"></a> сожалению cверять <font>$_SERVER</font><font>[</font><font>&quot;</font>HTTP_USER_AGENT<font>&quot;</font><font>] </font>с списком имен всех существующих роботов накладно в плане процессорного времени, по этому это случай расматривать не буду. Во вотрых это страницы компонента com_content в режиме просмотра материала. Кто то захочет так же отключть их вывод на странцах вывода категорий.</p>
<p><pre class="prettyprint"><code>$view = JRequest::getVar('view', null, 'get', 'word');<br />&nbsp;$option= JRequest::getVar('option', null, 'get', 'word');<br />if (($option=='com_content')and(($view=='category')or($view=='article'))) {<br />&nbsp;&nbsp;&nbsp; //выполняем код по ограничению вывода mootools<br />&nbsp;&nbsp;&nbsp; if (isset($this-&gt;_scripts)and(count($this-&gt;_scripts))){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; foreach ($this-&gt;_scripts as $key =&gt; $value) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (preg_match(&quot;/media\/system\/js/i&quot;, $key)) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unset ($this-&gt;_scripts[$key]);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; //вырезаем строку&nbsp; window.addEvent('load', function() { new JCaption('img.caption');&nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; if (isset($this-&gt;_script)and(count($this-&gt;_script))){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; preg_match(&quot;/window\.addEvent\('load',\sfunction\(\)\s\{[\s]*new\sJCaption\('img\.caption'\);[\s]*\}\);/iU&quot;, $this-&gt;_script['text/javascript'],$match);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (isset($match[0])) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $this-&gt;_script['text/javascript']=str_replace($match[0],'',$this-&gt;_script['text/javascript']);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //вырезаем тултип<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; preg_match(&quot;/window\.addEvent\('domready',\sfunction\(\)\s\{[\s]*[$]+\('\.hasTip'\)\.each\(function\(el\)\s\{[\s]*var\stitle\s=\sel\.get\('title'\);[\s]*if\s\(title\)\s\{[\s]*var\sparts\s=\stitle\.split\('::', 2\);[\s]*el\.store\('tip:title',\sparts\[0\]\);[\s]*el\.store\('tip:text',\sparts\[1\]\);[\s]*\}[\s]*\}\);[\s]*var\sJTooltips\s=\snew\sTips\([$]+\('\.hasTip'\),\s\{\smaxTitleChars:\s50,\sfixed:\sfalse\}\);[\s]*\}\);/iU&quot;, $this-&gt;_script['text/javascript'],$match2);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (isset($match2[0])) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $this-&gt;_script['text/javascript']=str_replace($match2[0],'',$this-&gt;_script['text/javascript']);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}</code></pre></p>
<p>Данный код вставляется в index.php вашего шаблона после</p>
<pre>&lt;code&gt;defined('_JEXEC') or die;&lt;/code&gt;</pre><p>Если список страниц сайта на которых не нужно использования Mootools нужно расширить  то нужно просто добавить необходимые условия в условный опратор if. По моему разумению, это именно те страници где нужна хорошая скорость загрузки материала.</p>
<p>P.S. просмотрите код вашего шаблона на наличие в нем вызова функции JHtml::_('behavior.framework', true); и ему подобных. Проанализируйте, с какой целью авторы данного шаблона делают вызов JS библиотек, если поймете что это лишнее, то закоментируйте их. Иначе все будет напрасно, так как их подключение произойдет пойзже, нашей очистки обекта шаблона от данных скриптов. Будьте внимательны.</p>
<p>Благодарю за внимание!</p>
<p> </p>]]></description>
                <pubDate>Wed, 19 Sep 2012 02:13:51 +0400</pubDate>
                            </item>
                    <item>
                <title>Отключение скриптов  mootools на уровне шаблона</title>
                <guid isPermaLink="true">http://joomclub.net/en/t/32/</guid>
                <link>http://joomclub.net/en/blog/joomla25/32.html</link>
                <author>dron79-79@yandex.ru</author>
                <description><![CDATA[<p>Поговорим немного о том, как облегчить вывод страниц сайта на Joomla 2.5. Ни для кого не открою секрета, что в погоне за универсализацией, разработчики Joomla подгружают на все страницы сайта фреймворк Mootools. Не будем обсуждать решения разработчиков, скажу только, что это не всегда оправдано, прежде всего в плане соотношения Функционал/скорость загрузки страницы.</p>
<p>Но у нас есть все возможности, чтобы самим решать, на каких страницах сайта использовать данный фреймворк, а на каких нет.<br>
 Решается данный вопрос на уровне шаблона. Ну что же, приступим к препарации нашего шаблона. <a name="cut" rel="nofollow"></a> <strong>Предупреждение, перед всеми изменениями, необходимо сделать резервную копию вашего шаблона.</strong></p>
<p><strong><br>
</strong>Вносить изменения будем в файл templates\имя_шаблона\index.php</p>
<p>Для того что бы выяснить какие переменные содержит объект нашего шаблона после строчки <pre class="prettyprint"><code>defined('_JEXEC') or die;</code></pre>добавим строку </p>
<p><pre class="prettyprint"><code>print_r($this);</code></pre>В результате мы увидим структуру объекта, состоящую из массивов, с переменными вашего шаблона, весь вывод приводить не буду, кому интересно сами попробуют, приведу только то что нам пригодится для работы.</p>
<p> <pre class="prettyprint"><code>JDocumentHTML Object<br />(<br />&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp;&nbsp; [_scripts] =&gt; Array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [/media/system/js/mootools-core.js] =&gt; Array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [mime] =&gt; text/javascript<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [defer] =&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [async] =&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [/media/system/js/core.js] =&gt; Array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [mime] =&gt; text/javascript<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [defer] =&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [async] =&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [/media/system/js/caption.js] =&gt; Array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [mime] =&gt; text/javascript<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [defer] =&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [async] =&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [/media/system/js/mootools-more.js] =&gt; Array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [mime] =&gt; text/javascript<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [defer] =&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [async] =&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp; [_script] =&gt; Array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [text/javascript] =&gt; window.addEvent('load', function() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; new JCaption('img.caption');<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />&nbsp;&nbsp;&nbsp; ...<br />)</code></pre></p>
<p>Теперь, когда мы знаем имена нужных нам переменных нашего шаблона, произведем действия, по обеспечению вывода всего этого богатства только там где это требуется или другими словами вырежем на тех страницах где он не нужен.<br>
<br>
</p>
<p>Когда нам может погрузка этих скриптов? На ум приходит создание нового материала или редактирование существующего. Сделаем в шаблоне проверку на эти условия.</p>
<p> <pre class="prettyprint"><code>$view = JRequest::getVar('view', null, 'get', 'word');<br />$layout = JRequest::getVar('layout', null, 'get', 'word');<br />if (!(($view=='form')and($layout='edit'))) {<br />&nbsp;&nbsp;&nbsp; //выполняем код по ограничению вывода mootools<br />&nbsp;&nbsp;&nbsp; if (isset($this-&gt;_scripts)and(count($this-&gt;_scripts))){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; foreach ($this-&gt;_scripts as $key =&gt; $value) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (preg_match(&quot;/media\/system\/js/i&quot;, $key)) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unset ($this-&gt;_scripts[$key]);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; //вырезаем строку&nbsp; window.addEvent('load', function() { new JCaption('img.caption');&nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; if (isset($this-&gt;_script)and(count($this-&gt;_script))){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; preg_match(&quot;/window\.addEvent\('load',\sfunction\(\)\s\{[\s]*new\sJCaption\('img\.caption'\);[\s]*\}\);/iU&quot;, $this-&gt;_script['text/javascript'],$match);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (isset($match[0])) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $this-&gt;_script['text/javascript']=str_replace($match[0],'',$this-&gt;_script['text/javascript']);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //вырезаем тултип<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; preg_match(&quot;/window\.addEvent\('domready',\sfunction\(\)\s\{[\s]*[$]+\('\.hasTip'\)\.each\(function\(el\)\s\{[\s]*var\stitle\s=\sel\.get\('title'\);[\s]*if\s\(title\)\s\{[\s]*var\sparts\s=\stitle\.split\('::', 2\);[\s]*el\.store\('tip:title',\sparts\[0\]\);[\s]*el\.store\('tip:text',\sparts\[1\]\);[\s]*\}[\s]*\}\);[\s]*var\sJTooltips\s=\snew\sTips\([$]+\('\.hasTip'\),\s\{\smaxTitleChars:\s50,\sfixed:\sfalse\}\);[\s]*\}\);/iU&quot;, $this-&gt;_script['text/javascript'],$match2);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (isset($match2[0])) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $this-&gt;_script['text/javascript']=str_replace($match2[0],'',$this-&gt;_script['text/javascript']);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}</code></pre>Почему я не стал обнулять объекты _scripts и _scripts, а сделал по ним поиск, да потому что на страницах могут быть установлены компонент или модули использующие свои скрипты, без которых страница будет отображаться не корректно.</p>
<p>Для тех, кто хочет добиться полного уничтожения всех скриптов на страницах своего сайта, код будет следующим:</p>
<p><pre class="prettyprint"><code>$view = JRequest::getVar('view', null, 'get', 'word');<br />$layout = JRequest::getVar('layout', null, 'get', 'word');<br />if (!(($view=='form')and($layout='edit'))) {<br />&nbsp;&nbsp;&nbsp; //выполняем код по ограничению вывода mootools<br />&nbsp;&nbsp;&nbsp; if (isset($this-&gt;_scripts)and(count($this-&gt;_scripts))){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $this-&gt;_scripts=array();<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; if (isset($this-&gt;_script)and(count($this-&gt;_script))){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; $this-&gt;_script['text/javascript']='';<br />&nbsp;&nbsp;&nbsp; &nbsp; <br />&nbsp;&nbsp;&nbsp; }<br />}</code></pre></p>
<p>Статья сделана по материалам JoomlaForum <a href="http://joomlaforum.ru/index.php/topic,197566.0.html" rel="nofollow">joomlaforum.ru/index.php/topic,197566.0.html</a></p>
<p>Выражаю благодарность участнику форума <strong><a title="Просмотр профиля Poznakomlus" href="http://joomlaforum.ru/index.php?action=profile;u=55080" rel="nofollow">Poznakomlus</a> </strong>за раскрытие данной темы.<strong><br>
</strong></p>
<p>Благодарю читателей за внимание!</p>]]></description>
                <pubDate>Tue, 18 Sep 2012 09:49:53 +0400</pubDate>
                            </item>
                    <item>
                <title>jdoc:include - метод отображения контента на странице.</title>
                <guid isPermaLink="true">http://joomclub.net/en/t/22/</guid>
                <link>http://joomclub.net/en/blog/templates/22.html</link>
                <author>al-teen@inbox.ru</author>
                <description><![CDATA[<p>В статье <a href="http://joomclub.net/blog/verstka/16.html" rel="nofollow">Создание шаблонов для Joomla</a> мы поверхностно коснулись темы методов вывода контента в теле шаблона. Давайте теперь подробно разберем что это и с чем его едят. Итак, объявления метода <span><span>jdoc</span> присутствуют<span>  в каждом</span> шаблоне <span>Joomla</span><span>и выводят в тело шаблона (то бишь на страницу сайта) ту или иную информацию. В целом объявление метода выглядит следующим образом</span></span><br>
<pre class="prettyprint"><code>&lt;jdoc:include type=&quot;component&quot; /&gt;</code></pre></p>
<p>Данная строчка выводит на сайте информацию из компонентов, например статьи из com_content. Тип элементов вывода указывается в атрибуте.</p>
<p>    <strong>1. type — типы элементов вывода.</strong></p>
<ul><li><em>component</em> — как писал выше, выводит основное содержание страницы. Может вызываться только один раз в шаблоне.</li><li><em>head</em> — объявляется так же один раз после открывающего тэга &lt;head&gt;. Служит для вывода стилей, скриптов, &lt;title&gt; и метаданных текущей страницы.</li><li><em>message </em><em>-</em> выводит системные сообщения. Объявляется один раз в теле документа (body).</li><li><em>installation </em> — ничего не выводит и <a name="cut" rel="nofollow"></a> представляет собой «инструкцию» для установки.</li><li><em>module — </em>выводит на странице единичный модуль. Количество объявлений не ограничено.</li><li><em>modules </em> — в отличии от предыдущего типа, позволяет выводить в своей позиции не единичое число модулей.</li></ul><p>Для первых четырех указанных типов достаточно лишь указать их на странице. В случае с типом модуля задача немного усложняется. Для того, чтобы вывести на странице модуль нам нужно сперва создать для него <strong>модульную позицию</strong> с уникальным идентификатором (название позиции модуля). Это делается при помощи атрибута name=«имя позиции» и обязательным добавлением строки:<pre class="prettyprint"><code>&lt;position&gt;название позиции&lt;/position&gt;</code></pre>в файл templateDetails.xml. Описывая название позиции в templateDetails.xml мы обозначаем ее в системе и видим в менеджере модулей. Имена позиций могут быть произвольными, хотя name=«user3» позиция, по-умолчанию используется для отображения верхнего меню.</p>
<p>    <strong>2. style — описание стиля вывода (mod chrome).</strong></p>
<p>От указанного стиля зависит внешний вид и структура оболочки модуля. Выглядит как<pre class="prettyprint"><code>:&lt;jdoc:include type=&quot;modules&quot; name=&quot;user1&quot; style=&quot;xhtml&quot; /&gt;</code></pre>По-умолчанию заложено несколько стилей вывода модулей:</p>
<ul><li><em>xhtml -</em> выводит модуль в блоке с заголовком<pre class="prettyprint"><code>function modChrome_xhtml($module, &amp;$params, &amp;$attribs)<br />{<br />&nbsp;&nbsp; &nbsp;if (!empty ($module-&gt;content)) : ?&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=&quot;moduletable&lt;?php echo htmlspecialchars($params-&gt;get('moduleclass_sfx')); ?&gt;&quot;&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;?php if ($module-&gt;showtitle != 0) : ?&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;h3&gt;&lt;?php echo $module-&gt;title; ?&gt;&lt;/h3&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;?php endif; ?&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;?php echo $module-&gt;content; ?&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp; &nbsp;&lt;?php endif;<br />}</code></pre></li><li><em>table — </em>выводит модуль в верстке табличной структуры<br>
<pre class="prettyprint"><code>function modChrome_table($module, &amp;$params, &amp;$attribs)<br />{ ?&gt;<br />&nbsp;&nbsp; &nbsp;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;moduletable&lt;?php echo htmlspecialchars($params-&gt;get('moduleclass_sfx')); ?&gt;&quot;&gt;<br />&nbsp;&nbsp; &nbsp;&lt;?php if ($module-&gt;showtitle != 0) : ?&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;tr&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;th&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;?php echo $module-&gt;title; ?&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/th&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/tr&gt;<br />&nbsp;&nbsp; &nbsp;&lt;?php endif; ?&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;tr&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;td&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;?php echo $module-&gt;content; ?&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/td&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/tr&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/table&gt;<br />&nbsp;&nbsp; &nbsp;&lt;?php<br />}</code></pre></li><li><em>horz — </em>выводит содержимое модуля в ячейке таблицы, горизонтально<pre class="prettyprint"><code>function modChrome_horz($module, &amp;$params, &amp;$attribs)<br />{ ?&gt;<br />&nbsp;&nbsp;&nbsp; &lt;table cellspacing=&quot;1&quot; cellpadding=&quot;0&quot; width=&quot;100%&quot;&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;td&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;?php modChrome_table($module, $params, $attribs); ?&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />&nbsp;&nbsp;&nbsp; &lt;?php<br />}</code></pre></li><li><em>rounded</em> — выводит модуль в нескольких вложенных блоках для сложного стилевого оформления в виде графических границ (напр. закругленных углов)<pre class="prettyprint"><code>function modChrome_rounded($module, &amp;$params, &amp;$attribs)<br />{ ?&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;div class=&quot;module&lt;?php echo htmlspecialchars($params-&gt;get('moduleclass_sfx')); ?&gt;&quot;&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;div&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;div&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;div&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;?php if ($module-&gt;showtitle != 0) : ?&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;h3&gt;&lt;?php echo $module-&gt;title; ?&gt;&lt;/h3&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;?php endif; ?&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;?php echo $module-&gt;content; ?&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &lt;?php<br />}</code></pre></li><li><em>outline</em> — добавляет к блоку модуля предустановленные стили css<pre class="prettyprint"><code>function modChrome_outline($module, &amp;$params, &amp;$attribs)<br />{<br />&nbsp;&nbsp;&nbsp; static $css=false;<br />&nbsp;&nbsp;&nbsp; if (!$css)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $css=true;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; jimport('joomla.environment.browser');<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $doc = JFactory::getDocument();<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $browser = JBrowser::getInstance();<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $doc-&gt;addStyleDeclaration(&quot;.mod-preview-info { padding: 2px 4px 2px 4px; border: 1px solid black; position: absolute; background-color: white; color: red;}&quot;);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $doc-&gt;addStyleDeclaration(&quot;.mod-preview-wrapper { background-color:#eee; border: 1px dotted black; color:#700;}&quot;);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ($browser-&gt;getBrowser()=='msie')<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ($browser-&gt;getMajor() &lt;= 7) {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $doc-&gt;addStyleDeclaration(&quot;.mod-preview-info {filter: alpha(opacity=80);}&quot;);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $doc-&gt;addStyleDeclaration(&quot;.mod-preview-wrapper {filter: alpha(opacity=50);}&quot;);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $doc-&gt;addStyleDeclaration(&quot;.mod-preview-info {-ms-filter: alpha(opacity=80);}&quot;);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $doc-&gt;addStyleDeclaration(&quot;.mod-preview-wrapper {-ms-filter: alpha(opacity=50);}&quot;);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $doc-&gt;addStyleDeclaration(&quot;.mod-preview-info {opacity: 0.8;}&quot;);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $doc-&gt;addStyleDeclaration(&quot;.mod-preview-wrapper {opacity: 0.5;}&quot;);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; ?&gt;<br />&nbsp;&nbsp;&nbsp; &lt;div class=&quot;mod-preview&quot;&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;div class=&quot;mod-preview-info&quot;&gt;&lt;?php echo $module-&gt;position.&quot;[&quot;.$module-&gt;style.&quot;]&quot;; ?&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;div class=&quot;mod-preview-wrapper&quot;&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;?php echo $module-&gt;content; ?&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &lt;?php<br />}</code></pre></li><li><em>none</em> — аналогично не указанному вообще style. Выводит модуль без оформления и заголовка<pre class="prettyprint"><code>function modChrome_none($module, &amp;$params, &amp;$attribs)<br />{<br />&nbsp;&nbsp;&nbsp; echo $module-&gt;content;<br />}</code></pre></li></ul><p>Все предустановленные стили располагаются в файле templates/system/html/modules.php. Но мы не ограничены использованием только предоставленных вариантов, а вполне можем создавать свои собственные.</p>
<p>    <strong>3. Создание пользовательского mode chrome.</strong></p>
<p><strong><br>
</strong>Итак, предоставленные по умолчанию типы представления модулей не удовлетворяют текущих требований. Нужно добавить свой собственный стиль оформления. В качестве примера выберем достаточно часто повторяющуюся ситуацию. По заданию нужно вместо &lt;h3&gt; поместить заголовок модуля в тэг &lt;span&gt;, который является семантически нейтральным. Так же требуется поместить контентблок модуля в отдельный &lt;div&gt;. Для создания собственного стиля вывода модуля, воспользуемся стандартными средствами. В большинстве шаблонов  Joomla существет папка html/ (templates/имя шаблона/html/), используется для так называемой шаблонизации. То есть, если скопировать в эту папку шаблон модуля,  то вместо шаблона из директории modules/my_module/tmpl/default  будет выводиться файл из templates/имя шаблона/html/my_modules/default. Аналогично шаблонизируются и компоненты. Удобно и практично. В папке html/ Вашего шаблона создадим файл modules.php. Если такой папки в шаблоне нет, то создадим ее. В файл запишем<pre class="prettyprint"><code>&lt;?php<br />function modChrome_modbox($module, &amp;$params, &amp;$attribs) // Вызываем функцию<br />{<br />&nbsp;&nbsp;&nbsp; if (!empty ($module-&gt;content)) : /* Проверяем наличие в поиции включенного модуля */?&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=&quot;moduletable&lt;?php echo htmlspecialchars($params-&gt;get('moduleclass_sfx')); /* выводим суффикс css класса модуля */ ?&gt;&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php if ($module-&gt;showtitle != 0) : /* проверяем включен ли заголовок модуля */ ?&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;span class=&quot;title&quot;&gt;&lt;?php echo $module-&gt;title; /* Выводим заголовок */ ?&gt;&lt;/span&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php endif; ?&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=&quot;modcontent&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php echo $module-&gt;content; /* Выводим содержимое модуля */ ?&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &lt;?php endif;<br />}<br />?&gt;</code></pre>Готово. Теперь нужно только указать его в качестве стиля вывода.</p>
<p><pre class="prettyprint"><code>&lt;jdoc:include type=&quot;modules&quot; name=&quot;user1&quot; style=&quot;modbox&quot;/&gt;</code></pre>Назначаем в нашу позицию модуль и смотрим результат.</p>]]></description>
                <pubDate>Fri, 14 Sep 2012 00:46:26 +0400</pubDate>
                            </item>
                    <item>
                <title>Создание шаблонов для Joomla</title>
                <guid isPermaLink="true">http://joomclub.net/en/t/16/</guid>
                <link>http://joomclub.net/en/blog/templates/16.html</link>
                <author>al-teen@inbox.ru</author>
                <description><![CDATA[<p>Шаблоны практически всех CMS чем то похожи. Это обычные HTML шаблоны, интегрированные с системой. Чаще всего интеграция достигается путем вставки в нужные блоки программного кода, объявляющего те или иные элементы вывода: модулей, сайдбаров, материалов и т.д. Различия лишь в программировании, на уровне HTML никаких отличий нет и быть не может. Joomla в данном случае является классическим примером. Для того, чтобы создать в блоке шаблона позицию для модуля, нам требуется всего лишь вписать в него строчку <pre class="prettyprint"><code>&lt;jdoc:include type=&quot;modules&quot; name=&quot;mymodule&quot; /&gt;</code></pre><br>
Где <span><span>&lt;jdoc:include</span> <span>/&gt;</span> </span> — метод объявления вывода элемента на страницу.</p>
<p>type=«modules» — указания типа выводимого элемента.</p>
<p>name=«mymodule» — название модульной позиции. </p>
<p>Минимальная информация, необходимая для создания позиции в шаблоне. Используется для вывода на странице модулей, например: меню навигации, формы авторизации, «хлебных крошек» и т.д. Так же можно указывать title=&quot;&quot; для обозначения подсказки, style=&quot;&quot; для <a name="cut" rel="nofollow"></a> обозначения стиля вывода модуля. В случае отсутствия style модуль будет выводиться без заголовка. Обозначения стилей подробнее разберем в следующих статьях. А пока, в качестве наглядного примера создадим простой шаблон для Joomla.</p>
<p>Для этого необхомо создать пустую папку c произвольным названием, пусть будет mytemplate, в ней создадим папку css. Далее создадим файлы templateDetails.xml, index.php и пустой файл index.html для защиты от несанкционированного просмотра содержимого папки. В css/ файл стилей template.css. </p>
<p>Содержимое templateDetails.xml</p>
<p><pre class="prettyprint"><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />&lt;!DOCTYPE install PUBLIC &quot;-//Joomla! 2.5//DTD template 1.0//EN&quot; &quot;http://www.joomla.org/xml/dtd/1.6/template-install.dtd&quot;&gt; &lt;!-- Общая для всех xml шапка, определяющая тип документа и его кодировку --&gt;<br />&lt;extension version=&quot;2.5&quot; type=&quot;template&quot; client=&quot;site&quot;&gt; &lt;!-- Указание инсталлятору Joomla о версии и типе устанавливаемого расширения --&gt;<br />&nbsp;&nbsp;&nbsp; &lt;name&gt;mytemplate&lt;/name&gt; &lt;!-- Имя шаблона в списке менеджера шаблонов --&gt;<br /><br />&nbsp;&nbsp;&nbsp; &lt;files&gt; &lt;!-- Контейнер для списка файлов шаблона. --&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;folder&gt;css&lt;/folder&gt; &lt;!-- Указание папок --&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;filename&gt;index.html&lt;/filename&gt; &lt;!-- Указание файлов --&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;filename&gt;index.php&lt;/filename&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/files&gt; &lt;!-- Обязательно требуется для стандартного установщика Joomla. Важно! Если информация о папках или файлах, указанная в данном блоке не соответствуют действительности, например не верно указано имя, или файл отсутствует, то получим ошибку установки --&gt;<br /><br />&nbsp;&nbsp;&nbsp; &lt;positions&gt; &lt;!-- Контейнер для списка модульных позиций шаблона --&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;position&gt;debug&lt;/position&gt; &lt;!-- Указание имени модульной позиции --&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;position&gt;header&lt;/position&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;position&gt;menu&lt;/position&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;position&gt;footer&lt;/position&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/positions&gt;<br />&lt;/extension&gt;</code></pre><br>
В файле index.php</p>
<p><pre class="prettyprint"><code>&lt;?php<br />// Защита от прямого обращения к сценарию.<br />defined('_JEXEC') or die;<br />?&gt;<br />&lt;!DOCTYPE html&gt;<br />&lt;html lang=&quot;&lt;?php echo $this-&gt;language; ?&gt;&quot;&gt;<br />&lt;meta charset=&quot;utf-8&quot;&gt;<br />&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;jdoc:include type=&quot;head&quot; /&gt; // Требуется для вывода информации &lt;title&gt;&lt;/title&gt;, meta стилей и скриптов расширений.<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;link rel=&quot;stylesheet&quot; href=&quot;&lt;?php echo $this-&gt;baseurl ?&gt;/templates/system/css/system.css&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;link rel=&quot;stylesheet&quot; href=&quot;&lt;?php echo $this-&gt;baseurl ?&gt;/templates/system/css/general.css&quot;&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Подключаем системные стили<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;link rel=&quot;stylesheet&quot; href=&quot;&lt;?php echo $this-&gt;baseurl ?&gt;/templates/&lt;?php echo $this-&gt;template; ?&gt;/css/template.css&quot;&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Подключаем файл стиля шаблона. Важно! Путь к файлу необходимо указывать в точности, как написано здесь, то есть абсолютный путь. <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // В противном случае чревато неправильным отображением шаблона на внутренних страницах. То же касается и подключения js файлов.<br />&lt;/head&gt;<br />&nbsp; &lt;body&gt;<br />&nbsp;&nbsp;&nbsp; &lt;div id=&quot;page&quot;&gt; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;header&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;jdoc:include type=&quot;modules&quot; name=&quot;header&quot; /&gt; // Модульная позиция header<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/header&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;nav&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;jdoc:include type=&quot;modules&quot; name=&quot;menu&quot; style=&quot;xhtml&quot; /&gt; // Модульная позиция menu<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/nav&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;section&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;jdoc:include type=&quot;message&quot; /&gt; // Позиция вывода системных сообщений<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;jdoc:include type=&quot;component&quot; /&gt; // Вывод информации компонентов<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/section&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;footer&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;jdoc:include type=&quot;modules&quot; name=&quot;footer&quot; /&gt; // Модульная позиция footer<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/footer&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &lt;jdoc:include type=&quot;modules&quot; name=&quot;debug&quot; /&gt; // Вывод отладочной информации<br />&nbsp; &lt;/body&gt;<br />&lt;/html&gt;</code></pre><br>
template.css</p>
<p><pre class="prettyprint"><code>body{margin:0;padding:0;}<br />header,nav,section,footer{display:block;padding:5px;}<br />#page{border:1px #000 solid;width:960px;margin:0 auto;}<br />header{height:100px;}<br />nav{width:200px;float:left;margin:10px 0;}<br />section{width:730px;float:right;margin:10px 0;}<br />footer{height:100px;}</code></pre></p>
<p>Пример, наглядно демонстрирующий простоту работы с шаблонами Joomla. Алгоритм несложный, взять готовый шаблон HTML и вывести в нужных местах нужные элементы. Конечно же, в более сложных шаблонах приходится использовать условия отображения, скрипты, пользоваться другими возможностями Joomla, а так же вести разработку на различных шаблонных фрэймворках (Gantry, T3 и т.д.). Но если Вам не требуется ничего сверхординарного и сложного, то вполне можно обойтись даже описанным выше простейшим функционалом. </p>
<p> </p>]]></description>
                <pubDate>Wed, 12 Sep 2012 14:21:01 +0400</pubDate>
                            </item>
            </channel>
    </rss>
