Навигация по страницам - нужно дополнить код

acelotuse

Профессор
Регистрация
31 Мар 2009
Сообщения
312
Реакции
38
Доброго дня всем!
Вопрос новичка, который никак не может постичь даже азы )))
Есть такой код, который установлен на ДЛЕ форуме, он позволяет выводить рядом с названием темы номера страниц.
dfdfdfd.jpg
Вот сам код:
PHP:
$last_page = @ceil($row['post'] / $forum_config['post_inpage']);
$navp = "";
$inum = 1;
$pagegz = 7;
if ($last_page > 1) {
    for ($i=0; $i<$last_page; $i++) {
        if ($inum > $pagegz) {
            $inum = $last_page; $i = $inum; $dot = "...";
        }
        else { $dot = ""; }
        if ($forum_config['mod_rewrite']) {
            $topic_last_link = "{$dot}<a href='/forum/topic_{$row[tid]}/{$inum}'> {$inum}</a>";
        }
        else {
            $topic_last_link = "<a href='/?do=forum&showtopic={$row[tid]}&cstart={$inum}'>{$dot} {$inum}</a>";
        }
        $navp .= $topic_last_link.",";
        $inum ++;
    }
}
if ($last_page > 1) { $paggg = " - Страницы:";}
else { $paggg = "";}
Дело в том, что если страниц темы больше 7, то он выводит рядом с названием ссылки на них так:
1,2,3,4,5,6,7,...17
Но для посетителя бывают важны именно последние страницы обсуждения, поэтому хотелось бы, чтобы и ДО точек и ПОСЛЕ них выдавало одинаковое количество ссылок с номерами страниц, например, по 6, вот так:
1,2,3,4,5,6, ... 12,13,14,15,16,17

Спасибо за отзывы.
 
Ну так воткни проверку на определенное количество до последней страницы...
А вообще бредовый код. Нафига дважды подряд проверять
PHP:
if ($last_page > 1}
 
PHP:
// кол-во элементов на страницу
$count= 7;
// всего элементов в базе
$total = 123;
 
// сколько страниц показывать вначале и в конце
$show = 5;
 
$pages = ceil($total / $count);
 
// первые страницы
for($i =1;$i<($show+1);$i++) {
    if($pages == $show) break;
    $links[] = '<a href="/link'.$i.'">'.$i.'</a>';
}
 
$links [] = '..';
 
// последние страницы
for($i =1;$i<($show+1);$i++) {
    if($pages == $show) break;
    $page_num = ($pages- $show + $i);
    $links[] = '<a href="/link'.$page_num.'">'.$page_num.'</a>';
}
 
echo $links = str_replace('..,', '...', implode(', ', $links));
 
/* на выходе имеем:
1, 2, 3, 4, 5, ... 14, 15, 16, 17, 18
*/

Ссылки только замените на нужные Вам
 
я бы добавил еще пару условий...
PHP:
// первые страницы
for($i =1;$i<($show+1);$i++) {
if($pages <= $i) break;
    if($pages == $show) break;
    $links[] = '<a href="/link'.$i.'">'.$i.'</a>';
}
 
$links [] = '..';
 
// последние страницы
for($i =1;$i<($show+1);$i++) {
    if($pages == $show) break;
    $page_num = ($pages- $show + $i);
    if($pages <= $page_num) break;
    $links[] = '<a href="/link'.$page_num.'">'.$page_num.'</a>';
}
ну так... на всякий случай....
 
Назад
Сверху