当我清除我的主题注册表时,Drupal运行并构建了一个很好的整合css文件,但它为不同的节点/页面类型执行此操作,以便我获得所述文件的多个实例。我在另一个question I asked(并回答)中提到了这一点,但我的问题是,Drupal如何推断出需要添加到整合版本的css文件?必须有许多不同的地方来控制特定节点上出现的模块,那么构建另一个css文件的规则构成了什么?
答案 0 :(得分:3)
这不是一个容易遵循的功能链,但我想我已经到了那里......
每次页面“刷新”(即从头开始构建,不从缓存中提供),在页面构建期间添加drupal_add_css()
的所有CSS文件都会聚合并保存到作为{返回的单个文件中该页面的{1}}标记。
<link>
中的以下行决定了汇总的CSS文件的名称:
drupal_add_css()
此上下文中的 $filename = 'css_'. md5(serialize($types) . $query_string) .'.css';
是在当前页面构建期间使用$types
添加的所有CSS文件的数组。聚合CSS的文件名包含一个drupal_add_css()
的序列化字符串,这实际上意味着添加与该文件名相同的CSS文件的任何其他页面将收到完全相同的文件名,从而加载相同的CSS文件。
基本上,聚合函数是针对每个单页构建运行的,因此每次都会聚合添加到该页面的所有CSS。如果某些页面碰巧使用相同的模块,那么它们将自动提供与上面PHP代码段中定义的相同的CSS文件。将它与页面缓存结合使用时,可以在不同页面上的HTML源代码中找到结果。
希望有意义!