Стандартные виды пагинатора мне не подходили, так что сделал свой:
Пример:
Первая Назад ... 8 9 10 11
12 13 ... Вперед Последняя
Код вида simple.php
Код:
<?php
// Максимальное количество отображаемых номеров страниц пагинатора
$pages_limit = 6;
// Последний номер страницы пагинатора
$to_page = max($current_page, min($total_pages, $pages_limit));
if ($to_page == $current_page && $total_pages > $to_page) {
$to_page++;
}
// Первый номер страницы пагинатора
$from_page = max($to_page - $pages_limit + 1, 1);
// Предшествующий номер страницы пагинатора
$before_page = $from_page > 1 ? $from_page - 1 : FALSE;
// Последующий номер страницы пагинатора
$after_page = $total_pages > $to_page ? $to_page + 1 : FALSE;
?>
<!--START PAGINATION-->
<p class="pagination">
<?php if ($first_page !== FALSE): ?>
<a href="<?php echo HTML::chars($page->url($first_page)) ?>" rel="first"><?php echo __('Первая') ?></a>
<?php else: ?>
<?php echo __('Первая') ?>
<?php endif ?>
<?php if ($previous_page !== FALSE): ?>
<a href="<?php echo HTML::chars($page->url($previous_page)) ?>" rel="prev"><?php echo __('Назад') ?></a>
<?php else: ?>
<?php echo __('Назад') ?>
<?php endif ?>
<?php if ($before_page !== FALSE): ?>
<a href="<?php echo HTML::chars($page->url($before_page)) ?>" rel="before"><?php echo '...' ?></a>
<?php endif ?>
<?php foreach (range($from_page, $to_page) as $number): ?>
<?php if ($number == $current_page): ?>
<strong><?php echo $number ?></strong>
<?php else: ?>
<a href="<?php echo HTML::chars($page->url($number)) ?>"><?php echo $number ?></a>
<?php endif ?>
<?php endforeach ?>
<?php if ($after_page !== FALSE): ?>
<a href="<?php echo HTML::chars($page->url($after_page)) ?>" rel="after"><?php echo '...' ?></a>
<?php endif ?>
<?php if ($next_page !== FALSE): ?>
<a href="<?php echo HTML::chars($page->url($next_page)) ?>" rel="next"><?php echo __('Вперед') ?></a>
<?php else: ?>
<?php echo __('Вперед') ?>
<?php endif ?>
<?php if ($last_page !== FALSE): ?>
<a href="<?php echo HTML::chars($page->url($last_page)) ?>" rel="last"><?php echo __('Последняя') ?></a>
<?php else: ?>
<?php echo __('Последняя') ?>
<?php endif ?>
</p>
<!--END PAGINATION-->
Копируем в папку modules/pagination/view/
Устанавливаем в конфиге application/config/pagination.php:
Код:
<?php
defined('SYSPATH') or die('No direct script access.');
return array(
// Application defaults
'default' => array(
'current_page' => array('source' => 'route', 'key' => 'page'), // source: "query_string" or "route"
'total_items' => 0,
'items_per_page' => 50,
'view' => 'pagination/simple',
'auto_hide' => TRUE,
'first_page_in_url' => FALSE,
),
);