Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当刷新我的主题缓存时,Drupal如何将模块css文件添加到合并文件中?_Drupal_Drupal 6_Drupal Modules_Drupal Themes - Fatal编程技术网

当刷新我的主题缓存时,Drupal如何将模块css文件添加到合并文件中?

当刷新我的主题缓存时,Drupal如何将模块css文件添加到合并文件中?,drupal,drupal-6,drupal-modules,drupal-themes,Drupal,Drupal 6,Drupal Modules,Drupal Themes,当我清除我的主题注册表时,Drupal会运行并构建一个很好的整合css文件,但它会针对不同的节点/页面类型执行此操作,这样我就可以获得该文件的多个实例。我在另一篇文章中提到了这一点(并给出了答案),但我的问题是,Drupal如何推断它需要添加到整合版本中的css文件?必须有许多不同的地方来控制某个特定节点上出现的模块,那么另一个正在构建的css文件的规则是什么呢?这不是一个简单的函数链,但我想我已经做到了 每次“刷新”页面时(即从头开始构建,而不是从缓存中提供),在该页面构建期间使用drupal

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

这不是一个简单的函数链,但我想我已经做到了

每次“刷新”页面时(即从头开始构建,而不是从缓存中提供),在该页面构建期间使用
drupal\u add\u CSS()
添加的所有CSS文件都会聚合并保存到单个文件中,该文件作为该页面的
标记返回

drupal\u add\u css()
中的以下行决定了聚合css文件的名称:

$filename = 'css_'. md5(serialize($types) . $query_string) .'.css';
在此上下文中,
$types
是当前页面构建期间使用
drupal\u add\u CSS()
添加的所有CSS文件的数组。聚合CSS的文件名包含一个序列化字符串
$types
,这本质上意味着添加相同CSS文件的任何其他页面将接收完全相同的文件名,从而加载相同的CSS文件

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


希望这有意义

+1个非常有趣的问题,刚刚开始调查……这非常有意义。谢谢@Clive!