Перейти к содержимому


Фото
- - - - -

Smarty Minify 1.3

smarty minify js css vqmod less

  • Чтобы отвечать, сперва войдите на форум
46 ответов в теме

#41 yr4ik

yr4ik
  • Фрилансер
  • 865 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 12.09.2018 - 11:08

not vqmod версия
 
 
1) Папки из архива распаковываем в корень сайта 
 
2) api/Simpla.php после строки: 

'design'     => 'Design',

добавляем: 

#SMARTY_MINIFY
        'js'     => 'Javascript',
        'css'     => 'Stylesheet',
#SMARTY_MINIFY


3) view/View.php после строки:

// Настраиваем плагины для смарти

добавляем: 

#SMARTY_MINIFY
            // функции для работы с js 
            $this->design->smarty->registerPlugin('block', 'js',        array($this, 'add_javascript_block'));
            $this->design->smarty->registerPlugin('function', 'unset_js',        array($this, 'unset_javascript_function'));
            $this->design->smarty->registerPlugin('function', 'javascript',        array($this, 'print_javascript'));
        
            // функции для работы с css 
            $this->design->smarty->registerPlugin('block', 'css',        array($this, 'add_stylesheet_block'));
            $this->design->smarty->registerPlugin('function', 'unset_css',        array($this, 'unset_stylesheet_function'));
            $this->design->smarty->registerPlugin('function', 'stylesheet',        array($this, 'print_stylesheet'));
#SMARTY_MINIFY 

 

в том же файле ПЕРЕД строкой: 

public function get_discounted_products_plugin($params, &$smarty)

добавляем: 

#SMARTY_MINIFY
    /*
    * Функции для работа с файлами javascript
    * Регистрация  js фал(а|ов) или кода
    */
    public function add_javascript_block($params, $content, $smarty, &$repeat)
    {
        if(!isset($params['id']) || $repeat || (empty($content)) && empty($params['include']))
            return false;


        if(!isset($params['priority']))
            $params['priority'] = 10;
            
        if(!empty($params['include']))
            $this->js->add_files($params['id'], $params['include'], $params['priority']);
        
        if(!empty($content))
            $this->js->add_code($params['id'], $content, $params['priority']);
            


        if(!empty($params['render']))
        {
            if(!isset($params['minify']))
                $params['minify'] = null;    
            
            if(!isset($params['combine']))
                $params['combine'] = true;
            
            return $this->js->render($params['id'], $params['minify'], $params['combine']);
        }
    }    
    /*
    * Отмена регистрации js фал(а|ов) или кода
    */
    public function unset_javascript_function($params, $smarty)
    {
        if(!isset($params['id']))
            return false;


        $this->js->unplug($params['id']);
    }
    /*
    * Вывод упакованого js файла 
    */
    public function print_javascript($params)
    {
        if(!isset($params['id']))
            $params['id'] = null;
            
        if(!isset($params['combine']))
            $params['combine'] = true;
        
        if(!isset($params['minify']))
            $params['minify'] = null;
    
        return $this->js->render($params['id'], $params['minify'], $params['combine']);
    }    
    
    /*
    * Функции для работа с файлами стилей
    * Регистрация  css фал(а|ов) или кода
    */
    public function add_stylesheet_block($params, $content, $smarty, &$repeat)
    {
        if(!isset($params['id']) || $repeat || (empty($content)) && empty($params['include']))
            return false;


        if(!isset($params['priority']))
            $params['priority'] = 10;
        
        if(!isset($params['less']))
            $params['less'] = false;
            
        if(!empty($params['include']))
            $this->css->add_files($params['id'], $params['include'], $params['priority'], $params['less']);
        
        if(!empty($content))
            $this->css->add_code($params['id'], $content, $params['priority'], $params['less']);


        if(!empty($params['render']))
        {
            if(!isset($params['minify']))
                $params['minify'] = null;    
            
            if(!isset($params['combine']))
                $params['combine'] = true;
            
            return $this->css->render($params['id'], $params['minify'], $params['combine']);
        }
    }    
    /*
    * Отмена регистрации css фал(а|ов) или кода
    */
    public function unset_stylesheet_function($params, $smarty)
    {
        if(!isset($params['id']))
            return false;


        $this->css->unplug($params['id']);
    }
    /*
    * Вывод упакованого css файла 
    */
    public function print_stylesheet($params)
    {
        if(!isset($params['id']))
            $params['id'] = null;
            
        if(!isset($params['combine']))
            $params['combine'] = true;
        
        if(!isset($params['minify']))
            $params['minify'] = null;
    
        return $this->css->render($params['id'], $params['minify'], $params['combine']);
    }
    
#SMARTY_MINIFY

 

4) в config/config.php после

[smarty]

добавляем:

minify_js    = false                ; сжимать javascript (true=да, false=нет)
minify_css    = false                    ; сжимать css (true=да, false=нет)
minify_gzip_level    = 0                    ; уровень сжатия (gzip) от 0 до 9
minify_cache_dir    = cache/minify/    ; папка для кеширования

 
5) в .htaccess в корне файла после  

RewriteEngine on

добавляем:

#SMARTY_MINIFY
<FilesMatch "(js|css).gz[1-9]$">
	<IfModule mod_headers.c>
		Header set Content-Encoding: gzip
	</IfModule>
    <FilesMatch "css.gz[1-9]$">
        ForceType text/css
    </FilesMatch>
    <FilesMatch "js.gz[1-9]$">
        ForceType text/javascript
    </FilesMatch>
</FilesMatch>


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^cache/minify/(.+).gz([1-9])$ resize/gzip.php [L,END]

#SMARTY_MINIFY

Изменено: yr4ik, 14.09.2018 - 01:28


#42 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 697 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 12.09.2018 - 11:11

Архив то забыл прикрепить :)
Апдейтед

Изменено: Noxter, 12.09.2018 - 11:12


#43 phukortsin

phukortsin
  • Пользователь
  • 469 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 12.09.2018 - 13:44

5) строка
Header set Content-Encoding: gzip
по-моему, лишняя.
Во всяком случае, у меня с ней ошибка Internal Server Error, а без нее работает...

#44 sergeevizh

sergeevizh
  • Пользователь
  • 101 сообщений
  • Откуда:Москва

Опубликовано 12.09.2018 - 15:06

5) строка
Header set Content-Encoding: gzip
по-моему, лишняя.
Во всяком случае, у меня с ней ошибка Internal Server Error, а без нее работает...

 

Мне кажется или у вас Gzip не включен вот и ошибку бьет?



#45 yr4ik

yr4ik
  • Фрилансер
  • 865 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 12.09.2018 - 16:21

5) строка
Header set Content-Encoding: gzip
по-моему, лишняя.
Во всяком случае, у меня с ней ошибка Internal Server Error, а без нее работает...

 
Данная строка добавляет заголовок что файл сжат при помощи gzip. Если ее убрать и включить сжатие - то ресурсы могут не открываться. 
можно попробовать заменить через какие то другие директивы. Но для этого мне нужно знать что у вас за сервер
 
..............
 
возможно отсутствует mod_headers.c
проверить можно обернув данную строку условием
<IfModule mod_headers.c>
	Header set Content-Encoding: gzip
</IfModule>

Если ошибка исчезнет - значит модуль отсутсвует

 
 

Изменено: yr4ik, 12.09.2018 - 16:27


#46 phukortsin

phukortsin
  • Пользователь
  • 469 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 12.09.2018 - 17:26

Спасибо всем, разобрался, действительно не подключен модуль.

Изменено: phukortsin, 12.09.2018 - 17:26


#47 yr4ik

yr4ik
  • Фрилансер
  • 865 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 14.09.2018 - 01:50

Версия 1.3

 

небольшой апдейт для устранения багов

  • переписан механизм кэширования less (теперь и импортированные, в основной файл, less - проверяются на актуальность) 
  • отключен импорт в основной css, прикладных файлов, размером до 5кб . Поскольку штатной библиотекой пока не возможно проверять их актуальность. В дальнейшем, как будет нужда, поправлю библиотеку и верну эту настройку

 

Все инструкции и файлы находятся в шапке


Изменено: yr4ik, 14.09.2018 - 01:50






Также с меткой «smarty, minify, js, css, vqmod, less»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых