пятница, 11 марта, 2016 - 12:21

До получение результата выборки.

/**
 * Implements hook_views_pre_view().
 */
function hook_views_pre_view($view, &$display_id, &$args) {
  if ($view->name == 'view' && $display_id == 'display') {
    $view->add_item($display_id, 'header', 'views', 'area', array(
      'content' => 'Header text',
      'format' => 'full_html'
    ));
    $view->add_item($display_id, 'footer', 'views', 'area', array(
      'content' => 'Footer text',
      'format' => 'full_html'
    ));
  }
}

После получение результата выборки, правда будет в attachment (header и footer не доступны :( ).

/**
 * Implements hook_views_pre_render().
 */
function hook_views_pre_render($view) {
  $display_id = $view->current_display;

  if ($view->name == 'view' && $display_id == 'display') {
    $view->attachment_before = 'Header text';
    $view->attachment_after = 'Footer text';
  }
}

Если не нравится классы attachment их можно поменять на "views-header" и "views-footer".

/**
 * Implements hook_views_post_render().
 */
function hook_views_post_render(&$view, &$output, &$cache) {
  $display_id = $view->current_display;

  if ($view->name == 'view' && $display_id == 'display') {
    $output = preg_replace('/' . preg_quote('class="attachment attachment-before"', '/') . '/', 'class="view-header"', $output);
    $output = preg_replace('/' . preg_quote('class="attachment attachment-after"', '/') . '/', 'class="view-footer"', $output);
  }
}
Теги: 

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.