[support] Using Minify
David Hart
david.hart at gmail.com
Tue Dec 22 12:44:58 UTC 2009
For various reasons [multisite/performance/boost], I'm using Minify
[http://code.google.com/p/minify/] on my site rather than using Core
to handle CSS compression.
One way of using Minify is to pass it a string of CSS urls, in the form of
<link rel="stylesheet" type="text/css"
href="/min/?f=modules/node/node.css,modules/system/defaults.css,...">
I've been doing this by using a preprocess function in template.php to
assemble the css files into a string.
However, the better way to do it is by creating a file that just
comprises an array in the form of
<?php
return array(
'css'=>array('//modules/node/node.css','//modules/system/defaults.css',...),
'print'=>array('//sites/all/themes/mytheme/css/print.css'),
);
?>
and calling this like:
<link rel="stylesheet" type="text/css" href="/min/?g=css" media="all">
<link rel="stylesheet" type="text/css" href="/min/?g=print" media="print">
I can create this by using a theme function that assembles the array
and writes it to the file. However, writing to a file every time the
page is called is an obvious overhead. Leaving the file static and
updating it manually, however, means that if a new or updated module
adds a new CSS file, I probably won't know about it and won't update
the array.
So my actual question is: in my theme, or in my custom module, is
there anything I can hook into so that I write to this file only when
the cache is cleared (which happens when modules are added/updated
right?). I guess it would need to be in my custom module as I wouldn't
be using my theme when the cache is actually cleared (as I use garland
for administration) - but then how does a module know what css a theme
is using?
The hacky way would be to get the theme to write to the file if
there's a GET variable something like ?css_rewrite or run a cron job
every few hours, but I wondered if there was anything more elegant.
--David Hart.
More information about the support
mailing list