Нужна помощь с переключателем страниц

Статус
В этой теме нельзя размещать новые ответы.

diabl

Боцман
Регистрация
24 Мар 2009
Сообщения
438
Реакции
157
Привет всем.

Нужна помощь с переключателем страниц.

Переключатель страниц выглядит так:

назад 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21 далее

А я хочу.

назад 1.2.3.4.5....19.20.21 далее


Вот код:
PHP:
// Постраничная навигация

$row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_mservice WHERE category = '$cid' AND approve = '1'" );
$count = $row['count'];
$count_d = $count / $mscfg['track_page_lim'];

for ( $t = 0; $count_d > $t; $t ++ ) {
$t2 = $t + 1;
if ( $config['allow_alt_url'] == 'yes' ) $plink = $config['http_home_url'] . 'music/category-' . $cid . '-page-' . $t2 . '.html';
  else $plink = $config['http_home_url'] . 'index.php?do=music&act=category&cid=' . $cid . '&page=' . $t2;
if ( $t2 == $page ) $pages .= "<span>{$t2}</span> ";
else $pages .= "<a href='{$plink}'>{$t2}</a> ";
$array[$t2] = 1;
}

if ( $config['allow_alt_url'] == 'yes' ) {
  $link = $config['http_home_url'] . 'music/category-' . $cid . '-page-';
  $seo_mode = '.html';
} else {
  $link = $config['http_home_url'] . 'index.php?do=music&act=category&cid=' . $cid . '&page=';
  $seo_mode = '';
}

$npage = $page - 1;
if ( isset($array[$npage]) ) $prev_page = ' <a href="'. $link . $npage . $seo_mode . '">Назад</a> ';
  else $prev_page = '<span>Назад</span> ';
$npage = $page + 1;
if ( isset($array[$npage]) ) $next_page = ' <a href="'. $link . $npage . $seo_mode . '">Далее</a>';
  else $next_page = ' <span>Далее</span>';

if ( $count > $mscfg['track_page_lim'] ) {
$mcontent .= <<<HTML
<br /><div class="navigation" align="center" style="margin-bottom:10px; margin-top:10px;">{$prev_page}{$pages}{$next_page}</div>
HTML;
}

// Конец

}

Как переделать не знаю, в интернете побывал искать, но поиск не дал результатов, помогите кто чем может.
 
Что-то в этом духе.
PHP:
$pages_limit=5;
for ( $t = 0; $count_d > $t; $t++ ) {
	if ($t<$pages_limit or $t>$count_d-$pages_limit) {
		$t2 = $t + 1;
		if ( $config['allow_alt_url'] == 'yes' ) $plink = $config['http_home_url'] . 'music/category-' . $cid . '-page-' . $t2 . '.html';
		  else $plink = $config['http_home_url'] . 'index.php?do=music&act=category&cid=' . $cid . '&page=' . $t2;
		if ( $t2 == $page ) $pages .= "<span>{$t2}</span> ";
		else $pages .= "<a href='{$plink}'>{$t2}</a> ";
		$array[$t2] = 1;
		if ($t==4) echo '...';
	}
}
 
В верху сайта появилось ...

А навигация стала:

Назад 1 2 3 4 5 13 14 15 16 17 Далее


Но только если нажать на 5 странициу, 6 не появляеться.
 
Угу, подправил немного:
PHP:
$pages_limit=5;
for ( $t = 0; $count_d > $t; $t++ ) {
    if ($t<$pages_limit or $t>$count_d-$pages_limit) {
        $t2 = $t + 1;
        if ( $config['allow_alt_url'] == 'yes' ) $plink = $config['http_home_url'] . 'music/category-' . $cid . '-page-' . $t2 . '.html';
          else $plink = $config['http_home_url'] . 'index.php?do=music&act=category&cid=' . $cid . '&page=' . $t2;
        if ( $t2 == $page ) $pages .= "<span>{$t2}</span> ";
        else $pages .= "<a href='{$plink}'>{$t2}</a> ";
        $array[$t2] = 1;
        if ($t==4) $pages.='...';
    }
}
Но вообще чтобы скрипты редактировать нужно хоть немного разбираться в ПХП ))
 
Получилось так:

Назад 1 2 3 4 5...14 15 16 17 18 Далее

Но при нажатии на 5, шестая сраница не появляеться :bc:
 
Задачу надо четче формулировать))
Нужно так:
Назад 1 2 3 4 5...текущая страница...14 15 16 17 18 Далее
или как?
Вообще рекомендую погуглить готовые решения изменения разбиения на страницы. Это же какая-то готовая CMS используется?
Если не получится найти готовое решение, - вот готовый код простой пагинации вида << < ... 11 12 13 14 15 16 17 ... > >>

PHP:
#
$itemscount=123; // количество элементов (статей)
#
$itemsperpage=10; // кол-во эл-в на странице
#
if (isset($_REQUEST['page']))
#
    { $cpage=$_REQUEST['page']; }
#
    else { $cpage=1; }
#
// если странца не задана, то будем на 1й
#
$pagedisprange=3; // соклько страниц до и после текущей выводить
#
$pagescount=ceil($itemscount/$itemsperpage); // кол-во страниц
#
$stpage=$cpage-$pagedisprange; // определим начиная с какого номера будем выводить страницы
#
if ($stpage<1) { $stpage=1; } // если наше "начало" вылазит на отрицательные номера, то стави м в 1
#
$endpage=$cpage+$pagedisprange; // аналогично с номером, по который будем выводить
#
if ($endpage>$pagescount) { $endpage=$pagescount; } // если больше чем страниц, то последняя выводимая страницы - самая последняя наша
#
if ($cpage>1) {
#
    // first
#
    echo '<a href="?page=1"><<</a> ';
#
    // prev
#
    echo '<a href="?page='.($cpage-1).'"><</a> ';
#
}
#
if ($stpage>1) echo '... '; // если начало вывода не 1, то напечатаем три точки
#
for ($i=$stpage;$i<=$endpage;$i++) {
#
    if ($i==$cpage) { echo '<strong>'.$i.'</strong> '; }
#
    else { echo '<a href="?page='.$i.'">'.$i.'</a> '; }
#
}
#
if ($endpage<$pagescount) echo '... '; // если начало конец вывода не последняя страница, то напечатаем три точки
#
if ($cpage<$pagescount) {
#
    // next
#
    echo '<a href="?page='.($cpage+1).'">></a> ';
#
    // last
#
    echo '<a href="?page='.$pagescount.'">>></a> ';
#
}

Интегрировать этот код с приведенным выше не буду...честно скажу - лениво)
 
Решил проблемму.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху