2

Silverstripe 3.0 を使用しています

すべての css ファイルを 1 つのファイルに結合しようとしました。

$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();

残念ながら、他のファイルを結合する 1 つのファイル core.css ではなく、まだ 4 つの css ファイルがあります。Silverstripe には私の css ファイルを書き込む権限がないようです。

何がうまくいかないのですか?ありがとうございました

4

1 に答える 1

2

(これはコメントで回答されていますが、実際の回答を追加して、この質問がSOの未回答リストに表示されないようにします)

@ajshort は、なぜこれが起こるのかを明確に示しています。

開発モードですか?その場合、SilverStripe は開発を容易にするためにファイルを結合しません。

技術的な説明

クラスのRequirements_Backend重労働を行うクラスには、結合されたファイルの処理中に、結合するかどうかに影響するRequirementsコード行 ( SS 3.0およびSS 3.1 ) があります。

APIドキュメントから直接取得:

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

基本的に、開発モード SaphireTest実行されておらず、「combine」と呼ばれる GET または POST 変数セットがない場合。

つまり、「combine」( ?combine=false) というクエリ パラメータを含めると、開発モードのときにファイルが結合されます。

于 2014-10-25T09:09:22.347 に答える