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 ### resultsFirst 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; ?>





















Comments
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
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!