The flag $view->get_total_rows is used to force the query of the view to calculate the total number of results of the set.
This parameter is TRUE by default in views that get all the results (no limit) or those which have a pager, so you always have the $view->total_rows variable populated in those cases.
But when you have a view that gets only a given number of results and no pager, the count query is not executed by default so you have to force it, i.e. in the hook_views_pre_execute so you have $view->total_rows populated for later use.
<?php
function my_module_views_pre_execute(&$view) {
if ($view->name == 'my_view' && $view->current_display == 'my_display') {
$view->get_total_rows = TRUE;
}
}
>?

I think this should be documented, but not sure where.

Comments

pcambra’s picture

Sorry, misspelled the php code:

function my_module_views_pre_execute(&$view) {
  if ($view->name == 'my_view' && $view->current_display == 'my_display') {
    $view->get_total_rows = TRUE;
  }
}
dawehner’s picture

Version: 7.x-3.x-dev » 6.x-3.x-dev

This can also be used for 6.x

dawehner’s picture

Do you want to create a patch? This would be awesome.

pcambra’s picture

I do, but im not sure of which file i should patch, where do you think this should be placed?

esmerel’s picture

Status: Active » Fixed

pushed to 3.x

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.