Ниже приведен фрагмент из общего класса нумерации страниц 1 , который я написал несколько лет назад.Я отредактировал его, чтобы показать только соответствующие части.
// cntAround is the number of pages to show before and after the current
function renderNavigation($cntAround = 1) {
$out = '';
$isGap = false; // A "gap" is the pages to skip
$current = // Current page
$cntPages = // Total number of pages
for ($i = 0; $i < $pages; $i++) { // Run through pages
$isGap = false;
// Are we at a gap?
if ($cntAround >= 0 && $i > 0 && $i < $cntPages - 1 && abs($i - $current) > $cntAround) { // If beyond "cntAround" and not first or last.
$isGap = true;
// Skip to next linked item (or last if we've already run past the current page)
$i = ($i < $current ? $current - $cntAround : $cntPages - 1) - 1;
}
$lnk = ($isGap ? '...' : ($i + 1)); // If gap, write ellipsis, else page number
if ($i != $current && !$isGap) { // Do not link gaps and current
$lnk = '<a href="?page=' . ($i + 1) . '">' . $lnk . '</a>';
}
$out .= "\t<li>" . $lnk . "</li>\n"; // Wrap in list items
}
return "<ul>\n" . $out . '</ul>'; // Wrap in list
}
Пример 1
cntAround = 1
, current = 5
, cntPages = 9
:
[1] ... [4] 5 [6] ... [9]
Пример 2
cntAround = 3
, current = 5
, cntPages = 11
:
[1] [2] [3] [4] 5 [6] [7] [8] ... [11]
1) Статья на датском языке.Версия Google Translate'd здесь .