I have a pagination and I want to achieve and limit it to 5 page numbers,
See below:
Examples:
PREVIOUS 1 2 3 4 5 NEXT
PREVIOUS 20 21 22 23 ... 39 NEXT
PREVIOUS 59 ... 81 82 83 84 NEXT
Just five page number that they should be display.
Which part of the code should I alter and modify?
I am having trouble with the combination.
<?php
/* Setup page vars for display. */
if ($page == 0) $page = 1; //if no page var is given, default to 1.
$prev = $page - 1; //previous page is page - 1
$next = $page + 1; //next page is page + 1
$lastpage = ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up.
$lpm1 = $lastpage - 1; //last page minus 1
/*
Now we apply our rules and draw the pagination object.
We're actually saving the code to a variable in case we want to draw it more than once.
*/
$pagination = "";
if($lastpage > 1)
{
$pagination .= "<div class=\"pagination\">";
//previous buttons
if ($page > 1)
$pagination.= "<a class='buttons' href=\"$targetpage?page=$prev\">previous</a>";
else
$pagination.= "<a class='disabled'><buttons disabled>previous</buttons></a>";
//pages
if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<a class='current'><buttons style='background-color:#CEF6F5'>$counter</buttons></a>";
else
$pagination.= "<a class='buttons' href=\"$targetpage?page=$counter\">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some
{
//close to beginning; only hide later pages
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<a class='current'><buttons style='background-color:#CEF6F5'>$counter</buttons></a>";
else
$pagination.= "<a class='buttons' href=\"$targetpage?page=$counter\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a class='buttons' href=\"$targetpage?page=$lpm1\">$lpm1</a>";
$pagination.= "<a class='buttons' href=\"$targetpage?page=$lastpage\">$lastpage</a>";
}
//in middle; hide some front and some back
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<a class='buttons' href=\"$targetpage?page=1\"> 1 </a>";
$pagination.= "<a class='buttons' href=\"$targetpage?page=2\"> 2 </a>";
$pagination.= "...";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<a class='current'><buttons style='background-color:#CEF6F5'>$counter</buttons></a>";
else
$pagination.= "<a class='buttons' href=\"$targetpage?page=$counter\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a class='buttons' href=\"$targetpage?page=$lpm1\">$lpm1</a>";
$pagination.= "<a class='buttons' href=\"$targetpage?page=$lastpage\">$lastpage</a>";
}
//close to end; only hide early pages
else
{
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
$pagination.= "...";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<a class='current'><buttons style='background-color:#CEF6F5'>$counter</buttons></a>";
else
$pagination.= "<a class='buttons' href=\"$targetpage?page=$counter\">$counter</a>";
}
}
}
//next buttons
if ($page < $counter - 1)
$pagination.= "<a class='buttons' href=\"$targetpage?page=$next\">next</a>";
else
$pagination.= "<a class='buttons'>next</a>";
$pagination.= "</div>\n";
}
?>
I am having problem tracing the limit for displaying page number.