聚合并压缩CSS文件drupal 7

时间:2011-11-11 21:20:28

标签: drupal-7

检查配置框时:

聚合并压缩CSS文件,它说保存成功,但该选项不会保持检查状态,并且css文件不会压缩到一个文件中。为什么是这样。 (使用drupal 7)

4 个答案:

答案 0 :(得分:3)

我假设你没有提到它,javascript聚合有效吗?

Drupal的CSS聚合doesn't (currently) parse the CSS,它只是在组合文件之前做了一些正则表达式,所以如果它遇到有效但异常格式化的CSS,或者你通常不会注意到的错误的CSS语法,它会破坏。

检查您为任何CSS错误或怪癖(任何异常)制作的任何自定义CSS,以及可能有错误CSS的任何非主流模块或主题。

为了给你一个想法,一些引起问题的事情包括

还可能值得检查文件编码是否一致。特别是,一个已知的奇怪来源导致聚合提要和文件UTF8 Byte Order Markers (BOM),这可能会错误地进入文件。有a command here从目录中的所有文件中删除所有BOM(请小心使用!)。

如果JS聚合不起作用,几乎可以肯定是服务器或目录问题 - 检查文件目录权限,检查你是否有适当的压缩库,以及Duncan提到的所有内容。

如果无效,您可以尝试agrcache moduleCore Library module。它们改变聚合使用的方法,可能会给出不同的结果,或者解决问题的线索。并密切关注Drupal 7和Drupal 8的聚合问题 - 人们正在研究的问题可能有线索。

答案 1 :(得分:2)

如果您的临时文件目录配置错误,则无法写出聚合的CSS(和JS)文件,我相信此选项会再次自行关闭。有时会发生这种情况,因为此目录的路径配置错误。其他时候路径设置正确但目录上存在权限问题,这意味着Web服务器无法写入该路径。无论哪种方式,它都会阻止聚合工作。

您可以做的另一件事是检查站点日志中是否有可能指示问题根源的错误消息。

答案 2 :(得分:1)

This is the solution

样式表

<?php
function THEME_css_alter(&$css) { 

  // Sort CSS items, so that they appear in the correct order.
  // This is taken from drupal_get_css().
  uasort($css, 'drupal_sort_css_js');

  // The Print style sheets
  // I will populate this array with the print css (usually I have only one but just in case…)
  $print = array();

  // I will add some weight to the new $css array so every element keeps its position
  $weight = 0;

  foreach ($css as $name => $style) {

    // I leave untouched the conditional stylesheets
    // and put all the rest inside a 0 group
    if ($css[$name]['browsers']['!IE']) {
      $css[$name]['group'] = 0;
      $css[$name]['weight'] = ++$weight;
      $css[$name]['every_page'] = TRUE;
    }

    // I move all the print style sheets to a new array
    if ($css[$name]['media'] == 'print') {
      // remove and add to a new array
      $print[$name] = $css[$name];
      unset($css[$name]);
    }

  }

  // I merge the regular array and the print array
  $css = array_merge($css, $print);

}
?>

脚本

<?php
function THEME_js_alter(&$js) {

  // Sort JS items, so that they appear in the correct order.
  uasort($js, 'drupal_sort_css_js');

  $weight = 0;

  foreach ($js as $name => $javascript) {
    $js[$name]['group'] = -100;
    $js[$name]['weight'] = ++$weight;
    $js[$name]['every_page'] = 1;
  }

}
?>

答案 3 :(得分:0)

很可能您已在设置文件中将选项设置为某个值。