background image
HomeRecent PostsDrupalSearchTagsRSSContactAboutAccount

Displaying the total number of results on the search page and how many are being shown on the current page

Eric.London's picture

Back in March I wrote this article: Displaying the total number of results in a view and how many are being shown on the current page. This code snippet will show you how you can add the same functionality on the search results page and improve usability by showing the following text:

Displaying ### - ### of ### results

First I added a preprocess_search_results function in my theme's template.php file to generate the html to show on the search results page:

<?php
function MYTHEME_preprocess_search_results(&$variables) {

 
// define the number of results being shown on a page
 
$itemsPerPage = 10;

 
// get the current page
 
$currentPage = $_REQUEST['page']+1;

 
// get the total number of results from the $GLOBALS
 
$total = $GLOBALS['pager_total_items'][0];
   
 
// perform calculation
 
$start = 10*$currentPage-9;
 
$end = $itemsPerPage * $currentPage;
  if (
$end>$total) $end = $total;
   
 
// set this html to the $variables
 
$variables['MYTHEME_search_totals'] = "Displaying $start - $end of $total results";

}
?>

Now, you can show this variable on the search results page by copying the search results template file (modules/search/search-results.tpl.php) into your theme folder and editing it.

Here is the new contents of my modified file (minus the comments at the top):

<!-- NEW SEARCH RESULTS TOTALS: -->
<?php print $MYTHEME_search_totals; ?>

<!-- ORIG CONTENTS: -->
<dl class="search-results <?php print $type; ?>-results">
  <?php print $search_results; ?>
</dl>
<?php print $pager; ?>

pring summary results on search-results.tpl.php page

Hi,
I was wondering if you can point me in the right direction in doing something similar to your Displaying the Totals functionality. Here is what I after:
http://www.acsu.buffalo.edu/~fol/intMedsArray.gif

Basically I am trying to print a summary of keywords from the results page on a summary section on the bottom of the page. also posted here: http://drupal.org/node/1070908

Thank you in advance.

Ceci

Nice snippet

I changed the variables a bit so they are using the t() function. This way, translators can change the display easily.

eg: t('Displaying @start - @end of @total results', array('@start' => $start, '@end' => $end, '@total' => $total));

Fantastic

Finding snippets that
a) work
b) are simple to implement
c) retain a separation of data from content
d) don't hack core and
e) I get (the hardest condition to satisfy)

is like GOLD.
:)
Thank you Eric London - I've credited you in my template.php
;)
Chris

Thanks Eric - i need something similar a printable summary of re

Hi,

I need to create something similar but instead of totals I would like to create a short printable summary at the bottom of the page. Take a look this posting:
http://drupal.org/node/1070908#comment-4134706

Thank you for any help you can provide.

Nice one

This is a great snippet--very clean and straightforward. Thanks for sharing!

Thank you !

This was indeed very easy to understand and very helpful! Thanks a lot!