View source
<?php
function views_bonus_summary_combo_views_style_plugins() {
$items['summary_combo'] = array(
'name' => t('Bonus: Summary + full view'),
'theme' => 'views_bonus_summary_combo',
'summary_theme' => 'views_bonus_summary_combo_summary',
);
return $items;
}
function theme_views_bonus_summary_combo($view, $nodes, $type, $level = NULL, $args = NULL, $summary = FALSE) {
$teasers = TRUE;
$links = TRUE;
drupal_set_title($title);
unset($view->page_title);
if ($summary && $level == 0 && isset($view->argument[0])) {
$bottom = '';
}
elseif ($summary) {
$bottom = theme('views_summary', $view, $type, $level, $nodes, $args);
}
else {
$bottom = theme('views_view_nodes', $view, $nodes, $view->page_type, $teasers, $links);
}
if (isset($view->argument[0])) {
$summary = views_build_view('items', $view, array(), false, $view->nodes_per_page);
$top = theme('views_bonus_summary_combo_top', $view, $summary['items']);
}
return $top . $bottom;
}
function theme_views_bonus_summary_combo_summary($view, $type, $level, $nodes, $args) {
return theme_views_bonus_summary_combo($view, $nodes, $type, $level, $args, TRUE);
}
function theme_views_bonus_summary_combo_top($view, $nodes) {
drupal_add_css(drupal_get_path('module', 'views_bonus_summary_combo') . '/views_bonus.css');
$groups = array();
foreach ($nodes as $node) {
$group[$node->letter][] = $node;
}
foreach ($group as $group_nodes) {
$items[] = views_get_summary_link($view->argument[0]['type'], $group_nodes[0], $view->url) . " (" . count($group_nodes) . ") ";
}
if ($items) {
return '<div id="views_bonus_summary_top">' . implode(' | ', $items) . '</div>';
}
}
function views_bonus_summary_combo_views_default_views() {
$view = new stdClass();
$view->name = 'taxonomy_directory';
$view->description = t('First letter of term on top and related view on bottom of each page.');
$view->access = array();
$view->view_args_php = '';
$view->page = TRUE;
$view->page_title = t('Directory');
$view->page_header = '';
$view->page_header_format = '3';
$view->page_footer = '';
$view->page_footer_format = '1';
$view->page_empty = '';
$view->page_empty_format = '1';
$view->page_type = 'summary_combo';
$view->url = 'directory';
$view->use_pager = TRUE;
$view->nodes_per_page = '50';
$view->menu = TRUE;
$view->menu_title = t('Directory');
$view->menu_tab = FALSE;
$view->menu_tab_default = FALSE;
$view->menu_weight = '';
$view->sort = array(
array(
'tablename' => 'term_data',
'field' => 'weight',
'sortorder' => 'ASC',
'options' => '',
),
array(
'tablename' => 'node',
'field' => 'sticky',
'sortorder' => 'DESC',
'options' => '',
),
array(
'tablename' => 'node',
'field' => 'created',
'sortorder' => 'DESC',
'options' => '',
),
);
$view->argument = array(
array(
'type' => 'taxletter',
'argdefault' => '6',
'title' => '%1',
'options' => '1',
'wildcard' => '',
'wildcard_substitution' => '',
),
array(
'type' => 'taxletter',
'argdefault' => '6',
'title' => '%2',
'options' => '',
'wildcard' => '',
'wildcard_substitution' => '',
),
);
$view->field = array(
array(
'tablename' => 'node',
'field' => 'title',
'label' => '',
'handler' => 'views_handler_field_nodelink',
'sortable' => '1',
),
);
$view->filter = array(
array(
'tablename' => 'node',
'field' => 'status',
'operator' => '=',
'options' => '',
'value' => '1',
),
);
$view->exposed_filter = array();
$view->requires = array(
'term_data',
'node',
);
$views[$view->name] = $view;
return $views;
}