Views set header
09.08.2015
Как-то раз потребовалось добавить свою шапку к views программно. Нашел такой пример:
// Load the view.
$view = views_get_view('VIEW_NAME');
// Set the options for the header text.
// To get an idea of what options are available, set up a view with header text
// and then use the devel module to print out the view definition.
// For example, add a header text area field and print it with
// dpm($view->header['area']); after you have loaded it with views_get_view().
$header_options = array(
'label' => t('Header text'), // Administrative label. Not really needed here.
'content' => 'This is the header text content.', // Content of header text.
'format' => 'filtered_html', // Format of header text.
'empty' => 1, // Show even when there are no results. Set to zero otherwise.
);
// This adds a header handler for a text area. The table is views because it is not
// a database field. The field is area because it is a text area.
// The header_options are the settings.
$view->add_item('DISPLAY_NAME', 'header', 'views', 'area', $header_options);
// This is the preferred way to get the rendered view.
$output = $view->preview('DISPLAY_NAME');
// If you want you can check for results with this.
if (!empty($view->result)) {
// Do something if there are rows.
}
// Для футера
$view->add_item('DISPLAY_NAME', 'footer', 'views', 'area', $footer_options);
// Для пустого результата
$view->add_item('DISPLAY_NAME', 'empty', 'views', 'area', $empty_options);
либо
/**
* Implements hook_views_pre_view().
*/
function MODULENAME_views_pre_view($view, &$display_id, &$args) {
if ($view->name == 'my_view' && $display_id == 'page') {
$view->add_item($display_id, 'header', 'views', 'area', array('content' => 'Header text...', 'format' => 'full_html'));
$view->add_item($display_id, 'footer', 'views', 'area_text_custom', array('content' => 'Footer text...'));
}
}
а в hook_views_pre_render() можно изменять атачи
/**
* Implements hook_views_pre_render().
*/
function MODULENAME_views_pre_render($view) {
if ($view->name == 'my_view' && $view->current_display == 'page') {
$view->attachment_before = 'Header text...';
$view->attachment_after = 'Footer text...';
}
}
#Drupal
