Урок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. Однако я не считаю правильным нагружать сайт дополнительными модулями ради двух строк кода.
- Spleshka
- 27.11.2011
- 13626
Комментарии
Спасибо. Побольше бы статей с Views. Еще бы статью как оформить через tpl.php форму фильтрации (exposed form). А то что-то ничем хорошим не кончилось.
P.s. как в поле и в фильтр прицепить timezone? Это же жесть. В ноде выводит с учетом часового пояса пользователя, а во вьюхе UTC время и сортирует по нему же, а нужно чтобы по часовому поясу пользователя.
Я так понимаю нужно прицепить date_format_date, но как
Еще бы статью как оформить через tpl.php форму фильтрации (exposed form). А то что-то ничем хорошим не кончилось.
по тому же принципу, что и все шаблоны во views. копируете в свою темуviews-exposed-form.tpl.php и переименовываете в views-exposed-form--VIEWNAME.tpl.php
Отлично! Я немного по другому делал, вот и не получалось.
Осталось решить проблему с часовым поясом. У кого-нибудь есть идеи? Как заставить выводить время с учетом часового пояса? Может поле вывода времени в таблице результатов обернуть во что-нибудь? Я пробовал в formate_date он еррорит.
Может кому пригодится Views exposed form layout, позволяет групировать поля по регионам.
А нет ли решения наоборот: при использовании пейджера вывести общее количество элементов на всех страницах?
Так скрипт же это и делает :)
В том то и дело, что нет. Если сделать постраничный вывод, например по 25 элементов, то на каждой странице (кроме последней) будет указано "всего: 25", а на последней сколько поместилось. Мне же нужно, что бы на всех страницах выводилось общее количество, например, "всего: 453". Всю голову уже поломал, не понимаю как это сделать. И, по идеи, это должно быть возможно, поскольку, из базы извлекаются все материалы, а разбивается по страницам уже массив результатов.
Если честно, на вскидку не помню, отдаёт и постраничный вьюс общее количество элементов в выборке из базы. Сделайте
debug($views);
и посмотрите что там есть.Добрый день!
Вы решили для себя этот вопрос? Поделитесь?
Комментировать