1 views.module | views_theme($existing, $type, $theme, $path) |
Implement hook_theme(). Register views theme functions.
File
- core/
modules/ views/ views.module, line 74 - Primarily Backdrop hooks and global API functions to manipulate views.
Code
function views_theme($existing, $type, $theme, $path) {
$path = backdrop_get_path('module', 'views');
module_load_include('inc', 'views', 'templates/views.theme');
// Some quasi clever array merging here.
$base = array(
'path' => $path . '/templates',
);
// Our extra version of pager from pager.inc
$hooks['views_mini_pager'] = $base + array(
'variables' => array('tags' => array(), 'element' => 0, 'parameters' => array()),
'pattern' => 'views_mini_pager__',
'file' => 'views.theme.inc',
);
$variables = array(
// For displays, we pass in a dummy array as the first parameter, since
// $view is an object but the core contextual_preprocess() function only
// attaches contextual links when the primary theme argument is an array.
'display' => array('view_array' => array(), 'view' => NULL),
'style' => array('view' => NULL, 'options' => NULL, 'rows' => NULL, 'title' => NULL),
'row' => array('view' => NULL, 'options' => NULL, 'row' => NULL, 'field_alias' => NULL),
'exposed_form' => array('view' => NULL, 'options' => NULL),
'pager' => array(
'view' => NULL, 'options' => NULL,
'tags' => array(), 'quantity' => 10, 'element' => 0, 'parameters' => array()
),
);
// Default view themes
$hooks['views_view_field'] = $base + array(
'pattern' => 'views_view_field__',
'variables' => array('view' => NULL, 'field' => NULL, 'row' => NULL),
'file' => 'views.theme.inc',
);
$hooks['views_view_grouping'] = $base + array(
'pattern' => 'views_view_grouping__',
'variables' => array('view' => NULL, 'grouping' => NULL, 'grouping_level' => NULL, 'rows' => NULL, 'title' => NULL),
);
$plugins = views_fetch_plugin_data();
// Register theme functions for all style plugins
foreach ($plugins as $type => $info) {
foreach ($info as $plugin => $def) {
if (isset($def['theme']) && (!isset($def['register theme']) || !empty($def['register theme']))) {
$hooks[$def['theme']] = array(
'pattern' => $def['theme'] . '__',
'file' => $def['theme file'],
'path' => $def['theme path'],
'variables' => $variables[$type],
);
$include = BACKDROP_ROOT . '/' . $def['theme path'] . '/' . $def['theme file'];
if (file_exists($include)) {
require_once $include;
}
if (!function_exists('theme_' . $def['theme'])) {
$hooks[$def['theme']]['template'] = backdrop_clean_css_identifier($def['theme']);
}
}
if (isset($def['additional themes'])) {
foreach ($def['additional themes'] as $theme => $theme_type) {
if (empty($theme_type)) {
$theme = $theme_type;
$theme_type = $type;
}
$hooks[$theme] = array(
'pattern' => $theme . '__',
'file' => $def['theme file'],
'path' => $def['theme path'],
'variables' => $variables[$theme_type],
);
if (!function_exists('theme_' . $theme)) {
$hooks[$theme]['template'] = backdrop_clean_css_identifier($theme);
}
}
}
}
}
$hooks['views_form_views_form'] = $base + array(
'render element' => 'form',
);
$hooks['views_exposed_form'] = $base + array(
'template' => 'views-exposed-form',
'pattern' => 'views_exposed_form__',
'render element' => 'form',
);
$hooks['views_more'] = $base + array(
'template' => 'views-more',
'pattern' => 'views_more__',
'variables' => array('more_url' => NULL, 'link_text' => 'more', 'view' => NULL),
);
$hooks['views_container'] = array(
'render element' => 'element',
'file' => 'templates/views.theme.inc',
);
// Add theme suggestions which are part of modules.
foreach (views_get_module_apis() as $info) {
if (isset($info['template path'])) {
$hooks += _views_find_module_templates($hooks, $info['template path']);
}
}
return $hooks;
}