У меня есть разбиение на страницы, и я хочу достичь и ограничить ее до 5 номеров страниц,
Смотри ниже:
Примеры:
PREVIOUS 1 2 3 4 5 NEXT PREVIOUS 20 21 22 23 ... 39 NEXT PREVIOUS 59 ... 81 82 83 84 NEXT
Всего пять страниц, которые они должны отображать.
Какую часть кода я должен изменить и изменить?
У меня проблемы с комбинацией.
<?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"; } ?>
У меня возникает проблема с отслеживанием предела для отображения номера страницы.
Я использовал ниже код для моего плагина wordpress, чтобы отображать разбиение на страницы и отображение данных в таблице. Вы можете использовать это в соответствии с вашим запросом mysql.
<?php echo '<table width="100%" border="1" cellspacing="0" cellpadding="0">'; ?> <col width="10%" /> <col width="25%" /> <col width="25%" /> <col width="30%" /> <col width="10%" /> <?php echo '<tr class="st_th" height="30px">'; echo '<th class="th_id"> ID</th>'; echo '<th class="st_th1"> Name</th>'; echo '<th class="st_th1"> Phone</th>'; echo '<th class="st_th1">Address</th>'; echo '<th class="st_th1">Details</th>'; echo '</tr>'; global $wpdb; $num_rec_per_page=4; if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; $start_from = ($page-1) * $num_rec_per_page; $sql = "SELECT * FROM {$wpdb->prefix}addressbook LIMIT $start_from, $num_rec_per_page"; $result = $wpdb->get_results($sql); foreach($result as $row) { echo '<tr height="25px">'; echo '<td width="10%" class="fast_t">' . $row->id. '</td>'; echo '<td class="st_th1" style="padding-left:5px; width:200px">' . $row->f_name, ' ', $row->m_name, ' ', $row->l_name . '</td>'; echo '<td class="st_th1" style="padding-left:5px;width:200px">' . $row->phone . '</td>'; echo '<td class="st_th1" style="padding-left:5px;width:200px">' . $row->address . '</td>'; //echo '<td style="padding-left:5px">' . $row->address . '</td>'; $pages2 = get_pages(array( 'meta_key' => '_wp_page_template', 'meta_value' => 'user_list_page.php' )); foreach($pages2 as $page2){ //echo $page->ID.'<br />'; } if ( is_user_logged_in() ) { $user_ID = get_current_user_id(); } if ($user_ID==$row->id) { # code... echo '<td '.$attributes.'>'; //echo '<a href="'. get_permalink( $page1->ID).'&id=' . $row->id . '"> Edit</a>|'; if ( get_option('permalink_structure') ) { echo '<a href="'. get_permalink( $page->ID).'?id=' . $row->id . '"> Details</a>'; //echo 'permalinks enabled'; } else { echo '<a href="'. get_permalink( $page->ID).'&id=' . $row->id . '"> Details</a>'; } echo'</td>'; } if ($user_ID!=$row->id) { echo '<td '.$attributes.'><a href="'. get_permalink( $page->ID).'&id=' . $row->id . '"> Details</a></td>'; } echo '</tr>'; } echo '</table>'; $sql = "SELECT * FROM " . $wpdb->prefix."addressbook"; $rs_result = mysql_query($sql); //run the query $total_records = mysql_num_rows($rs_result); //count number of records $total_pages = ceil($total_records / $num_rec_per_page); $aaa = get_permalink( $page2->ID);?> <div class="pagination"> <?php echo "<a href='".$aaa."&page=1'>".'|<'."</a> "; // Goto 1st page for ($i=1; $i<=$total_pages; $i++) { if ( get_option('permalink_structure') ) { echo "<a href='".$aaa."?page=".$i."'>".$i."</a> "; //echo 'permalinks enabled'; } else { echo "<a href='".$aaa."&page=".$i."'>".$i."</a> "; } }; if ( get_option('permalink_structure') ) { echo "<a href='".$aaa."?page=$total_pages'>".'>|'."</a> "; // Goto last page } else { echo "<a href='".$aaa."&page=$total_pages'>".'>|'."</a> "; // Goto last page } echo '</div>';?> </div>
Это сработало для меня. Вы должны передать свой текущий номер страницы и общее количество страниц в функцию.
function pageRange(page,pageCount){ var start = page-2, end = page+2; if(end>pageCount){ start-=(end-pageCount); end=pageCount; } if(start<=0){ end+=((start-1)*(-1)); start=1; } end = end>pageCount?pageCount:end; return {start:start, end:end}; }
EDIT: ознакомьтесь с этой скрипкой, которую я сделал https://jsfiddle.net/qsLp6ajL/2/