Вход Регистрация
* balka90

Пагинация эксклюзив

  1. <?php
  2. /**
  3.  * Генерирует адаптивную пагинацию с кнопками "Назад", "Вперёд" и умными "..."
  4.  *
  5.  * @param int $currentPage Текущая страница
  6.  * @param int $totalPages Общее количество страниц
  7.  * @param int $delta Количество соседних страниц, отображаемых рядом
  8.  * @return string HTML-код пагинации
  9.  */
  10. function renderPagination($currentPage, $totalPages, $delta = 2) {
  11. if ($totalPages <= 1) return ''; // Если страниц всего одна, скрываем пагинацию
  12.  
  13. $output = '<nav class="pagination">';
  14.  
  15. // ? Кнопка "Назад"
  16. if ($currentPage > 1) {
  17. $output .= '<a href="?page=' . ($currentPage - 1) . '" rel="prev">&laquo; Назад</a>';
  18. }
  19.  
  20. // ? Первая страница и троеточие, если необходимо
  21. if ($currentPage > $delta + 2) {
  22. $output .= '<a href="?page=1">1</a>';
  23. $output .= '<span>...</span>';
  24. }
  25.  
  26. // ? Основные страницы вокруг текущей
  27. for ($i = max(1, $currentPage - $delta); $i <= min($totalPages, $currentPage + $delta); $i++) {
  28. if ($i == $currentPage) {
  29. $output .= '<span class="active">' . $i . '</span>';
  30. } else {
  31. $output .= '<a href="?page=' . $i . '">' . $i . '</a>';
  32. }
  33. }
  34.  
  35. // ? Последняя страница и троеточие, если необходимо
  36. if ($currentPage < $totalPages - $delta - 1) {
  37. $output .= '<span>...</span>';
  38. $output .= '<a href="?page=' . $totalPages . '">' . $totalPages . '</a>';
  39. }
  40.  
  41. // ? Кнопка "Вперёд"
  42. if ($currentPage < $totalPages) {
  43. $output .= '<a href="?page=' . ($currentPage + 1) . '" rel="next">Вперёд &raquo;</a>';
  44. }
  45.  
  46. $output .= '</nav>';
  47. return $output;
  48. }
  49.  
  50. // Пример использования:
  51. $currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1; // Определяем текущую страницу
  52. $totalPages = 20; // Количество страниц (например, из базы данных)
  53.  
  54. // Выводим пагинацию
  55. echo renderPagination($currentPage, $totalPages);
  56. ?>
» Описание: ? Как это работает?

1️⃣ Определяем текущую страницу через $_GET['page'].
2️⃣ Генерируем список страниц в зависимости от текущего положения.
3️⃣ Добавляем ..., если разрыв между первой/последней страницей и текущей слишком большой.
4️⃣ SEO-оптимизация – кнопки "Назад" и "Вперёд" содержат rel="prev" и rel="next", что помогает поисковикам.
Как выглядит итог?

Пример для 20 страниц, если мы на странице 10:
<< Назад | 1 ... 8 | 9 | [10] | 11 | 12 ... 20 | Вперёд >>
» Время добавления: 30 Марта 2025 в 01:52
» Посмотров: 33
» textarea
» Рейтинг: [+1 | -0]
Комментарии [0]
Онлайн: 1
Реклама