有没有办法用PHP中的LESS编译器覆盖LESS变量?

时间:2015-04-27 04:14:52

标签: php css less

目前我正在使用lessphp作为我的LESS编译器。我知道它提供了一种设置LESS变量的方法,但有没有办法覆盖文件中设置的变量?

例如,我有以下LESS文件:

@theme-color: #000055;
h1 {
    color: @theme-color;
}
h2 {
    color: @theme-color * 1.3;
}
h3 {
    color: @theme-color * 1.5;
}

用PHP编译,

require"path/to/leafo/lessphp/lessc.inc.php";
$less = new lessc;
$less->setVariables(array(
    "theme-color" => "#000055"
));
$less->compileFile("basic/path/less/main.less", "basic/path//css/main.css");

它成功编译了文件,但不会覆盖变量@ theme-color。有没有办法覆盖它?

我不介意在必要时使用其他编译器,但它需要是服务器端,因为javascript编译器太慢并且它创建了一个没有css视图的时刻。

2 个答案:

答案 0 :(得分:3)

可以使用compile()代替compileFile();

$lesscode = file_get_contents("basic/path/less/main.less");
$lesscode .= "@themecolor: #000055;";

file_put_contents("basic/path//css/main.css", $less->compile($lesscode));

答案 1 :(得分:0)

似乎没有办法用leafo的lessphp编译器做到这一点。最后我改为使用oyejorge的lessphp编译器。

使用oyejorge的lessphp编译器,可以在加载文件后更改变量,同时可以包含文件:

$parser = new Less_Parser();
$parser->parseFile( "path/to/less/main.less", url("path/to/less/") );
$parser->ModifyVars( array('theme-color'=>'#005500') );
$css = $parser->getCss();