Форумы / National / Russian / Модули и плагины / Подключение Less файлов

Подключение Less файлов к Cotonti

Macik
#1 11.04.2012 16:43

Для тех кто не в курсе, Less -  это динамический CSS с возможностью использовать переменные, функции и проч. Less может быть использован как на клиентской стороне, так и на сервере. Для использования Less файл компилируется в обычный CSS.

Собственно, я набросал плагин для простого подключения Less файлов  к проекту. Процитирую описание:

Принцип работы
Плагин определяет 2 функции:
less_rc_add_file
less_rc_link_file
которые дублируют стандартные функции движка (cot_rc_add_file и cot_rc_link_file)
добавляя возможность на входе задать имя Less файла.
При вызове происходит компиляция Less файла в обычный CSS,
который затем автоматически подключается через соответствующие функции.
Компиляция происходит только в случае изменения Less файла или отсутствия
css.
Такой подзод позволяет использовать последующую минимизацию и консолидацию средствами Котонти.

Функция less_rc_compile позволяет скомпилирвать несколько less файлов
в единый css. (Использование кеша остается на совести автора кода вызывающего
данную функцию.)

Установка
Стандартная - скопировать в каталог plugins, установить через Админ-панель.

Использование
Можно использовать в коде так:

if (function_exists('less_rc_add_file')) less_rc_add_file($cfg['plugins_dir'] . '/testless/tpl/testless.less');

В плагинах этот код надо размещать в файлах *.rc.php (используя hook=rc).

В других частях кода можно использовать так:

if (function_exists('less_rc_link_file')) less_rc_link_file($cfg['plugins_dir'] . '/testless/tpl/testless.less');

Подключение Less файлов будет так же работать в файлах тем (theme.rc.php).
-------

Сам плагин LessCom:  http://www.cotonti.com/datas/users/lesscom_461.7z

Плагин-пример использования:  http://www.cotonti.com/datas/users/testless_461.7z

 

 

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Eugene
#2 11.04.2012 18:10

Распиарить бы ещё эту штуку на самом сайте - возможно это дало бы всплеск популярности COT. Особенно для западных разработчиков...

потестим...

Macik
#3 11.04.2012 19:17

По поводу пиара это отдельная тема...

Что касается подключения less файлов, то лучше даже написать так:

if (function_exists('less_rc_add_file')) less_rc_add_file($cfg['plugins_dir'] . '/testless/tpl/testless.less');
		else cot_rc_add_file($cfg['plugins_dir'] . '/testless/tpl/testless.css');

в таком случае если плагин включен и *.less присутствует произойдет компиляция, если нет - будет подключен обычный css.

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Trustmaster
#4 11.04.2012 19:55

GHengeveld эту штуку сделал в виде плагина ещё полгода назад. Там используются не API-функции, а простая компиляция всех имеющихся .less-файлов. С поддержкой консолидации оно, конечно, лучше.

May the Source be with you!
Macik
#5 12.04.2012 11:05

Да, я после написания этот плагин нашел. Но глянув на него внимательнее выявил следующие (критичные для меня) недостатки:

  • устаревшая библиотека lessphp (но это поправимо). В своем плаге я ее специально оставил в неизменном виде и даже не переименовывал, чтобы проще было обновлять.
  • указанный плагин работает только с файлами тем оформления, причем подгружает все без разбора (по маске). Мне необходимо было иметь возможность подключать конкретные файлы стилей из плагинов (коих у меня масса), т.е. из любой папки.
  • в нем есть логическая ошибка: при первом запуске его плагин не отобразит стили, т.к. реальная компиляция произойдет (Hooks=header.first) после подключения RC файлов. На момент подключения RC файлов CSS еще не будет на диске линки на них не втавятся в заголовок.

p.s. А консолидация в его варианте тоже работать будет, это зависит от того, как подключен конечный (CSS) файл.

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F