berezuev
@berezuev
#define TRUE FALSE

Как объединить и сжать кучу JS и CSS файлов в smarty?

В общем, проблема следующая.

В smarty-шаблоне подключается больше 50 js/css. Понятно, что подключать полсотни файлов не разумно.
Есть ли готовые решения для комбинирования всего этого добра? Bender class предусмотрен именно для этого, но он банально у меня не запускается. Получается слишком корявый и нерабочий js/css.
Попробовал minify, он не переваривает мои get-запросы (слишком длинные). Можно создать несколько запросов, но все-таки хочется все подключаемое объединить в кучу. При чем, в идеале, с кешированием и соединив JS+CSS (технически это возможно и, я надеюсь, уже кем-то реализовано).

т.е. что-то вроде php функции, в которую передается массив со списком файлов для объединения в одну кучу.

Спасибо
  • Вопрос задан
  • 3291 просмотр
Пригласить эксперта
Ответы на вопрос 3
@egorsmkv
Вам точно нужна дополнительная библиотека? Может лучше самостоятельно написать функцию, которая будет склеивать массив файлов в один?

Библиотеки, кстати, гуглятся в два счета по запросу "php minify css/js".
Ответ написан
Комментировать
BBoyJuss
@BBoyJuss
WordPress, интерфейсы и все вытекающие
Можно угнать код отсюда LiveStreet CMS
Ответ написан
Комментировать
@lnked
Скачать плагин
Плагин поместить в папку /smarty/plugins
Классы сжатия подключить
+ надо подкорректировать пути у вас они могут быть другими
Сжатие стилей
{compress
    mode   = 'css'
    type   = 'inline'
    file   = '/css/compress.css' // если не указать файл то запишет в папку кеша, путь к ней в плагине 
    media  = 'all'
    source = [
        [ file => 'http://fonts.googleapis.com/css?family=Titillium+Web:300|Roboto:400,300,700,500&subset=latin,cyrillic' ],
        [ file => '/css/cart.css', allow => '/cart' ],
        [ file => '/css/main.css', disallow => '/cart' ],
        [ file => '/css/modal.css' ]
    ]
}


Сжатие скриптов
{compress
    attr   = 'data-no-instant async'
    mode   = 'js'
    type   = 'include'
    media  = 'all'
    file   = '/js/compress.js'
    source = [
        [ 'file' => '/js/instantclick.min.js' ],
        [ 'file' => '/js/jquery.js' ],
        [ 'file' => '/js/modal.js' ],
        [ 'file' => '/js/cart.js' ],
        [ 'file' => '/js/mask.js' ],
        [ 'file' => '/js/app.js' ]
    ]
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы