Хак: Умное Кеширование и Версионность в Javascript/CSS (2.x)

+21
3.68K
Всем привет!

Аналогично недавно выложенному хаку Хак: Умное Кеширование и Версионность в Javascript/CSS (1.x) предлагаю доработку для 2-ой ветки!

Файл: /system/core/template.php
функцию:
  1.  
  2. public function getJSTag($file, $comment=''){
  3. $file = strstr($file, 'http://') ? $file : cmsConfig::get('root') . $file;
  4. $comment = $comment ? "<!-- {$comment} !-->" : '';
  5. return '<script type="text/javascript" src="'.$file.'">'.$comment.'</script>';
  6. }
  7.  
меняем на:
  1.  
  2. public function getJSTag($file, $comment=''){
  3. $file = strstr($file, 'http://') ? $file : cmsConfig::get('root') . $file;
  4. $comment = $comment ? "<!-- {$comment} !-->" : '';
  5. return '<script type="text/javascript" src="'.$file.'?'.filemtime(PATH.$file).'">'.$comment.'</script>';
  6. }
  7.  
а также
функцию:
  1.  
  2. public function getCSSTag($file){
  3. $file = strstr($file, 'http://') ? $file : cmsConfig::get('root') . $file;
  4. return '<link rel="stylesheet" type="text/css" href="'.$file.'">';
  5. }
  6.  
меняем на:
  1.  
  2. public function getCSSTag($file){
  3. $file = strstr($file, 'http://') ? $file : cmsConfig::get('root') . $file;
  4. return '<link rel="stylesheet" type="text/css" href="'.$file.'?'.filemtime(PATH.$file).'">';
  5. }
  6.  
Всем удачных выходных!
-1
vikont vikont 8 лет назад #
При замене кода у public function getJSTag сразу умирает редактор Live.
Те кто им не пользуется этого глюка не заметит.
Подправь, что там не так с кодом.
+1
irbis irbis 8 лет назад #
Редактор Live каким-то кривым способ подключает дополнительные скрипты, стили и 1 графический файл.
Путь к основному скрипту он вычисляет следующим образом:
Код PHP:
  1. if(sSrc.indexOf("scripts/innovaeditor.js")!=-1) sEditorPath=oScripts[i].src.replace(/innovaeditor.js/,"");
Чтобы все заработало со стороны редактора, нужно править 2 файла, 1 из которых запакован.
Поэтому самым простым вариантом внести корректировку в файл /wysiwyg/live/wysiwyg.class.php
вместо:
Код PHP:
  1. cmsTemplate::getInstance()->addJS("wysiwyg/live/scripts/language/{$lang}/editor_lang.js", 'LiveEditor Lang', false);
  2. cmsTemplate::getInstance()->addJS('wysiwyg/live/scripts/innovaeditor.js', 'LiveEditor', false);
прописать:
Код PHP:
  1. //cmsTemplate::getInstance()->addJS("wysiwyg/live/scripts/language/{$lang}/editor_lang.js", 'LiveEditor Lang', false);
  2. //cmsTemplate::getInstance()->addJS('wysiwyg/live/scripts/innovaeditor.js', 'LiveEditor', false);
  3. echo '<script type="text/javascript" src="/wysiwyg/live/scripts/language/'.$lang.'/editor_lang.js"></script>';
  4. echo '<script type="text/javascript" src="/wysiwyg/live/scripts/innovaeditor.js"></script>';
0
vikont vikont 8 лет назад #
Спасибо! Все заработало!
0
vikont vikont 8 лет назад #
Поторопился с благодарностями smile Редактор Live все так же странно себя ведет! При создании новости у меня задействовано 2 поля использующие редактор Live, так вот верхнее поле показывает редактор, но ни одна кнопка не нажимается, а в нижнем поле все работает. Как это исправить?
0
irbis irbis 8 лет назад #
Это точно связано с моей правкой?
Мне кажется, что нет...
-1
vikont vikont 8 лет назад #
Да, это связано с вашей правкой. Возвращаю назад, все сразу работает. Вот почему такая странность с live не берусь судить. По логике должно все работать одинаково, сколько бы полей с данным редактором не было. Но вот такой глюк вылез.
+2
lokanaft lokanaft 8 лет назад #
Проверяли работу при установке системы в субдиректории?

Еще от автора

Компонент "Совместные покупки"
Всем привет! Уже как год лежит готовый компонент для организации "Совместных покупок".
Хак: добавление комментариев в ленту активности
Всем привет! Решил выложить свою мини-доработку по добавлению комментария в ленту активности.
Хак: поворот фото в Фотоальбомах
Всем привет! Давно ничего не писал, как обычно нет на все времени.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.