Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!
Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!
Класс JPagination в Joomla позволяет разработчикам надежно добавлять пагинацию в свои компоненты. Как в Front-End, так и в Back-End. Файл, описывающий этот класс находится по адресу
/libraries/joomla/html/pagination.php
В конструкторе класса используется три переменные:
![]()
getResultsCounter() — Возвращает строку, которая отображает текущие результаты. Пример
![]()
getPagesLinks() — Возвращает строку, которая отображает ссылки результата разбиения на страницы
![]()
getListFooter() — Возвращает комбинацию из нескольких элементов. В том числе — выпадающий список Limit, а так же тоже, что возвращают функции getPagesLinks() и getResultsCounter(). Внешний вид для Front-End и Back-End будет отличаться, т. к. подключаются соответствующие CSS стили для админки.


![]()
Большинство разработчиков не используют SQL_CALC_FOUND_ROWS, который вернет количество всех подходящих под запрос записей, когда количество записей ограничивается LIMIT’ом. Обычая ошибка в таком случаем — это выполнить два почти одинаковых запроса. А в результате замедление работы
Объявляем переменные $_total и $_pagination в модели; Они будут возвращены функциями getTotal() и getPagination(), соответственно.
Добавляем в конструктор (или создаем его) две переменные — $limitstart и $limit. Они будут нужны для класса JPagination.
Пересмотрим функцию getData() в компоненте. Добавим значения переменных $limitstart и $limit в метод _getList(). Это позволит выбирать нужные строки, а не все строки.
Создадим новую функцию getTotal(). В этой функции будем использовать метод _getListCount() класса JModel. Эта функция будет возвращать общее количество строк в запросе. Значение, которое она будет возвращать будет использоваться в следующей функции getPagination().
Создадим функцию getPagination(). Эта функция будет создавать и возвращать новый объект Pagination, который будет передаваться в Вид.
Допишите в представлении (view) функционал, который будет получать объект класса JPagination из модели и назначать переменную для работы с ним из шаблона
Добавьте область footer-а, где будет находиться навигация по страницам, к таблице, отображающей ваш список данных. Метод getListFooter() класса JPagination генерирует кнопки и их функционал «следующая/предыдущая» как на картинках:


Измените свойство colspan=«9» тега <td> для соответствия количеству колонок в вашей таблице.
Спасибо, это усваивать легче чем на английском =)
Отличная статья, но добавлю что в шаблоне, область вывода данных нужно помещать в форму и указывать action и ОБЯЗАТЕЛЬНО указывать name=adminForm:
<form action="index.php?option=com_yourcom&controller=yourcont&task=yourtask" method="post" name="adminForm"">
...
<tfoot>
<tr>
<td colspan="9"><?php echo $this->pagination->getListFooter(); ?></td>
</tr>
</tfoot>
...
</form>
Описал способ "очеловечить" пагинацию, может кому интересно
http://e-kzn.ru/rasshireniya/kak-izmenit-paginatsiiu-v-joomla-1-5.html