This code snippet will group your search results in collapsible fieldsets by node type.
<?php
function MYTHEME_search_page($results, $type) {
$html = '<dl class="search-results">';
// get a list of node types
$nodeTypes = node_get_types();
// loop through results, group by type
$resultTypes = array();
foreach ($results as $result) {
$resultTypes[$result['node']->type][] = $result;
}
// create fieldsets for each type
foreach ($resultTypes as $resultType => $resultTypeResults) {
$value = "";
// loop through entries
foreach ($resultTypeResults as $entry) {
$value .= theme('search_item', $entry, $type);
}
// add fieldset
$html .= theme('fieldset',
array(
'#title' => $nodeTypes[$resultType]->name,
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#value' => $value,
)
);
}
$html .= '</dl>';
$html .= theme('pager', NULL, 10, 0);
return $html;
}
?>










you would think that this would be a common thing!
thank you SO much for this. it's beautiful to find a drupal trick that works so easily and simply.
drupal 6 version
Based on the above, I just coded up a drupal 6 version:
<?php
function TEMPLATENAME_preprocess_search_results(&$variables) {
$variables['search_results'] = '';
// get a list of node types
$nodeTypes = node_get_types();
// loop through results, group by type
$resultTypes = array();
foreach ($variables['results'] as $result)
{
$resultTypes[$result['node']->type][] = $result;
}
// create fieldsets for each type
foreach ($resultTypes as $resultType => $resultTypeResults)
{
$value = "";
// loop through entries
foreach ($resultTypeResults as $result)
{
$value .= theme('search_result', $result, $variables['type']);
}
// add fieldset
$variables['search_results'] .= theme('fieldset',
array(
'#title' => $nodeTypes[$resultType]->name,
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#value' => $value,
)
);
}
$variables['pager'] = theme('pager', NULL, 10, 0);
// Provide alternate search results template.
$variables['template_files'][] = 'search-results-'. $variables['type'];
}
?>
I've managed to get this to
I've managed to get this to work in Drupal 7
<?php
function TEMPLATENAME_preprocess_search_results(&$variables) {
$variables['search_results'] = '';
// get a list of node types
$nodeTypes = node_type_get_types();
// loop through results, group by type
$resultTypes = array();
foreach ($variables['results'] as $result) {
$resultTypes[$result['node']->type][] = $result;
}
// create fieldsets for each type
foreach ($resultTypes as $resultType => $resultTypeResults) {
$value = "";
// loop through entries
foreach ($resultTypeResults as $result) {
$value .= theme('search_result', array('result' => $result, 'module' => $variables['module']));
}
//$variables['search_results'] .= $value;
// add fieldset
$variables['search_results'] .= theme('fieldset',
array(
'element' => array(
'#title' => $nodeTypes[$resultType]->name,
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#value' => $value
)
)
);
}
?>
Any help on making this work
Any help on making this work for Druapl 7?