Блог

Категории:  

Программирование → Создание нумерации страниц для MCV компонента Joomla 1.5
10.06.2010

В фреймворке Joomla 1.5 предусмотрен встроенный механизм создания нумерации страниц.

Для того, чтобы сделать нумерацию страниц, нужно импортировать файл с классом JPagination. Для этого выполняем следующий код:

1
jimport("joomla.html.newpagination");

Далее нам нужно создать объект нумерации:

1
$pagination = new JNewPagination($count, $limitstart, $limit);

При создании объекта класса мы передаем три параметра:

  • общее количество строк, присутствующее в нашем выводимом контенте — например, мы выбираем весь товар из определенной категории;
  • текущая позиция страницы — этот параметр мы должны принять из данных, переданных странице - $limitstart = JRequest::getInt("limitstart");
  • последний параметр — это количество позиций (например, товара) которые мы должны выводить на странице, этот параметр целочисленный и мы указываем его сами.

После создания объекта нумерации строк нам нужно создать запрос, который выполнит выборку по текущей позиции страницы:


1
$result = $this->_getList($query, $limitstart, $limit);

Как видите, мы передаем все те же параметры $limitstart и $limit, которые мы использовали при создании объекта нумерации строк.

Далее нам остается только передать объект нумерации в вид, и в виде отправить его в шаблон. В шаблоне достаточно написать:


1
echo $this->pagination->getPagesLinks();

Однажды дизайнеру захотелось нарисовать нумерацию строк в таком стиле:
? 1 ... 10 11 12 13 14 ... 210 ?

Поскольку стандартная нумерация строк используется еще и для административной части сайта, то мне пришлось писать свой класс для нумерации. Строк кода в классе получилось довольно много, поэтому писать все здесь нет смысла. Для интересующихся выкладываю файл для скачивания: скачать класс с нумерацией строк

Как заставить подобный класс работать? Очень просто! Необходимо назвать файл newpagination.php и закинуть этот файл в libraries/joomla/html/. В этой же папке будет расположен файл pagination.php. Дальше нам необходимо чуть-чуть подправить наш код в модели для вывода нумерации строк:

1
2
3
4
5
6
$limit     = 7;
$limitstart = JRequest::getInt("limitstart");
jimport("joomla.html.newpagination");//подключаем новый файл нумерации
$pagination = new JNewPagination($count, $limitstart, $limit);//изменяем объект
$result = $this->_getList($sql, $limitstart, $limit);

Автор: Денеж Александр
Теги: