Агрегируйте и сжимайте CSS-файлы drupal 7 - PullRequest
4 голосов
/ 12 ноября 2011

При установке флажка конфигурации для:

Агрегирует и сжимает файлы CSS, он говорит, что сохранен успешно, но опция не остается отмеченной, и файлы CSS НЕ сжимаются в один файл.Почему это.(Использование Drupal 7)

Ответы [ 4 ]

3 голосов
/ 21 ноября 2011

Я предполагаю, что, поскольку вы не упомянули об этом, агрегация javascript работает?

Агрегация CSS в Drupal (в настоящее время) не анализирует CSS , она просто выполняет некоторые регулярные действиявыражений перед объединением файлов, поэтому он может сломаться, если встретится с действительным, но необычно отформатированным CSS, или с тривиально некорректным синтаксисом CSS, который вы никогда не заметите.

Проверьте любой пользовательский CSS, созданный вами, на наличие ошибок CSS илипричуды (что-нибудь необычное), а также любые неосновные модули или темы, которые могут иметь глючный CSS.

Чтобы дать вам представление, некоторые вещи, которые вызвали проблемы, включают

Возможно, стоит проверить, что кодировки файлов согласованы.В частности, одним известным источником странных результатов в агрегировании каналов и файлов является UTF8 Byte Order Marker (BOM) , который может ошибочно попасть в файлы.Здесь есть команда , которая удаляет все спецификации из всех файлов в каталоге (используйте с осторожностью!).

Если агрегация JS не работает либо , это почтиконечно, проблема с сервером или каталогом - проверьте права доступа к каталогу файлов, проверьте, есть ли у вас соответствующие библиотеки сжатия, плюс все, что упоминает Дункан.

Если ничего не работает, вы можете попробовать модуль agrcache или Модуль базовой библиотеки .Они изменяют методы, используемые агрегацией, и могут давать другой результат или подсказки относительно проблемы.И следите за проблемами агрегирования для Drupal 7, а также Drupal 8 - могут быть подсказки в проблемах, над которыми работают люди.

2 голосов
/ 20 ноября 2011

Если каталог временных файлов неверно настроен, агрегированные файлы CSS (и JS) не могут быть записаны, и я полагаю, что эта опция затем снова отключится. Иногда это происходит из-за неправильной настройки пути к этому каталогу. В других случаях путь задан правильно, но существуют проблемы с разрешениями в каталоге, которые означают, что веб-сервер не может записать в этот путь. В любом случае, это мешает агрегации работать.

Другая вещь, которую вы можете сделать, это проверить журнал сайта на наличие сообщений об ошибках, которые могут указывать источник проблемы.

1 голос
/ 10 октября 2012

Это решение .

Stylesheets

<?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;
  }

}
?>
0 голосов
/ 23 ноября 2018

Скорее всего, у вас есть опция, установленная на определенное значение в файле настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...