this is code with bootstrap classes for page pagination
works on CouchCMS v2.1 beta
file functions.php
works on CouchCMS v2.1 beta
file functions.php
- Code: Select all
function getPaginationString( $page = 1, $totalitems, $limit = 15, $adjacents = 1, $targetpage = "/", $pagestring = "?page=", $prev_text, $next_text, $simple ){
//defaults
if( !$adjacents ) $adjacents = 1;
if( !$limit ) $limit = 15;
if( !$page ) $page = 1;
if( !$targetpage ) $targetpage = "/";
//other vars
$prev = $page - 1; //previous page is page - 1
$next = $page + 1; //next page is page + 1
$lastpage = ceil($totalitems / $limit); //lastpage is = total items / 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 .= "<ul class=\"pagination justify-content-center pagination-sm\"";
$pagination .= ">";
//previous button
if( $page > 1 ){
$pagination .= "<li class=\"page-item disabled\"><span class=\"page-link prev\"><a href=\"$targetpage$pagestring$prev\" class=\"prev\">".$prev_text."</a></span></li>";
}
else{
$pagination .= "<li class=\"page-item disabled\"><span class=\"page-link prev\">".$prev_text."</span></li>";
}
//pages
if( !$simple ){
if( $lastpage < 7 + ($adjacents * 2) ){ //not enough pages to bother breaking it up
for( $counter = 1; $counter <= $lastpage; $counter++ ){
if( $counter == $page ){
$pagination .= "<li class=\"page-item active\"><span class=\"page-link\">$counter</span></li>";
}
else{
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . $counter . "\" class=\"page-link\">$counter</a>";
}
}
}
elseif( $lastpage >= 7 + ($adjacents * 2) ){ //enough pages to hide some
//close to beginning; only hide later pages
if($page < 1 + ($adjacents * 3)){
for( $counter = 1; $counter < 4 + ($adjacents * 2); $counter++ ){
if( $counter == $page ){
$pagination .= "<li class=\"page-item active\"><span class=\"page-link\">$counter</span></li>";
}
else{
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . $counter . "\" class=\"page-link\">$counter</a>";
}
}
$pagination .= "<li class=\"page-item disabled\"><span class=\"page-link\">…</span></li>";
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . $lpm1 . "\" class=\"page-link\">$lpm1</a></li>";
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . $lastpage . "\" class=\"page-link\">$lastpage</a></li>";
}
//in middle; hide some front and some back
elseif( $lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2) ){
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . "1\" class=\"page-link\">1</a></li>";
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . "2\" class=\"page-link\">2</a></li>";
$pagination .= "<li class=\"page-item disabled\"><span class=\"page-link\">…</span></li>";
for( $counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++ ){
if( $counter == $page ){
$pagination .= "<li class=\"page-item active\"><span class=\"page-link\">$counter</span></li>";
}
else{
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . $counter . "\" class=\"page-link\">$counter</a></li>";
}
}
$pagination .= "<li class=\"page-item disabled\"><span class=\"page-link\">…</span></li>";
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . $lpm1 . "\" class=\"page-link\">$lpm1</a></li>";
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . $lastpage . "\" class=\"page-link\">$lastpage</a></li>";
}
//close to end; only hide early pages
else{
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . "1\" class=\"page-link\">1</a></li>";
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . "2\" class=\"page-link\">2</a></li>";
$pagination .= "<li class=\"page-item disabled\"><span class=\"page-link\">…</span></li>";
for( $counter = $lastpage - (1 + ($adjacents * 3)); $counter <= $lastpage; $counter++ ){
if( $counter == $page ){
$pagination .= "<li class=\"page-item active\"><span class=\"page-link\">$counter</span></li>";
}
else{
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . $counter . "\" class=\"page-link\">$counter</a></li>";
}
}
}
}
}
else{
$counter = $lastpage + 1;
}
//next button
if( $page < $counter - 1 ){
$pagination .= "<li class=\"page-item\"><a href=\"" . $targetpage . $pagestring . $next . "\" class=\"page-link next\">".$next_text."</a></li>";
}
else{
$pagination .= "<li class=\"page-item disabled\"><span class=\"page-link next\">".$next_text."</span>";
}
$pagination .= "</div>\n";
}
return $pagination;
}