合并css文件

时间:2013-11-09 08:37:32

标签: silverstripe

我正在使用Silverstripe 3.0

我尝试将所有css文件合并到一个文件中:

$themeFolder = 'themes/' . SSViewer::current_theme() . '';

$cssFiles = array(
    $themeFolder . '/css/reset.css',
    $themeFolder . '/css/typography.css',
    $themeFolder . '/css/jquery.fancybox.css',
    $themeFolder . '/css/form.css'        
);

array_walk($cssFiles,'Requirements::css');
Requirements::combine_files($themePath . 'css/core.css',$cssFiles);
Requirements::set_combined_files_folder('.');
Requirements::process_combined_files();

不幸的是,我没有一个文件core.css结合其他文件,我还有4个css文件。似乎silverstripe无权编写我的css文件?

知道出了什么问题吗?谢谢

1 个答案:

答案 0 :(得分:2)

(即使在评论中回答这个问题,添加一个真正的答案,这样这个问题就不会出现在SO的未答复列表中)

@ajshort对于为什么会发生这种情况有所了解:

  

您是否处于开发模式?如果是这样,SilverStripe将不会合并文件以便于开发。

技术说明

在对Requirements_Backend类进行繁重工作的Requirements类中,在处理组合文件时有一行代码(SS 3.0SS 3.1)这会影响它是否会结合。

直接从API文档中获取:

if((Director::isDev() && !$runningTest && !isset($_REQUEST['combine'])) || !$this->combined_files_enabled) {
    return;
}

基本上,如果您处于开发模式 SaphireTest未运行,则表示没有名为&#34的GET或POST变量集。结合"

这意味着如果你包含一个名为&#34的查询参数; combine" (?combine=false),当你处于开发模式时它仍会合并文件。