After searching the net I found no topics for setting the "current active page" in the middle of the pagination list so users can ALWAYS jump few pages ahead or back if they want to. I thought someone would be interested so here's the code I changed the core libraries\joomla\html\pagination.php
Find...
Code: Select all
$displayedPages = 10;
$this->set( 'pages.start', (floor(($this->get('pages.current') -1) / $displayedPages)) * $displayedPages +1);
if ($this->get('pages.start') + $displayedPages -1 < $this->get('pages.total')) {
$this->set( 'pages.stop', $this->get('pages.start') + $displayedPages -1);
} else {
$this->set( 'pages.stop', $this->get('pages.total'));
}
// If we are viewing all records set the view all flag to true
if ($this->limit == $total) {
$this->_viewall = true;
}
Code: Select all
$displayedPages = 10; // not less than 4 and ONLY round numbers like 10, 12, 14...
$this->set( 'pages.start', $this->get('pages.current') - (($displayedPages / 2) + 1));
$this->set( 'pages.stop', $this->get('pages.current') + ($displayedPages / 2));
if ($this->get('pages.start') < 1) {
$this->set( 'pages.start', 1);
if ($this->get('pages.total') >= $displayedPages) {
$this->set( 'pages.stop', $this->get('pages.current') + ($displayedPages - $this->get('pages.current')));
}
else {
$this->set( 'pages.stop', $this->get('pages.total'));
}
}
else if ($this->get('pages.start') >= 1) {
if ($this->get('pages.total') <= $displayedPages) {
$this->set( 'pages.start', 1);
$this->set( 'pages.stop', $this->get('pages.total'));
}
else if ($this->get('pages.total') > $displayedPages) {
if ( ($this->get('pages.total') - $this->get('pages.current')) < ($displayedPages / 2) ){
$this->set( 'pages.start', $this->get('pages.current') - ( ($displayedPages - 1) - ($this->get('pages.total') - $this->get('pages.current'))) );
$this->set( 'pages.stop', $this->get('pages.total'));
}
}
}