Hi,
Due to the nature of hook_preprocess_block(), the queries are repeated on every block, so if I have like 30 blocks it will make 30 queries, can we reduce it to only 1 query for all? This is huge in developing large sites with multiple blocks.
<?php
/*
* Extend block's classes with any user defined classes.
*/
function block_class_preprocess_block(&$vars) {
$block = $vars['block'];
$classes = block_class($block);
$vars['classes_array'] = array_merge($vars['classes_array'], explode(' ', $classes));
}
?>
My solution to just 1 query, or if you have another way to do it, please do ...
<?php
/*
* Extend block's classes with any user defined classes.
*/
function block_class_preprocess_block(&$vars) {
global $_block_class_blocks_classes;
static $called_once = 0;
$called_once++;
if ($called_once == 1) {
$result = db_query("SELECT css_class, module, delta FROM {block_class}");
while ($record = $result->fetchObject()) {
$_block_class_blocks_classes[$record->module][$record->delta] = $record->css_class;
}
}
$block = $vars['block'];
//$classes = block_class($block);
if (isset($_block_class_blocks_classes[$block->module][$block->delta])) {
$classes = $_block_class_blocks_classes[$block->module][$block->delta];
$vars['classes_array'] = array_merge($vars['classes_array'], explode(' ', $classes));
}
}
?>
Comments
Comment #0.0
danielhonrade commentedadded ?>
Comment #1
berenddeboer commentedComment #2
berenddeboer commentedPatch committed, thanks.Performance, Multiple Queries with multiple blocks on no cache blocks
Comment #2.0
berenddeboer commentedcorrected grammar