I’ve done something similar for JavaScript:
In one project I’ve a couple of chunks containing JS for different purposes.
I’ve taken and patched the solution from
here to combine them into a single "file" (called via his FURL).
Additionally I’ve added a call to
JSMIN to reduce the "filesize".
[tt]chunkListParser[/tt] (snippet)
<?php
$minify = ( isset($minify) && $minify == 'true' ) ? true : false;
$ar_chunks = split(',',$chunks);
$ar_chunks = array_unique($ar_chunks);
$output = '';
foreach ($ar_chunks as $chunk) {
if ($chunk != '') {
$c = $modx->getChunk($chunk);
if ($c) $output .= $c . "\r\n"; //linebreak added by JUSI
}
}
if ($output != '' && isset($wrapperdiv)) {
$output = '<div id="'.$wrapperdiv.'">'.$output.'</div>';
}
if ($minify == true) {
require 'assets/snippets/bv-jsmin/jsmin-1.1.1.php';
$output = JSMin::minify($output);
}
return $output;
?>
[tt]getChunks[/tt] (snippet)
<?php
$q_chunks = $modx->db->query('
SELECT
chunk.*
FROM '.$modx->getFullTableName('site_htmlsnippets').' AS chunk
INNER JOIN '.$modx->getFullTableName('categories').' AS category
ON chunk.category = category.id
WHERE
category.category IN ("'.$category.'")
ORDER BY
name
');
$ar_chunks = array();
while ($row = $modx->db->getRow($q_chunks)) {
$ar_chunks[] = $row['name'];
}
$l_chunks = implode(",",$ar_chunks); //splitter character changed from "||" to "," by JUSI
return $l_chunks;
?>
[tt]combined.js[/tt] (document)
[[chunkListParser?chunks=`[[getChunks? &category=`bv js` ]]` &minify=`true` ]]
Greetz
JUSI