Класс пагинации (вывод списка страниц) 

Класс пагинации 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'] = 'ваша_строка'

$config[‘reuse_query_string’] = FALSE;

По умолчанию ваши аргументы строки запроса (ничего общего с другими параметрах строки запроса) будут игнорироваться. Установив этот конфиг в TRUE добавим существующие аргументы строки запроса в URL после имени URI сегмента и перед суффиксом.:

http://example.com/index.php/test/page/20?query=search%term

Это поможет вам смешать нормальные URI сегменты как аргументы строки запроса, до версии 3.0 это не было возможно.

$config[‘prefix’] = ‘’;

Пользовательский префикс добавленый к пути. Значение префикса будет прямо перед смещением сегмента.

$config[‘suffix’] = ‘’;

Пользовательский суффикс добавленый к пути. Значение суфикса будет прямо после смещением сегмента.

$config[‘use_global_url_suffix’] = FALSE;

Когда установлен в TRUE, будет переопределять $config['suffix'] значение вместо того, чтобы установить его на тот, который у вас учтановлен в $config['url_suffix'] в вашем application/config/config.php файле.

Добавление ограждающей разметки 

Если вы хотите огродить нумерацию страниц некоторой разметкой, можно сделать это двумя предпочтениями:

$config[‘full_tag_open’] = ‘<p>’;

Открывающий тэг размещенный на левой стороне от результата.

$config[‘full_tag_close’] = ‘</p>’;

Закрывающий тэг размещенный на правой стороне от результата.

Скрытие Страниц 

Если вы хотите не список конкретных страниц (например, только “следующая” и “предыдущая” ссылки), вы можете убрать их путем добавления:

$config['display_pages'] = FALSE;

Добавление атрибутов к якорю 

Если вы хотите добавить дополнительный атрибут, который будет добавлен к каждой ссылке класса пагинации, вы можете установить их в качестве пары ключ/значение в конфиге “attributes”:

// Производит: class="myclass"
$config['attributes'] = array('class' => 'myclass');

Примечание

Использование старого способа настройки классов через “anchor_class” является устаревшим.

Отключение “rel” атрибута 

По умолчанию атрибут rel динамически генерируются и добавляются в соответствующие якоря. Если по каким-то причинам вы хотите отключить это, передайте булево FALSE как постоянный атрибут

$config['attributes']['rel'] = FALSE;

Настройки класса 

class CI_Pagination 
initialize([$params = array()]) 
Параметры:
  • $params (массив) – Параметры конфигурации
Возвращает:

CI_Pagination экземпляр (метод цепочек)

Возврощаемый тип:

CI_Pagination

Инициализация настроек класса пагинации.

Возвращает:HTML отформатированная пагинация
Возврощаемый тип:строка

Возвращает блок “пагинации”, содержащий сгенерированные ссылки или пустую строку, если там всего одна страница.