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

Тема в разделе "Как сделать...", создана пользователем diabl, 9 дек 2010.

Статус темы:
Закрыта.
  1. diabl

    diabl Боцман

    Регистр.:
    24 мар 2009
    Сообщения:
    439
    Симпатии:
    156
    Привет всем.

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

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

    назад 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;
    }

    // Конец

    }
    Как переделать не знаю, в интернете побывал искать, но поиск не дал результатов, помогите кто чем может.
     
  2. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    635
    Симпатии:
    503
    Что-то в этом духе.
    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 '...';
        }
    }
     
  3. diabl

    diabl Боцман

    Регистр.:
    24 мар 2009
    Сообщения:
    439
    Симпатии:
    156
    В верху сайта появилось ...

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

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


    Но только если нажать на 5 странициу, 6 не появляеться.
     
  4. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    635
    Симпатии:
    503
    Угу, подправил немного:
    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.='...';
        }
    }  
    Но вообще чтобы скрипты редактировать нужно хоть немного разбираться в ПХП ))
     
  5. diabl

    diabl Боцман

    Регистр.:
    24 мар 2009
    Сообщения:
    439
    Симпатии:
    156
    Получилось так:

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

    Но при нажатии на 5, шестая сраница не появляеться :bc:
     
  6. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    635
    Симпатии:
    503
    Задачу надо четче формулировать))
    Нужно так:
    или как?
    Вообще рекомендую погуглить готовые решения изменения разбиения на страницы. Это же какая-то готовая 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> ';
    #
    }
    Интегрировать этот код с приведенным выше не буду...честно скажу - лениво)
     
  7. diabl

    diabl Боцман

    Регистр.:
    24 мар 2009
    Сообщения:
    439
    Симпатии:
    156
    Решил проблемму.
     
Статус темы:
Закрыта.