Разбить просто... просто надо создать файл
/templates/папка_шаблона/html/pagination.php
код следующий
<?php
/**
* @version $Id: pagination.php 10822 2009-10-09 16:16:00Z tcp $
* @package Joomla
* @copyright Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
/**
* This is a file to add template specific chrome to pagination rendering.
*
* pagination_list_footer
* Input variable $list is an array with offsets:
* $list[limit] : int
* $list[limitstart] : int
* $list[total] : int
* $list[limitfield] : string
* $list[pagescounter] : string
* $list[pageslinks] : string
*
* pagination_list_render
* Input variable $list is an array with offsets:
* $list[all]
* [data] : string
* [active] : boolean
* $list[start]
* [data] : string
* [active] : boolean
* $list[previous]
* [data] : string
* [active] : boolean
* $list[next]
* [data] : string
* [active] : boolean
* $list[end]
* [data] : string
* [active] : boolean
* $list[pages]
* [{PAGE}][data] : string
* [{PAGE}][active] : boolean
*
* pagination_item_active
* Input variable $item is an object with fields:
* $item->base : integer
* $item->link : string
* $item->text : string
*
* pagination_item_inactive
* Input variable $item is an object with fields:
* $item->base : integer
* $item->link : string
* $item->text : string
*
* This gives template designers ultimate control over how pagination is rendered.
*
* NOTE: If you override pagination_item_active OR pagination_item_inactive you MUST override them both
*/
function pagination_list_footer($list)
{
// Initialize variables
$lang =& JFactory::getLanguage();
$html = "<div class=\"list-footer\">\n";
if ($lang->isRTL())
{
$html .= "\n<div class=\"counter\">".$list['pagescounter']."</div>";
$html .= $list['pageslinks'];
$html .= "\n<div class=\"limit\">".JText::_('Display Num').$list['limitfield']."</div>";
}
else
{
$html .= "\n<div class=\"limit\">".JText::_('Display Num').$list['limitfield']."</div>";
$html .= $list['pageslinks'];
$html .= "\n<div class=\"counter\">".$list['pagescounter']."</div>";
}
$html .= "\n<input type=\"hidden\" name=\"limitstart\" value=\"".$list['limitstart']."\" />";
$html .= "\n</div>";
return $html;
}
function pagination_list_render($list)
{
// Initialize variables
$numlr = 2; //колличество позиций страниц в начале ленты и в конце
$numpos = 10; //колличество позиций ленты вообще
$lang =& JFactory::getLanguage();
$html = '<table class="contentpagination"><tr>';
// Reverse output rendering for right-to-left display
if($lang->isRTL()){ $list['pages'] = array_reverse( $list['pages'] ); }
$html .= '<td align="right" width="49%">';
// $html .= '«';
// $html .= '«';
// $html .= $list['start']['data'];
$html .= $list['previous']['data'];
$html .= '</td>';
$html .= '<td align="center">';
if(count($list['pages'])>$numpos) { // если страниц больше чем позиций в ленте - разбиваем троеточием
for($i=1; $i<=count($list['pages']); $i++){
if(!$list['pages'][$i]['active']) {
if($i > $numlr){
for($j=1; $j<=$numlr; $j++){ $html .= $list['pages'][$j]['data']; }
}else{
for($j=1; $j<$i; $j++){ $html .= $list['pages'][$j]['data']; }
}
if(($numlr+1) < ($i-1)){ $html .= '...'; }
if((count($list['pages']) - $numlr) <= $i){
for($j=(count($list['pages'])-$numlr-2); $j<$i; $j++){ $html .= $list['pages'][$j]['data']; }
}else{
if($i > ($numlr+1)){ $html .= $list['pages'][$i-1]['data']; }
}
$html .= '<span class="activ">';
$html .= $list['pages'][$i]['data'];
$html .= '</span>';
if(($numlr+1) >= $i){
for($j=($i+1); $j<=($numlr+3); $j++){ $html .= $list['pages'][$j]['data']; }
}else{
if($i < (count($list['pages'])-$numlr)){ $html .= $list['pages'][$i+1]['data']; }
}
if((count($list['pages']) - $numlr) > ($i+1)){ $html .= '...'; }
if($i <= (count($list['pages'])-$numlr)){
for($j=(count($list['pages'])-$numlr+1); $j<=count($list['pages']); $j++){ $html .= $list['pages'][$j]['data']; }
}else{
for($j=$i+1; $j<=count($list['pages']); $j++){ $html .= $list['pages'][$j]['data']; }
}
}
}
} else {
foreach( $list['pages'] as $page ){
if(!$page['active']) {
$html .= '<span class="activ">';
}
$html .= $page['data'];
if(!$page['active']) {
$html .= '</span>';
}
}
}
$html .= '</td>';
$html .= '<td align="left" width="49%">';
$html .= $list['next']['data'];
// $html .= $list['end']['data'];
// $html .= '»';
$html .= '</td>';
$html .= '</tr></table>';
return $html;
}
function pagination_item_active(&$item) {
return " <a href=\"".$item->link."\" title=\"".$item->text."\">".$item->text."</a> ";
}
function pagination_item_inactive(&$item) {
return " <span>".$item->text."</span> ";
}
?>
рускими коментами я пометил переменные которые отвечают за то сколько номерков страниц будет в начале ленты и в конце и сколько их вообще должно быть минимум... тоесть если вы ставите
$numlr = 2; //колличество позиций страниц в начале ленты и в конце
$numpos = 10; //колличество позиций ленты вообще
как в коде то выглядеть будет так
1 2 ... 49 50 51 ... 99 100
если так
$numlr = 3; //колличество позиций страниц в начале ленты и в конце
$numpos = 10; //колличество позиций ленты вообще
то выглядеть будет так
1 2 3 ... 49 50 51 ... 98 99 100
и так далее ...
цифра 10 отвечает за то при каком минимальном колличестве страниц начинать бить троеточием...
тоесть если страниц меньше 10 то в нашем случае будут выведены все страницы, если их 8 то
1 2 3 4 5 6 7 8
защиты от дурака здесь нету... поэтому думайте прежде чем втыкать числа
еще одна хитрость... Joomla сама разделяет пагинацию на страницы... по умолчанию страницы выводятся по 10, тоесть сразу первых 10 потом с 11 по 20 и так далее...
Чтобы от этого избавиться и при разбиении троеточием увидеть последней последнюю 100 или какая там у вас есть а не 10 надо заменить в
$displayedPages = 10;
$this->set( 'pages.start', (floor(($this->get('pages.current') -1) / $displayedPages)) * $displayedPages +1);
if ($this->get('pages.start') + $displayedPages -1 < $this->get('pages.total')) {
$this->set( 'pages.stop', $this->get('pages.start') + $displayedPages -1);
} else {
$this->set( 'pages.stop', $this->get('pages.total'));
}
цифру 10 на 1000 ну или если у вас перевалило за 1000 то на еще большую...
Удачи... если что пишите ... код еще дорабатывается и будет совершенствоваться