Я работаю с Symfony 1.4, и у меня проблема с использованием препроцессора LESS CSS.
Предположим, что у меня есть 2 файла с меньшими размерами. Они называются blue.less
и red.less
.
Вот они:
Blue.less
@mainBorder: blue; @pulldownBackground: blue;
Red.less
@mainBorder: red; @pulldownBackground: red;
Теперь предположим, что у меня есть файл layout.less, который будет выглядеть примерно так:
// Colored line under Nav .main { border: 1px solid @mainBorder; .pullDown { background: @pullDownBackground; } }
Если я хочу использовать один из файлов цветовых переменных, мне нужно объявить его в верхней части файла layout.less следующим образом:
@import 'red.less';
Поскольку оператор @import
должен ссылаться на конкретный файл, как бы я мог динамически передавать blue.less
в оператор @import всякий раз, когда мне хотелось изменить цветовую схему?
Будет ли способ динамически объявить, какие из LECT-файлов, специфичных для цвета, будут переданы в этот оператор импорта с PHP и платформой Symfony?
Или эта проблема может быть решена без серверного кода?
Я никогда не использовал Symphony, но это должно заставить вас идти в правильном направлении, независимо от структуры.
Сначала вы хотите создать свой файл LESS:
<?php $color_scheme = "red"; // we're simplifying here for now, but this could be set via $_POST variable /* it would probably be a good idea to check if the file exists first before we import it. see function: file_exists() */ $contents = " @import '$color_scheme.less'; @import 'main_styles.less'; @import 'other_stuff.less'; "; file_put_contents("path/to/styles.less"); ?>
Теперь у вас есть LESS-файл, который готов к обработке, так же, как если бы вы написали его вручную, но с легкостью заменяемой цветовой схемой. Если бы я делал это с открытым PHP, я бы использовал функцию exec()
для вызова команд, которые будут доступны через командную строку. Вот пример для вызова SASS с помощью exec()
(я никогда не использовал LESS таким образом, поэтому вам нужно заполнить пробелы здесь).
<?php exec("sass --compile path/to/sass:path/to/public/css"); ?>
Если ваш плагин Symphony делает компиляцию для вас без необходимости использовать строку exec / command, то вы, вероятно, захотите это сделать.