УрокViews 2: Отображение количества элементов под их выводом

При использовании пейджера в выводе вьюхи, количество элементов на странице можно вывести и вручную. Однако если выводить все элементы на одной странице, то довольно удобно показывать общее количество этих элементов под их выводом.

Если вы не боитесь использования PHP снипетов внутри вьюхи, то в настройках вьюса в подвале (footer) укажите формат ввода - php code и вставьте туда вот это:

<?php
  $current_view = views_get_current_view();
  print count($current_view->result);
?>

Это же можно сделать и другим способом. Например, через свой модуль. Для этого надо имплементировать хук hook_views_pre_render():

<?php
/**
* Implementation of hook_views_pre_render()
* When rendering one of our own views, insert a count into the footer.
*/
function ИМЯМОДУЛЯ_views_pre_render(&$view) {
  $view->style_plugin->display->handler->options['footer'] = t('@count items', array('@count' => count($view->result));;
  $view->style_plugin->display->handler->options['defaults']['footer'] = FALSE;
}
?>

Для подсчёта количества результатов есть и дополнительные модули на drupal.org. Например, views calc. Однако я не считаю правильным нагружать сайт дополнительными модулями ради двух строк кода.

Комментарии

Аватар пользователя Niklan
Niklan написал:

Спасибо. Побольше бы статей с Views. Еще бы статью как оформить через tpl.php форму фильтрации (exposed form). А то что-то ничем хорошим не кончилось.

P.s. как в поле и в фильтр прицепить timezone? Это же жесть. В ноде выводит с учетом часового пояса пользователя, а во вьюхе UTC время и сортирует по нему же, а нужно чтобы по часовому поясу пользователя.

Я так понимаю нужно прицепить date_format_date, но как

28.11.2011 09:49
Аватар пользователя kalabro
kalabro написал:

Еще бы статью как оформить через tpl.php форму фильтрации (exposed form). А то что-то ничем хорошим не кончилось.
по тому же принципу, что и все шаблоны во views. копируете в свою темуviews-exposed-form.tpl.php и переименовываете в views-exposed-form--VIEWNAME.tpl.php

28.11.2011 21:25
Аватар пользователя Niklan
Niklan написал:

Отлично! Я немного по другому делал, вот и не получалось.

Осталось решить проблему с часовым поясом. У кого-нибудь есть идеи? Как заставить выводить время с учетом часового пояса? Может поле вывода времени в таблице результатов обернуть во что-нибудь? Я пробовал в formate_date он еррорит.

29.11.2011 11:19
Аватар пользователя Гость
Гость написал:

Может кому пригодится Views exposed form layout, позволяет групировать поля по регионам.

10.04.2015 18:56
Аватар пользователя Константин
Константин написал:

А нет ли решения наоборот: при использовании пейджера вывести общее количество элементов на всех страницах?

16.02.2012 13:47
Аватар пользователя Spleshka
Spleshka написал:

Так скрипт же это и делает :)

17.02.2012 16:49
Аватар пользователя Константин
Константин написал:

В том то и дело, что нет. Если сделать постраничный вывод, например по 25 элементов, то на каждой странице (кроме последней) будет указано "всего: 25", а на последней сколько поместилось. Мне же нужно, что бы на всех страницах выводилось общее количество, например, "всего: 453". Всю голову уже поломал, не понимаю как это сделать. И, по идеи, это должно быть возможно, поскольку, из базы извлекаются все материалы, а разбивается по страницам уже массив результатов.

20.02.2012 09:24
Аватар пользователя Spleshka
Spleshka написал:

Если честно, на вскидку не помню, отдаёт и постраничный вьюс общее количество элементов в выборке из базы. Сделайте debug($views); и посмотрите что там есть.

20.02.2012 21:23
Аватар пользователя ihorls
ihorls написал:

Добрый день!
Вы решили для себя этот вопрос? Поделитесь?

12.02.2015 18:33

Комментировать