Привет, Большой пепел!
Ты уже почти там. Вам просто нужно проверить пару вещей:
- это $ i в пределах двух страниц от начала или конца счетчика страниц. Это легко, правда?
if ($i <= 2 || $i >= $count_pages - 2)
это $ i на двух страницах текущей страницы?
Это достигается с помощью
if (abs($i - $page) <= 2)
Так что теперь остается вопрос: когда поставить многоточие?
Если вы просто повторяете '...' каждый раз, когда вышеуказанные условия не выполняются, вы просто получите целую кучу эллипсов, верно?
Кроме того, возможно, вам понадобятся два эллипса (представьте, что на странице 10 страниц, и вы на 10-й странице. Вам нужно '1 2 ... 8 9 10 11 12 ... 19 20).
Я уверен, что есть более элегантный способ для этого, но я бы просто использовал флаг ($ outOfRange), который имеет значение false, когда выполняется любое из вышеперечисленных условий, но имеет значение true, если они не выполнены. Затем мы выводим '...' только тогда, когда условия не выполняются, но $ outOfRange все еще ложно. Итак, имеем:
$outOfRange = false;
for($i = 1; $i <= $count_pages; $i++) {
if ($i <= 2 || $i >= $count_pages - 2 || abs($i - $page) <= 2) {
// page number should be echoed so do as you did before
$outOfRange = false;
if($i == $page) {
echo "<li><a class='active-page' href='./latest.php?page=$i'>$i</a></li>";
} else {
echo "<li><a href='./latest.php?page=$i'>$i</a></li>";
}
} else {
// we are out of range! if not already out of range, echo ellipsis
if (!$outOfRange) {
echo ' ... ';
}
$outOfRange = true;
}
}