Здравсвуйте! Я сделал пагинацию в своём компоненте по этой статье: http://kjoomla.com/notes/36-notes/51-2008-02-29-10-27-31.html Моя модель: Код (PHP): function getCurrentDeals() { $db =& JFactory::getDBO(); $user =& JFactory::getUser(); // пагинация if (! $paginatorStart = JRequest::getVar('start')) { $paginatorStart = 0; } $paginatorLimit = 10; // 10 строк на страницу $query = 'SELECT * from repository WHERE user_id = '.$user->id.' ORDER BY ticket DESC LIMIT '.$paginatorStart.', '.$paginatorLimit; $db->setQuery( $query ); return $db->loadObjectList(); } function getTotalRowsNumber() { $db =& JFactory::getDBO(); $user =& JFactory::getUser(); [B]$query = 'SELECT COUNT(*) from repository WHERE user_id = '.$user->id;[/B] $db->setQuery( $query ); return $db->loadResult(); } function getCurRowNumber() { if (! $paginatorStart = JRequest::getVar('start')) { $paginatorStart = 0; } return $paginatorStart; } Функция моей вьюхи: Код (PHP): function display($tpl = null) { $model =& $this->getModel(); $currentDeals =& $model->getCurrentDeals(); $this->assignRef( 'currentDeals', $currentDeals ); $total = $model->getTotalRowsNumber(); $limitstart = $model->getCurRowNumber(); $limit = 10; // 10 строк на страницу $pagination = new JPagination($total, $limitstart, $limit); $this->assignRef('pagination', $pagination); $this->assignRef('total', $total); $this->assignRef('limitstart', $limitstart); parent::display($tpl); } В статье даны общие указания, додумывать нужно самому. Я пока еще не вполне освоился с MVC и Joomla, поэтому прошу подтвердить мои догадки относительно функционирования такого механизма. Получается, при каждом перелисте пагинатора, модель будет заново лезть в базу данных, запуская функцию getTotalRowsNumber(), и выполнять один и тот же запрос, чтобы получить общее кол-во строк в таблице. Мне хотелось бы снизить нагрузку на СУБД, а гонять попусту один и тот же запрос - недопустимая роскошь. Пожалуйста, посоветуйте как оптимизировать мою пагинацию.
желание конечно очень правильное!!!!!!! но если с сайтом в этот момент будут работать несколько человек которые будут добавлять материал? то при перелистывании в стандартном варианте (каждый раз лезть в БД) количество страниц будет увеличиваться или уменьшаться смотря что делают эти люди а если обратится один раз и только туда сюда передвигаться по уже полученным данным то как узнать что количество материала уменьшилось или увеличилось? если сможешь сделать такой алгоритм работы выкладывай компонент сюда многим пригодится