2015-03-03 2 views
3

Мне нужно создать пользовательскую настройку веб-шаблона и предоставить форму наших клиентов для настройки стилей.Файл CSS с LESS-переменными

Я создал стили сайта в LESS, и когда клиент меняет какую-либо настройку в форме (и нажимает кнопку submit) PHP создает динамически CSS-файлы на основе кода LESS и настроек клиента.

Я использую less.php. Но динамически генерировать CSS от LESS очень slow. Вот почему я хочу создать «CSS-файл» с LESS-переменными, и я хочу автоматически генерировать окончательный файл CSS от «Файл CSS» с переменными и после использования только str_replace() для изменения переменной в значение , Это будет быстрее решение!

Пример:

МЕНЬШЕ файл

@color: red; 
.container { 
    .box {color: @color; } 
} 

окончательный CSS файл

.container .box {color: red; } 

, но мне нужно, чтобы сгенерировать "CSS файл" с меньшими затратами переменных, как это :

.container .box {color: @color; } 

Как создать такой файл?

+0

Вы можете разместить код, который вы пробовали до сих пор? (содержание less.php) – Sriraman

+0

Ну, словом: невозможно создать такой файл из источника Less (просто потому, что такого инструмента нет).Единственный способ - написать такую ​​вещь вручную. –

ответ

1

Вы, кажется, не понимаете, что такое LESS, LESS - это препроцессор CSS, который компилирует код в CSS. CSS не поддерживает переменные, поэтому то, что вы просите, на самом деле не имеет смысла. Вы используете LESS PHP, но хотите удалить эту функциональность. Вопрос не имеет для меня никакого смысла.

+0

Что я понимаю, что OP хочет прекомпилировать LESS в CSS, но оставлять переменные, поэтому вместо того, чтобы компилировать его все время, он мог бы просто переменные 'str_replace()' перед отправкой CSS пользователям и сэкономить много времени с этим. Он просто не знает, как прекомпилировать его, но оставить переменные. – Forien

+0

Я вижу, но зачем ему использовать less.php для этого? Весь файл не нужен? @Forien – Jordy

+0

Это имеет смысл, потому что LESS имеет много вариантов, но я не хочу просто «LESS to CSS», я хочу создать из LESS свой специальный ** «CSS» с LESS-переменными ** только для панели администратора (настройка формы), и благодаря этому файлу я могу создать быструю настройку, и после этого я могу создать окончательный файл CSS перед веб-сайтом. – Cichy

1

Мой ответ не даст вам то, что вы хотите, но, возможно, это изменит ваш разум.

На самом деле, то, что вы делаете сейчас, хорошо, но, как вы сказали, компиляция всего этого времени для каждого пользователя вредна для всех. Вот почему вы должны реализовать механизм кэширования. Сохраните скомпилированный (окончательный) CSS как файл на сервере и укажите пользователей в этот файл. В вашем скрипте компиляции добавьте код, который будет проверять, является ли кешированный файл старше, чем, скажем, один день (или один час, но не менее). Если он старше, то скомпилируйте новый.

Таким образом, вы будете составлять только один раз в течение дня. День, например.

Вы также можете настроить его для компиляции, если нет кешированной версии. Это будет полезно, если вы меняете много вещей, тогда вы можете просто удалить кешированный CSS, и новый будет сгенерирован.

Если у вас есть панель администратора с чем-то, что может изменить файл LESS, просто добавьте еще одну строку в исполняемый код, который заставит перекомпилировать или просто удалить (unlink()) кешированный файл.

Кэширования является благословить, и это будет хорошо для вас, пользователей и сервера

+0

, но эта форма настройки предназначена только для администратора (параметры шаблона в панели администратора). После того, как он нажал «Отправить» в настройке формы, _customizer_ будет генерировать и сохранять стили в файле CSS (от LESS), но эта операция, когда администратор меняет что-то в настройке Form и less.php, начинает работать ... он работает медленно. После того, как администратор закончил изменения, перед сайтом используется только файл CSS, и он работает нормально (быстро). – Cichy