Как Drupal добавляет файлы css модуля в консолидированный файл при очистке кеша моей темы? - PullRequest
3 голосов
/ 03 ноября 2011

Когда я очищаю свой реестр тем, Drupal запускается и создает хороший консолидированный файл css, но делает это для разных типов узлов / страниц, так что я получаю несколько экземпляров указанного файла. Я упоминал об этом в другом вопросе, который я задал (и ответил), но мой вопрос заключается в том, как Drupal определяет, какие CSS-файлы нужно добавить в консолидированную версию? Должно быть множество разных мест, которые контролируют, какие модули появляются на конкретном узле, так что же является правилом для создания другого файла CSS?

1 Ответ

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

Ну, это была непростая цепочка функций, которой нужно следовать, но я думаю, что у меня есть ...

Каждый раз, когда страница «обновляется» (т.е. создается с нуля, а не из кеша)) все CSS-файлы, добавленные с помощью drupal_add_css() во время этой компоновки страницы, агрегируются и сохраняются в один файл, который возвращается как тег <link> для этой страницы.

Следующая строка в drupal_add_css() определяет, чтоИмя агрегированного CSS-файла будет:

$filename = 'css_'. md5(serialize($types) . $query_string) .'.css';

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

Таким образом, в основном, функция агрегации запускается для каждой сборки страницы, поэтому каждый CSS, добавленный на эту страницу, будет агрегироваться каждый раз.Если на некоторых страницах используются одни и те же модули, им автоматически будет предоставлен тот же файл CSS, что и в приведенном выше фрагменте PHP.Когда вы комбинируете это с кэшированием страниц, вы получаете результаты, которые вы найдете в источнике HTML на разных страницах.

Надеюсь, что это имеет смысл!

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