<?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>mootools / Поиск по тегам / Русский клуб Joomla</title>
        <link>http://joomclub.net/ru/rss/tag/mootools/</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>Mootools VS JQuery а почему не совместить?</title>
                <guid isPermaLink="true">http://joomclub.net/ru/t/58/</guid>
                <link>http://joomclub.net/ru/blog/58.html</link>
                <author>byrkovskiy@yandex.ru</author>
                <description><![CDATA[<p>Я думаю, все очень часто сталкивались с тем, что нужно было подключить сторонние  JSскрипты. И тут возникала проблема что подключенный скрипт не работает. </p>

<p>Конечно, одни советую отключать Mootools, но зачем же? Ведь много компонентов используют его, да и разработчики joomlaне зря его используют тоже.<span>  </span></p>

<p>Так тут один выход – совмещать эти библиотеки. Возникает вопрос как? Тут на помощь нам приходит 
</p>
<pre class="prettyprint"><code>&nbsp;jQuery.noConflict();</code></pre>
<p>Использовать его нужно при подключении Вашего стороннего скрипта</p>
<pre class="prettyprint"><code>&lt;script type=&quot;text/javascript&quot; src=&quot;.js&quot;&gt;jQuery.noConflict();&lt;/script&gt;</code></pre>
<p>И еще обязательно использовать это перед тем где Вы подключаете</p>
<pre class="prettyprint"><code>&lt;jdoc:include type=&quot;head&quot; /&gt;</code></pre>
<p>Ведь именно здесь joomlaподключить все необходимые библиотеки для себя. </p>

<p>Также можно использовать следующие варианты:</p>

<p><span>1.<span>  </span></span>Для jQuery кода вместо $ использовать jQuery</p>
<pre class="prettyprint"><code>JQuery(&quot;divspan&quot;).hide();</code></pre>
<p><span>2.<span>  </span></span>Вместо jQuery использовать другое имя:</p>
 <a name="cut" rel="nofollow"></a> 
<pre class="prettyprint"><code>var k=jQuery.noConflict(); 
k(&quot;div span&quot;).hide();</code></pre>
<p>А теперь давайте копнем, почему же возникает этот конфликт?</p>

<p>При подключении <span>&lt;jdoc:include type=«head» /&gt;, мы подключили и </span>mootools. А там система зарезервировала $ за собой. Вот и возникает конфликт из-за пространства имен.</p>

<p><b><u>На последок, давайте поговорим про jQuery.noConflict().(очень красиво описано на <a href="http://jquery.page2page.ru)" rel="nofollow">http://jquery.page2page.ru)</a></u></b></p>

<p>Освобождает переменную <b>$</b>, чтобы избежать конфликтов имен. Метод имеет один вариант использования: </p>
<pre class="prettyprint"><code>jQuery.noConflict([removeAll]);</code></pre>
<p><b>removeAll</b> — необязательный параметр типа boolean, при значении true функция освободит все имена переменныых, занятые библиотекой jQuery. По умолчанию, равен false. </p>

<p>Многие другие javascript библиотеки, так же как и jQuery используют $ как имя переменной или функции. Однако, в случае jQuery, $ является синонимом (алиасом) идентификатора jQuery. Поэтому, при освобождении имени $ с помощью jQuery.noConflict() мы не теряем функциональности библиотеки jQuery, посколько можем использовать вместо него jQuery. </p>
<pre class="prettyprint"><code>&lt;script type=&quot;text/javascript&quot; src=&quot;other_lib.js&quot;&gt;&lt;/script&gt; 
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt; 
&lt;script type=&quot;text/javascript&quot;&gt; &nbsp; 
&nbsp; jQuery.noConflict(); 
&nbsp; // Далее может следовать код с использованием $ других библиотек. 
&lt;/script&gt;&lt;span&gt;&nbsp; &lt;/span&gt;</code></pre>
<p>  К сожалению, отключение идентификатора $ может привести к неправильной работе некоторых плагинов jQuery. Для этого случая существует следующий трюк: </p>
<pre class="prettyprint"><code>jQuery.noConflict(); 
(function($){ &nbsp; 
&nbsp; // здесь $ будет действовать как алиас jQuery 
})(jQuery); 
// здесь $ будет доступен для других библиотек</code></pre>
<p>То есть, мы можем вернуть алиас $ для jQuery локально — для кода, находящегося внутри функции, заданной указанным образом. Этот трюк можно использовать с методом <a href="http://jquery.page2page.ru/index.php5/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA_%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%B0_DOM" title="Обработчик готовности дерева DOM" rel="nofollow"><span>.ready()</span></a>: </p>
<pre class="prettyprint"><code>jQuery.noConflict(); 
jQuery(document).ready(function($) { &nbsp; 
&nbsp; // здесь $ будет действовать как алиас jQuery 
}); 
// здесь $ будет доступен для других библиотек</code></pre>
<p>Можно сделать вывод, если Вы подключаете сторонний скрипт, лучше всего использовать то, что было описано в самом начале. И не париться с заменой имен $ на JQuery или другое через переменную.</p>

<p>Но если Вы пишите свой скрипт, так конечно лучше сразу учесть возможность конфликта и с умом использовать имена и обращения к ним.</p>

<p>Удачи Вам! И помните –</p>

<p align="center">ВСЕ ГЕНИАЛЬНОЕ ПРОСТО НО НЕ ВСЕ ПРОСТОЕ ГЕНИАЛЬНО</p>]]></description>
                <pubDate>Sun, 07 Oct 2012 14:34:21 +0400</pubDate>
                            </item>
                    <item>
                <title>В продолжение темы отключения Mootools в шаблоне сайта на Joomla 2.5</title>
                <guid isPermaLink="true">http://joomclub.net/ru/t/37/</guid>
                <link>http://joomclub.net/ru/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/ru/t/33/</guid>
                <link>http://joomclub.net/ru/blog/joomla25/33.html</link>
                <author>langolier@mail.ru</author>
                <description><![CDATA[<p>С позволения продолжу тему, начатую пользователем <a href="http://joomclub.net/profile/Dron79/" rel="nofollow">Dron79</a> о том, как <a href="http://joomclub.net/blog/joomla25/32.html" rel="nofollow">отключить mootools на уровне шаблонов</a>. Я же хочу предложить вариант более грубый, на уровне ядра Joomla. И, хочу заметить, он глобальный. Подойдет он далеко не всем, Я думаю, однако тех, кто использует фреймворки, этот метод устроит, так как другие варианты работать не будут, если слово в слово выполнять инструкции с Joomlaforum или статьи, упомянутой выше.</p>
<p>Итак, Я хочу предложить неполное отключение mootools посетителям имеющих статус гость, т.е. для неавторизованных пользователей. Почему неполное? Потому что некоторые расширения для Joomla до сих пор используют mootools, но далеко не все, что грузит Joomla. Об этом немного подробнее… <a name="cut" rel="nofollow"></a> </p>
<p>Если целиком и полностью отключить mootools (хотя этот вариант мы тоже рассмотрим), то некоторые сторонние расширения работать не будут. А бывают немного глупые ситуации, например, установив расширение, использующее mootools мы получим головную боль и, возможно, много убитого впустую времени, так как в его описании не было указано, что ему необходим mootools. Однако часть скриптов нам все же не нужна (по крайней мере для гостей). Итак, отключим для гостей дополнения mootools, которые грузятся постоянно и нам не нужны:</p>
<p>Править мы будем файл <strong>/libraries/joomla/html/html/behavior.php</strong>, который отвечает за вызов всех js скриптов из дериктории <strong>media/system/js/</strong>.</p>
<p><strong>Первый</strong> вариант частичного отключения mootools для гостей:</p>
<p>Находим строчки</p>
<p> <pre class="prettyprint"><code>JHtml::_('script', 'system/mootools-' . $type . '.js', false, true, false, false, $debug);
JHtml::_('script', 'system/core.js', false, true);
self::$loaded[__METHOD__][$type] = true;</code></pre></p>
<p>И заменяем их на</p>
<p> <pre class="prettyprint"><code>$user =&amp; JFactory::getUser();
if ($user-&gt;get('guest') == 1) {
JHtml::_('script', 'https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js', false, true, false, false, $debug);
JHtml::_('script', 'system/core.js', false, false);
JHtml::_('script', 'system/mootools-more.js', false, false, false, false, $debug);
self::$loaded[__METHOD__][$type] = true;

}else {
JHtml::_('script', 'https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js', false, true, false, false, $debug);
JHtml::_('script', 'system/core.js', false, true);
JHtml::_('script', 'system/mootools-more.js', false, true, false, false, $debug);
self::$loaded[__METHOD__][$type] = true;}</code></pre></p>
<p>Здесь мы заставляем джумлу грузить не локальную версию mootools, а с сервера Google, а так же запрещаем грузиться дополнениям mootools гостям.</p>
<p>Чуть ниже находим</p>
<p> <pre class="prettyprint"><code>JHtml::_('script', 'system/caption.js', true, true);</code></pre></p>
<p>И заменяем на</p>
<p> <pre class="prettyprint"><code>$user =&amp; JFactory::getUser();
if ($user-&gt;get('guest') == 1) {
JHtml::_('script', 'system/caption.js', false, false); if( isset($this-&gt;_script['text/javascript']) ) { $this-&gt;_script['text/javascript'] = preg_replace('%window\.addEvent\(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this-&gt;_script['text/javascript']); if( empty($this-&gt;_script['text/javascript']) ) unset( $this-&gt;_script['text/javascript'] ); } 
} else {
JHtml::_('script', 'system/caption.js', true, true);
}</code></pre></p>
<p>Опять запрещаем грузить дополнение гостям.</p>
<p>Чтобы было понятнее, мы сначала загрузили саму библиотеку mootools с серверов Google: https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js. Эта версия, а не локальная, будет грузится всем и везде. И даже в административной части. Зачем это? Это поможет нам ускорить загрузку сайта в целом. Как известно гораздо быстрее скрипты загружаются со внешних источников, если они конечно имеют большую пропускную способность, а Google имеет, поверьте ;)</p>
<p>Затем мы для гостей отключили дополнения mootools. В итоге мы грузим только удаленную копию библиотеки mootools без лишних дополнений.</p>
<p><strong>Второй</strong> вариант отключения mootools для гостей: нужно строки ниже:</p>
<p> <pre class="prettyprint"><code>JHtml::_('script', 'system/mootools-' . $type . '.js', false, true, false, false, $debug);
JHtml::_('script', 'system/core.js', false, true);
self::$loaded[__METHOD__][$type] = true;</code></pre></p>
<p>Заменить на эти:</p>
<p> <pre class="prettyprint"><code>$user =&amp; JFactory::getUser();
if ($user-&gt;get('guest') == 1) {
JHtml::_('script', 'system/mootools-' . $type . '.js', false, false, false, false, $debug);
JHtml::_('script', 'system/core.js', false, false);
self::$loaded[__METHOD__][$type] = true;
}else {
JHtml::_('script', 'system/mootools-' . $type . '.js', false, true, false, false, $debug);
JHtml::_('script', 'system/core.js', false, true);
self::$loaded[__METHOD__][$type] = true; }</code></pre></p>
<p>Затем необходимо в шаблоне и всех расширениях вычищать:</p>
<p> <pre class="prettyprint"><code>JHtml::_('behavior.tooltip');
JHtml::core();</code></pre></p>
<p>… и тому подобное, иначе мы получим неработоспособную страницу или весь сайт.</p>
<p>Вот и все. Чем плох этот метод? Тем, что после обновления движка все придется делать заново.</p>
<p>Благодарю пользователей <a href="http://joomlaforum.ru/index.php?action=profile;u=70750" rel="nofollow">wfedin</a> и <a href="http://joomlaforum.ru/index.php?action=profile;u=38176" rel="nofollow">Shustry</a> с Joomlaforum за помощь. Использовал так же материалы со <a href="http://www.yazov.com/blog/joom/125-otklychenie-mootools-dlyz-gostei.html" rel="nofollow">своего сайта</a></p>]]></description>
                <pubDate>Tue, 18 Sep 2012 12:46:25 +0400</pubDate>
                            </item>
                    <item>
                <title>Отключение скриптов  mootools на уровне шаблона</title>
                <guid isPermaLink="true">http://joomclub.net/ru/t/32/</guid>
                <link>http://joomclub.net/ru/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>
            </channel>
    </rss>
