3

当我清除我的主题注册表时,Drupal 运行并构建了一个很好的整合 css 文件,但它针对不同的节点/页面类型执行此操作,以便我获得所述文件的多个实例。我在另一个我问过(并回答过)的问题中提到了这一点,但我的问题是,Drupal 如何推断出它需要添加到合并版本中的 css 文件?必须有许多不同的地方来控制特定节点上出现的模块,那么构建另一个 css 文件的规则是什么?

4

1 回答 1

3

嗯,这不是一个容易遵循的功能链,但我想我已经到了那里......

每次“刷新”页面(即从头开始构建,而不是从缓存中提供)时,drupal_add_css()在该页面构建期间添加的所有 CSS 文件都会汇总并保存到单个文件中,该文件作为该<link>页面的标记返回。

以下行drupal_add_css()决定了聚合 CSS 文件的名称:

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

$typesdrupal_add_css()在此上下文中是在当前页面构建期间添加的所有 CSS 文件的数组。聚合 CSS 的文件名包含一个序列化字符串$types,这实质上意味着任何其他添加相同 CSS 文件的页面都将收到完全相同的文件名,从而加载相同的 CSS 文件。

所以基本上,聚合函数会为每个页面构建运行,因此每次添加到该页面的所有 CSS 都会被聚合。如果某些页面碰巧使用了相同的模块,那么它们将自动使用上面 PHP 片段中定义的相同 CSS 文件。当您将其与页面缓存相结合时,您将获得在不同页面的 HTML 源代码中找到的结果。

希望这是有道理的!

于 2011-11-03T20:02:27.813 回答