Skip to content

Commit 3c9e045

Browse files
committed
Первый коммит )
0 parents  commit 3c9e045

File tree

3 files changed

+3586
-0
lines changed

3 files changed

+3586
-0
lines changed

README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
LessForDle
2+
===================
3+
4+
LessForBitrix - примочка для подключения класса phpless в шаблон bitrix.
5+
6+
7+
### Ссылки
8+
[Автор модуля](http://pafnuty.name/ "ПафНутиЙ")
9+
10+
[Сайт lessphp] (http://leafo.net/lessphp/ "Официальный сайт lessphp")
11+
12+
[Русский сайт LESS] (http://lesscss.ru/ "Официальный сайт LESS")
13+
14+
15+
Для чего это?
16+
-------------------
17+
* Для нормального использования LESS при вёрстке под Bitrix
18+
* И как следствие - для удобной, быстрой и эффективной разработки сайта.
19+
20+
Возможности:
21+
-------------------
22+
* Автоматическая компиляция less при изменении файла, при этом отслеживаются изменения и в импортированных файлах.
23+
* Сжатие выходного css-файла (с возможностью отключать сжатие)
24+
* Вывод ошибок компиляции.
25+
26+
Установка:
27+
-------------------
28+
* Загрузить содержимое папки YOUR_TEMPLATE в папку с шаблоном сайта.
29+
* Где нибудь в начале header.php прописать:
30+
```
31+
<?require_once('less/less.php');?>
32+
```
33+
* По умолчанию подключается файл template_styles.less текущего шаблона сайта.
34+
* При компиляции рядом записывается одноимённый css-файл (который и используется в bitrix по умолчанию).
35+
* При возникновении ошибок - они будут выведены в начале страницы, а компиляция не произойдёт.
36+
* Все настройки (если они нужны) в файле less/less.php

YOUR_TEMPLATE/less/less.php

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?php
2+
/**
3+
* ===============================================================
4+
* LessForBitrix - примочка для подключения класса phpless в шаблон bitrix
5+
* Примочка писалась для своих нужд и для удобства разработки.
6+
* Что эта хрень умеет делать:
7+
* - Автоматическая компиляция less при изменении файла, при этом отслеживаются изменения и в импортированных файлах.
8+
* - Сжатие выходного css-файла (с возможностью отключать сжатие).
9+
* - Вывод ошибок компиляции (особо не проверял какие ошибки выводятся, но если будет явный косяк - класс скажет в какой строке искать и не станет делать компиляцию, но может и не точно сказать т.к. защиты от кривых рук там нет).
10+
* ===============================================================
11+
* Файл: less.php
12+
* ---------------------------------------------------------------
13+
* Версия: 1.1.0 (30.04.2013)
14+
* ===============================================================
15+
*
16+
* Использование:
17+
* ---------------------------------------------------------------
18+
* Где нибудь в начале header.php прописать:
19+
<?require_once('less/less.php');?>
20+
*
21+
* По умолчанию подключается файл template_styles.less текущего шаблона сайта.
22+
* туда же записывается одноимённый css-файл (который и используется в bitrix).
23+
* Все настройки чуть ниже.
24+
*/
25+
26+
27+
// Определяем входящий и выходящий файлы и определяем сжимать или нет выходящий файл.
28+
$inputFile = $_SERVER['DOCUMENT_ROOT'].SITE_TEMPLATE_PATH."/template_styles.less"; //Файл template_styles.less, лежащий в текущем шаблоне сайта
29+
$outputFile = str_ireplace('.less', '.css', $inputFile); //Файл template_styles.css - который подключается к шаблону
30+
$normal = false; // true для отключения сжатия.
31+
32+
// Выполняем функцию компиляции
33+
try {
34+
autoCompileLess($inputFile, $outputFile, $normal);
35+
} catch (exception $e) {
36+
// Если что-то пошло не так - скажем об этом пользователю.
37+
echo '<div style="text-align: center; background: #fff; color: red; padding: 5px;">Less error: '.$e->getMessage().'</div>';
38+
}
39+
40+
/**
41+
* Функция автокомпиляции less, запускается даже если изменён импортированный файл - очень удобно.
42+
* функция взята из документации к классу.
43+
* @param string $inpFile - входной файл (в котором могут быть и импортированные файлы)
44+
* @param string $outFile - выходной файл
45+
* @param string $nocompress - отключает сжатие выходного файла
46+
* @return file
47+
*/
48+
function autoCompileLess($inpFile, $outFile, $nocompress = false) {
49+
50+
$cacheFile = $inpFile.".cache";
51+
52+
if (file_exists($cacheFile)) {
53+
$cache = unserialize(file_get_contents($cacheFile));
54+
} else {
55+
$cache = $inpFile;
56+
}
57+
58+
// Подключаем класс для компиляции less
59+
require "lessphp.class.php";
60+
$less = new lessc;
61+
if ($nocompress) {
62+
// Если запрещено сжатие - форматируем по нормальному с табами вместо пробелов.
63+
$formatter = new lessc_formatter_classic;
64+
$formatter->indentChar = "\t";
65+
$less->setFormatter($formatter);
66+
} else {
67+
// Иначе сжимаем всё в одну строку.
68+
$less->setFormatter('compressed');
69+
}
70+
71+
$newCache = $less->cachedCompile($cache);
72+
73+
if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
74+
file_put_contents($cacheFile, serialize($newCache));
75+
file_put_contents($outFile, $newCache['compiled']);
76+
}
77+
}
78+
79+
?>

0 commit comments

Comments
 (0)