У меня есть php-скрипт Photo Gallery … с реальным скриптом, у меня проблема, потому что я протестировал его и обнаружил, что если в разделе разбивки на страницы большое количество страниц, у скрипта возникают проблемы с отображением количества страниц, когда более 25 страниц … Я хотел бы обрезать показанные страницы, сохраняя только первые текущие страницы (например, сохраняя текущие 10 страниц, если общее количество страниц превышает 10, или сохраняя меньше текущих страниц, если общее количество страниц меньше 10) и сохраняя предыдущую и следующую ссылки без изменений … спасибо!
Пример:
если общее количество страниц> 10
< 1 2 3 4 5 6 7 8 9 10>
если общее количество страниц> 100 и я просматриваю страницу 12
< 3 4 5 6 7 8 9 10 11 12>
если общее количество страниц> 100 и я просматриваю страницу 52
< 43 44 45 46 47 48 49 50 51 52>
и так что …
но если общее количество страниц меньше 10, показывается нормальное разбиение на страницы …
< 1 2 3 4 5 6 7>
так должно быть:
предыдущая + 10 + следующая
или если меньше 10
предыдущая + всего страниц + следующая
Моя фотогалерея с предыдущими / актуальными / следующими страницами:
http://i.stack.imgur.com/TIeMB.jpg
Здесь вы можете увидеть проблему:
http://i.stack.imgur.com/svoHf.jpg
Вот часть основного скрипта … есть ли способ обрезать страницы до 25 элементов?
// display pagination
function print_pagination($numPages,$currentPage) {
$p = htmlentities($p, ENT_QUOTES);
$currentPage = htmlentities($currentPage, ENT_QUOTES);
echo 'Pagina '. $currentPage .' di '. $numPages;
if ($numPages > 1) {
echo ' ';
if ($currentPage > 1) {
$prevPage = $currentPage - 1;
echo '<a href="'. $_SERVER['PHP_SELF'] .'?p='. $prevPage.'" class="direction">⇦</a>';
}
for ($e = 0; $e < $numPages; $e++ ) {
$p = $e + 1;
if ($p == $currentPage) {
$class = 'current-paginate';
} else {
$class = 'paginate';
}
echo '<a class="'. $class .'" href="'. $_SERVER['PHP_SELF'] .'?p='. $p .'">'. $p .'</a>';
}
if ($currentPage != $numPages) {
$nextPage = $currentPage + 1;
echo '<a href="'. $_SERVER['PHP_SELF'] .'?p='. $nextPage.'" class="direction">⇨</a>';
}
}
}
с правкой, предложенной HD, я получаю:
// display pagination
function print_pagination($numPages,$currentPage) {
$p = htmlentities($p, ENT_QUOTES);
$currentPage = htmlentities($currentPage, ENT_QUOTES);
echo 'Pagina '. $currentPage .' di '. $numPages;
if ($numPages > 1) {
echo ' ';
if ($currentPage > 1) {
$prevPage = $currentPage - 1;
echo '<a href="'. $_SERVER['PHP_SELF'] .'?p='. $prevPage.'" class="direction">⇦</a>';
}
for ($e = 0; $e < $numPages; $e++ ) {
$p = $e + 1;
if ($p == $currentPage) {
$class = 'current-paginate';
} else {
$class = 'paginate';
}
if ($currentPage == $p) {
echo ' <a class="'. $class .'" href="'. $_SERVER['PHP_SELF'] .'?p='. $p .'">'. $p .'</a> ';
break;
}
}
if ($currentPage != $numPages) {
$nextPage = $currentPage + 1;
echo '<a href="'. $_SERVER['PHP_SELF'] .'?p='. $nextPage.'" class="direction">⇨</a>';
}
}
}
Моя галерея с усеченными номерами страниц: Pagina 45 di 59 ⇦ 45 ⇨
другие страницы отсутствуют …
Спасибо!
Вы можете просто break;
от for
цикл после 10 итераций.
for ($e = 0; $e < $numPages; $e++) {
$p = $e + 1;
if ($p == $currentPage) {
$class = 'current-paginate';
} else {
$class = 'paginate';
}
echo '<a class="' . $class . '" href="' . $_SERVER['PHP_SELF'] . '?p=' . $p . '">' . $p . '</a>';
if ($currentPage != $numPages) {
$nextPage = $currentPage + 1;
echo '<a href="' . $_SERVER['PHP_SELF'] . '?p=' . $nextPage . '" class="direction">⇨</a>';
}//Come out of the loop after 10 pages...
if (($currentPage + 10) == $p) {
break;
}
}
Других решений пока нет …