МЕНЬШЕ CSS & Symfony – Динамическое изменение цветовых схем

Я работаю с 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, то вы, вероятно, захотите это сделать.