- Теория
- Теория
Создаём пагинацию в каталоге
Интернет-магазин, над которым мы трудились в прошлых частях, отлично работает, но Кекс всё не успокоится. Он отказался от фильтров в каталоге и теперь хочет разделить его на страницы. На каждой странице должно быть не больше шести товаров. Разработчики называют постраничный вывод информации пагинацией.
Товары хранятся в массиве $products
, они все сейчас отображаются на странице каталога. В переменной $limit
записано, сколько товаров нужно показывать на странице. В нашем случае — 6
.
В переменной $offset
(в переводе с английского, «смещение») хранится порядковый номер первого товара на текущей странице. Если выводить по шесть товаров, то для первой страницы смещение будет 0
, для второй — 6
, для третьей — 12
и так далее.
Чтобы показать на странице лишь шесть товаров, используем встроенную функцию array_slice
. Мы познакомились с ней в прошлой части. Эта функция копирует часть исходного массива и возвращает её в виде нового массива.
Функция array_slice
принимает четыре аргумента. Чтобы получить товары для одной страницы, передадим функции следующие значения:
- исходный массив —
$products
, - первый элемент —
$offset
, - количество элементов —
$limit
, - сохранять ли ключи —
true
, потому что ключ — это идентификатор товара, он нужен, чтобы показать правильную информацию о товаре.
Для первой страницы смещение $offset
равно нулю, поэтому функция вернёт массив с первыми шестью товарами. Выведем полученный массив на страницу. После этого изменим значение переменной $offset
, чтобы посмотреть, как выглядят разные страницы каталога.
Чтобы было удобнее следить за смещением, Думпо временно добавил на карточки товаров их порядковые номера.
- index.html
Вы перешли на другую страницу
Кликните внутри мини-браузера, чтобы поставить фокус в это окно.