<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : Выборочная загрузка ресурсов CSS и JS</title>
		<link>https://www.cotonti.com</link>
		<description>Last topic posts</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Wed, 08 Apr 2026 16:21:30 -0000</pubDate>

		<item>
			<title>jcrush</title>
			<description><![CDATA[<pre class="code">&lt;!-- IF {PHP.usr.id} = 0 --&gt;{HEADER_COMPOPUP}&lt;!-- ENDIF --&gt;</pre> <a href="http://stfw.ru/page.php?id=16963" rel="nofollow">Как то так...</a>]]></description>
			<pubDate>Sun, 20 Feb 2011 13:31:05 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post28428]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[<blockquote><a href="https://www.cotonti.com/forums.php?m=posts&amp;p=27866#27866">#</a> <strong>Trustmaster :</strong>
1. На данный момент (0.9) порядок выполнения хуков такой:<br />
{Skipped...}<br />
2. В Сиене этот вопрос решён<br />
{Skipped...}<br />
3. Чтобы было ясно ...<br />
{Skipped...}<br />
</blockquote>
<br />
Спасибо за развернутый ответ.<br />
<br />
<br />
Глянул мельком Сиену - суперически! <br />
Спасибо, что прикрутили использование CDN при загрузке jQuery. <br />
Если можно было еще указать в настройках (без правки кода) с какого CDN грузить - было бы вообще супер. (см. например <a href="http://api.yandex.ru/jslibs/libs.xml#jquery)" rel="nofollow">http://api.yandex.ru/jslibs/libs.xml#jquery)</a><br />
<br />
Изучаю функции работы с подгружаемыми ресурсами.<br />
<br />
зы: отписал в соотв. топике о некотором баге в админке. (http://www.cotonti.com/forums.php?m=posts&amp;id=27871) Проявляется только в Google Chrome.<br />
<br />
update: Буду признателен, если потом появится некоторый &quot;How to&quot; по функциям загрузки ресурсов, наподобие страницы про AJAX функции (http://www.cotonti.com/docs/en/developer/ajax_helpers) - все c примерами, четко и доходчиво. Спс.]]></description>
			<pubDate>Wed, 12 Jan 2011 07:20:17 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post27872]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[еще у нас есть такая штука Order=1 - которая устанавливает порядок загрузки плугов]]></description>
			<pubDate>Wed, 12 Jan 2011 06:00:28 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post27868]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[1. На данный момент (0.9) порядок выполнения хуков такой:<br />
<ol>
<li>input, global</li>
<li>module.first (для модулей), module.main (для модулей), standalone (для плагинов)</li>
<li>header.first, header.main, header.tags</li>
<li>module.tags (для модулей)</li>
<li>footer.first, footer.main, footer.last</li>
</ol>
<br />
2. В Сиене этот вопрос решён, правда способом далеко не самым простым и без документации разобраться будет непросто. Но если кратко, есть 2 способа вывода JS и CSS кода:<br />
<ol>
<li>Непосредственный. Почти как раньше, только вместо переменной $out['compopup'] используются функции cot_rc_link_file() и cot_rc_embed().</li>
<li>В область кеша. Такие ресурсы добавляются в кеш с помощью специальных функций cot_rc_add_file() и cot_rc_add_embed() в специальном хуке rc. Это позволяет движку разделять их на несколько областей видимости, а также группировать их и выводить в сжатом виде, не перегружая при этом сервер слишком частой ресурсоёмкой минификацией скриптов и стилей.</li>
</ol>
<br />
3. Чтобы было ясно, что без этого тега работать не будет, хоть и используют они его только косвенно.]]></description>
			<pubDate>Wed, 12 Jan 2011 05:40:16 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post27866]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[<blockquote><a href="https://www.cotonti.com/forums.php?m=posts&amp;p=24388#24388">#</a> <strong>Trustmaster :</strong>
А в большинстве модулей (точнее, во всех) у нас значительная часть боди выполняется до хедера и так, надо только это правильно использовать. Решение по объединению JS/CSS в кеш-файлах в стадии обдумывания реализации, кое-какие идеи есть. Вообще говоря, &quot;идеального универсального решения&quot; этой проблемы не существует, поскольку априори движок не может знать обо всех хотелках любого произвольного запроса, а апостериори может получиться чрезмерная избыточность и нерациональное использование ресурсов.<br />
</blockquote>
<br />
1. На сколько я понимаю пока нет полной унификации того, в какой последовательности выполняются части (модули) движка если полагаться на хуки. <br />
<br />
Я имею в виду что header.main выполняется раньше &quot;парсинга&quot; страницы или тела плагина, и это на мой взгляд логично. А вот при обработке утилит (tools) сначала система обрабатывает основной код плагина (утилиты с хуком tools), а уже потом берется за header. Тут получается обратная логика.<br />
<br />
2. Есть ли в последних версиях какой-либо стандартный механизм загрузки файлов через заголовок HTML файла, кроме как править $out['compopup'] через хук header.main ? (Я имею в виду вставку ссылок в секцию &lt;HEAD&gt; для загрузки CSS и JS файлов).<br />
<br />
В догонку:<br />
3. Зачем во многих плагинах (например Tags, Search, Markitup) используется такая запись (в файлах *.header.php):<br />
<pre class="code">
Hooks=header.main
Tags=header.tpl:{HEADER_COMPOPUP}
</pre>
<br />
Я имею в виду указание тега {HEADER_COMPOPUP}, если по факту плагины его не используют? А на прямую пишут в $out['compopup'] ?]]></description>
			<pubDate>Wed, 12 Jan 2011 02:47:49 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post27862]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[а зачем сразвнивать Jquery 1.3 когда уже полгода есть 1.4 - в которой производительность возрасла вдвое?<br />
Зачем надо 2 библиотеки, которые выполняют одно и тоже\?<br />
и чем отличается это:<br />
&lt;script src=https://www.cotonti.com/&quot;yass.js&quot; type=&quot;text/javascript&quot; class=&quot;yass-module-jquery&quot;&gt;&lt;/script&gt;<br />
от этого:<br />
&lt;script src=https://www.cotonti.com/&quot;yass.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br />
&lt;script src=https://www.cotonti.com/&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br />
<br />
я просто не вижу преимущества. Остальные примеры остались для меня так же весьма сомнительными.]]></description>
			<pubDate>Fri, 01 Oct 2010 17:07:52 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post26430]]></link>
		</item>
		<item>
			<title>terracota</title>
			<description><![CDATA[И как давно вы в последний раз на него смотрели?<br />
<br />
Я не говорю про замену замечательной jQuery на Yass, я говорю о возможности Yass подгружать любые ява-библиотеки по мере необходимости. Вот <a href="http://yass.webo.in/ru/docs/" rel="nofollow">о чем</a> речь.<br />
<br />
Ну и, знаете, <a href="http://yass.webo.in/ru/slickspeed/?Prototype_1-6-0-3/jQuery_1-3-2/yass_0-3-8" rel="nofollow">медленной</a> она уж никак не выглядит.]]></description>
			<pubDate>Thu, 30 Sep 2010 13:43:50 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post26407]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[зачем нам Yass ??? Это медленоватая пародия на jquery не более]]></description>
			<pubDate>Thu, 30 Sep 2010 04:36:02 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post26398]]></link>
		</item>
		<item>
			<title>terracota</title>
			<description><![CDATA[У меня тоже есть множество идей по улучшению движка, я, пожалуй, присоединюсь. По вышесказанному: можно подгружать нужное через <a href="http://yass.webo.in/ru/" rel="nofollow">Yass</a>. Это довольно интересное решение, но требует знаний и умений, которыми я пока не обладаю <img class="aux smiley" src="https://www.cotonti.com/./images/smilies/smile.gif" alt=":)" /> А вот хотя бы ознакомиться с этим решением очень рекомендую.]]></description>
			<pubDate>Wed, 29 Sep 2010 23:47:41 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post26378]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[А в большинстве модулей (точнее, во всех) у нас значительная часть боди выполняется до хедера и так, надо только это правильно использовать. Решение по объединению JS/CSS в кеш-файлах в стадии обдумывания реализации, кое-какие идеи есть. Вообще говоря, &quot;идеального универсального решения&quot; этой проблемы не существует, поскольку априори движок не может знать обо всех хотелках любого произвольного запроса, а апостериори может получиться чрезмерная избыточность и нерациональное использование ресурсов.]]></description>
			<pubDate>Fri, 30 Apr 2010 21:15:10 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post24388]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[эх... а я бы делал бы загрузку хедера после боди...<br />
оче6нь яркий пример описан выше.<br />
еще пример: ЛС - открываешь непрочитанное в хедере оно еще непрочитанное - а в футере его уже прочитали]]></description>
			<pubDate>Fri, 30 Apr 2010 11:50:57 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post24385]]></link>
		</item>
		<item>
			<title>jcrush</title>
			<description><![CDATA[Да такое по умолчанию должно быть, я давно об этом говорю, часть так же перенес css в основной, библиотеку jquery гружу с яндекс сервера.<br />
<br />
+<br />
сделать фитчу как в ДЛЕ автоматическое сжимание явы и стилей зипом и вывод их одним файлом, т.е. склеить на лету.]]></description>
			<pubDate>Fri, 30 Apr 2010 08:30:54 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post24384]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[Чтобы проще и глубже вникнуть в <strong>суть проблемы</strong> - зайдите на главную страницу <strong>cotonti.com</strong> и нажмите &quot;<strong>Ctrl-U</strong>&quot; (или иную комбинацию, которая позволит просмотреть исходный код страницы). <br />
Смотрим секцию <strong>&lt;head&gt;&lt;/head&gt;</strong>. Ничего не смущает? Лично меня тут смущает и напрягает куча не нужных (особенно на главной) скриптов и загрузок.<br />
<br />
Давайте глянем:<br />
<pre class="code">skins/sed-light/sed-light.css
js/jquery.js
js/base.js
./plugins/chili/js/jquery.chili.js
./plugins/chili/js/jquery.chili.toolbar.js
./plugins/chili/lang/jquery.chili.toolbar.ru.lang.js
./plugins/chili/skins/jquery.chili.toolbar.css

&lt;script type=&quot;text/javascript&quot; &gt; 
//&lt;!&#091;CDATA&#091;
  &#091;тут вырезана настройка Чили&#093;
//&#093;&#093;&gt;

./plugins/tpltags/style.css
./plugins/slimbox/css/slimbox2.css
./plugins/slimbox/js/slimbox2.js
./plugins/slimbox/js/jquery.jScale.js
	&lt;script type=&quot;text/javascript&quot;&gt; 
	//&lt;!&#091;CDATA&#091;
  &#091;тут вырезана настройка СлимБокс&#093;
	//&#093;&#093;&gt;
	&lt;/script&gt; 
./plugins/tags/style.css</pre>
<br />
На главной (в зависимости от ваших задач) необходимо только:<br />
<em>skins/sed-light/sed-light.css</em> - однозначно нужен<br />
<em>js/jquery.js</em> - в принципе нужен, особенно если на главной используются какие-либо дополнит. JQuery плагины<br />
<em>js/base.js</em> - 7 кб разнообразных специфических функций, возможно для главной можно и удалить<br />
<em>./plugins/tags/style.css</em> - надо, т.к. Тэги используются практически повсеместно (хотя в таком случае резонно перенести в основной файл).<br />
<em>SlimBox</em> и его скрипты - удалил, т.к. в данном случае на главной он похоже не используется.<br />
Итого из ~ 30 строк кода нам реально нужна (для данной страницы) загрузка 4-5 файлов.<br />
А теперь представьте, что какой-нибудь плагин использует еще 2-3 файла JS/CSS и это тоже оказывается в шапке главной страницы.<br />
<br />
<strong>Резюмируя</strong>: описания в заголовке страницы сильно избыточны и должны меняться в зависимости от загружаемой страницы.<br />
<br />
У кого какие мысли? <br />
<br />
<strong>Я частично вышел из положения таким образом</strong>:<br />
<br />
1. <strong>Подредактировал плагины Chili и markitup</strong> так, чтобы они загружались только на необходимых мне страницах - для меня это:<br />
chili - только на pages.php<br />
markitup - pages.php и forums.php<br />
(делается это правкой файлов *.header.php для каждого из плагинов)<br />
<br />
2. <strong>Написал небольшой плагин автозагрузчик ресурсов</strong> для собственных плагинов.<br />
Работает следующим образом:  плагин цепляется на header.main с Order=13 (чтобы выполнялся после остальных плагинов) и обрабатывает специальный подготовленный массив, в котором указаны какие файлы надо грузить и на каких страницах и по каким условиям.<br />
  Как формируется этот массив? Да очень просто - для нужного плагина создается *.header.php, <br />
Цепляем header.main с Order=10 (обычно его и ставят). Далее в нем пишем примерно такой код (специально разнообразил вариантами):<br />
<br />
<div class="highlight"><pre class="php">
$plug_name = 'slideshow'; // имя текущего подопытного плагина
if ($e==$plug_name) { // чтобы загрузка файла сработала только для этого плагина
  $header_loads&#091;&#093; = array(
    'file' =&gt; &quot;./js/jquery.timers.js&quot;,
    'type' =&gt; 'JS'
  );
}

  // загрузка сработает для стороннего плагина
  $header_loads&#091;&#093; = array(
    'part' =&gt; 'plug' 
    'code' =&gt; 'contactus', // сработает в плагине 'contactus'
    'file' =&gt; &quot;./js/jquery.slider.js&quot;,
    'type' =&gt; 'JS'
  );

  // загрузка файла произойдет только в админке в разделе Утилиты IP Search
  $header_loads&#091;&#093; = array(
    'part' =&gt; 'tools' 
    'code' =&gt; 'ipsearch', // сработает в соотв. плагине 
    'file' =&gt; &quot;./js/jquery.slider.js&quot;,
    'type' =&gt; 'JS'
  );
  
  // Указанный файл будет подгружаться на всех страницах
  $header_loads&#091;&#093; = array(
    'part' =&gt; 'all' 
    'code' =&gt; '',
    'file' =&gt; &quot;./js/wonderfull.css&quot;,
    'type' =&gt; 'CSS'
  );

  // Указанный файл будет подгружаться на странице с альясом &quot;howto&quot;
  $header_loads&#091;&#093; = array(
    'part' =&gt; 'param' 
    'code' =&gt; 'al=howto',
    'file' =&gt; &quot;./js/wonderfull.css&quot;,
    'type' =&gt; 'CSS'
  );

  // загрузка файла произойдет на всех страницах сайта, кроме тех, когда определены перечисленные константы
  $header_loads&#091;&#093; = array(
    'part' =&gt; '!def' 
    'code' =&gt; 'SED_PLUG,SED_INDEX,SED_PFS,SED_POLLS,SED_USERS', // не грузимся в плагинах,главной,ПФС и т.д.
    'file' =&gt; &quot;./plugins/chili/js/jquery.chili.js&quot;,
    'type' =&gt; 'JS'
  );
</pre></div>
<br />
В идеале - на любой странице сайта у нас загружаются только те ресурсы (JS/CSS), которые необходимы именно для этой страницы.<br />
<br />
Вот как-то так. Надеюсь не очень сумбурно. <br />
Если будет интерес могу поделиться плагином.]]></description>
			<pubDate>Fri, 30 Apr 2010 07:46:18 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=5578&d=0#post24382]]></link>
		</item>
	</channel>
</rss>