Класс Нумерации страниц (Pagination Class)
Класс нумерации страниц CodeIgniter очень прост для использования, и на 100% настраиваемый, принимая динамически переданные параметры или считывая их из хранимой конфигурации.
Если вам не знаком термин «пагинация», это обозначает ссылки, которые позволяют вам переходить от страницы к странице, например так:
« Первая < 1 2 3 4 5 > Последняя »
Пример
Вот простой пример, показывающий вам как создать нумерацию страниц в одной из ваших функций контроллера:
$this->load->library('pagination');
$config['base_url'] = 'http://example.com/index.php/test/page/';
$config['total_rows'] = 200;
$config['per_page'] = 20;
$this->pagination->initialize($config);
echo $this->pagination->create_links();
Примечание:
Массив $config содержит ваши конфигурационные переменненные. Он передается функции $this->pagination->initialize, как показано выше. Хотя существуют около двадцати конфигурируемых элементов, как минимум вам нужны три, показанные выше. Вот описание представления этих элементов:
- base_url Это основной URL к функции контроллера, содержащей нумерацию сраниц. В примере выше он указывает на контроллер Test и его функцию page. Помните, что если вы переписываете ваши URI, вы должны применять другую структуру.
- total_rows Это число представляет суммарное количество строк результата, для которого вы создаете нумерацию страниц. Обычно это число строк, которое возвращает запрос на выборку всех строк из таблицы БД.
- per_page Количество элементов, одновременно отображаемых на странице. В примере выше, вы показываете по 20 элементов.
Функция create_links() вернет пустую строку, если нумерации страниц нечего показывать.
Сохранение настроек в конфигурационном файле
Если вы предпочитаете не устанавливать настройки, используя показанный выше метод, вы можете поместить их в конфигурационный файл. Просто создайте новый файл pagination.php, добавьте в него массив $config. Затем сохраните файл в application/config/pagination.php и он будет использован автоматически. Вы не должны использовать функцию инициализации $this->pagination->initialize, если вы сохранили ваши настройки в конфигурационном файле.
Настройка нумерации страниц
Далее следует список всех доступных параметров, которые вы можете передать инициализирующей функции для настройки отображения.
$config['uri_segment'] = 3;
Функция нумерации страниц автоматически определяет, какой сегмент вашего URI содержит номер страницы. Если вам нужно что-то другое, вы можете уточнить это.
$config['num_links'] = 2;
Количество "цифровых" ссылок, которое будет отображаться до и после указанного номера страниц. Например, число 2 означает, что нужно поместить по две ссылки до и после, как в примере в самом верху этой страницы.
$config['use_page_numbers'] = TRUE;
По умолчанию сегменты URI используют стартовый индекс для элементов, для которых вы делаете нумерацию страниц. Если вы предпочитаете показывать актуальный номер страницы, установите этот параметр в TRUE.
$config['page_query_string'] = TRUE;
По умолчанию библиотека нумерации страниц подразумевает, что вы используете сегменты URI, и строите ваши ссылки так
http://example.com/index.php/test/page/20
Если вы включили $config['enable_query_strings'] в TRUE, ваши ссылки будут автоматически переписаны, используя строки запроса. Эта опция также может быть указана явно. Если $config['page_query_string'] установлено в TRUE, ссылки нумерации страниц будут соответствовать.
http://example.com/index.php?c=test&m=page&per_page=20
Помните, что "per_page" по умолчанию передается в строке запроса, однако может быть сконфигурирован, используя $config['query_string_segment'] = 'your_string'
Добавление закрывающей верстки
Если вы хотите обернуть всю нумерацию страниц в некоторую верстку, вы можете сделать это двумя параметрами:
$config['full_tag_open'] = '<p>';
Открывающий тег, располагающийся слева от результата.
$config['full_tag_close'] = '</p>';
Закрывающий тег, располагающийся справа от результата.
Настройка первой ссылки
$config['first_link'] = 'Первая';
Текст, который должен отображаться в ссылке «Первая» слева. Если вы не хотите, чтобы эта ссылка отображалась, установите значение параметра в FALSE.
$config['first_tag_open'] = '<div>';
Открывающий тег для ссылки «Первая» .
$config['first_tag_close'] = '</div>';
Закрывающий тег для ссылки «Первая» .
Настройка последней ссылки
$config['last_link'] = 'Последняя';
Текст, который отборажается в ссылке «Последняя» справа. Если вы не хотите отображать эту ссылку, установите значение этого параметра в FALSE.
$config['last_tag_open'] = '<div>';
Открывающий тег для ссылки «Последняя» .
$config['last_tag_close'] = '</div>';
Закрывающий тег для ссылки «Последняя» .
Настройка ссылки «Далее»
$config['next_link'] = '>';
Текст, который будет отбражаться в ссылке «Далее» («Следующая страница»). Если вы не хотите отображать эту ссылку, установите значение этого параметра в FALSE.
$config['next_tag_open'] = '<div>';
Открывающий тег для ссылки «Далее» .
$config['next_tag_close'] = '</div>';
Закрывающий тег для ссылки «Далее» .
Настройка ссылки «Назад»
$config['prev_link'] = '<';
Текст, который вы хотите показывать в ссылке «Назад» ( «Предыдущая страница», «Ранее» ). Если вы не хотите показывать эту ссылку, установите значение параметра в FALSE.
$config['prev_tag_open'] = '<div>';
Открывающий тег для ссылки «Назад» .
$config['prev_tag_close'] = '</div>';
Закрывающий тег для ссылки «Назад» .
Настройка ссылки на текущую страницу
$config['cur_tag_open'] = '<b>';
Открывающий тег для ссылки на текущую страницу.
$config['cur_tag_close'] = '</b>';
Закрывающий тег для ссылки на текущую страницу.
Настройка ссылки с номером страницы
$config['num_tag_open'] = '<div>';
Открывающий тег.
$config['num_tag_close'] = '</div>';
Закрывающий тег.
Скрытие страниц
Если вы хотите, чтобы не отображались ссылки на конкретные страницы (например, вы хотите сделать «следующая» и «предудыщая»), вы можете подавить их вывод:
$config['display_pages'] = FALSE;
Добавление класса каждой ссылке
Если вы хотите добавить класс каждой сгенерированной классом нумерации страниц ссылке, вы можете установить значение параметра конфигурации "anchor_class" во что пожелаете.