Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Постраничная навигация для своего модуля

Постраничная навигация для своего модуля


     03.01.2014    php, постраничная навигация    Все вопросы » Общие вопросы по PHP    3099

вопрос
Всем привет!

Прошу помощи у гуру.
Пишу свой модуль, и столкнулся с проблемой постраничной навигации. А именно не знаю как её реализовать.
Многие рекомендуют использовать длешную навигацию, но я php учу на практике, методом проб и ошибок (просьба тапками не кидаться)
Кому не сложно подскажите пожалуйста.

Ответил: i_loves_ac_dc


//Пагинация 

$tpl->load_template( 'navigation.tpl' );
        
    //----------------------------------
    // Previous link
    //----------------------------------

    $no_prev = false;
    $no_next = false;

    if(isset($cstart) and $cstart != "" and $cstart > 0)
    {
        $prev = $cstart / $limit;

    if ($config['allow_alt_url'] == "yes")
        {
            $prev_page = $config['http_home_url']."actall/page/".$prev."/"
;;
            $tpl->set_block("'\\[prev-link\\](.*?)\\[/prev-link
\\]'si", "<a href=\"".$prev_page."\">\\1</a>");
        }
        else
        {
            $prev_page = $config['http_home_url']."index.php?do=actall&amp;cstart
=".$prev."";
            $tpl->set_block("'\\[prev-link\\](.*?)\\[/prev-link
\\]'si", "<a href=\"".$prev_page."\">\\1</a>");
        }

    }
    else
    {
        $tpl->set_block("'\[prev-link\](.*?)\[/prev-link\]
;'si", "<span>\\1</span>");
        $no_prev = TRUE;
    }

    //----------------------------------
    // Pages
    //----------------------------------
if($limit)
{
        $row = $db->super_query($sql_count);
        $count_all = $row['count'];
          $enpages_count = @ceil($count_all/$limit);

        $pages = "";
        $cstart = ($cstart / $limit) + 1;
        if ($enpages_count <= 10 )
        {
            for($j=1; $j<=$enpages_count; $j++)
            {
                if($j != $cstart)
                {
                    if ($config['allow_alt_url'] == "yes")
                        $pages .= "<a href=\"".$config['http_home_url']."actall/page/"
;.$j."/\">$j</a> ";
                    else
                        $pages .= "<a href=\"".$config['http_home_url']."index.php?do=act
all&amp;cstart=$j\">$j</a> ";

                } else {
                    $pages .= "<span>$j</span> ";
                }

            }

        } else {

            
            $start =1;
            $end = 10;
            $nav_prefix = "... ";

            if ($cstart > 0) {

                if ($cstart > 5) {

                    $start = $cstart - 4;
                    $end = $start + 8;

                    if ($end >= $enpages_count) {
                        $start = $enpages_count - 9;
                        $end = $enpages_count - 1;
                        $nav_prefix = "";
                    } else $nav_prefix = "... ";

                }

            }

            if ($start >= 2)
            {
                if ($config['allow_alt_url'] == "yes")
                    $pages .= "<a href=\"".$config['http_home_url']."actall/page/1/\
">1</a> ... ";
                else
                    $pages .= "<a href=\"".$config['http_home_url']."index.php?do=act
all&amp;cstart=1\">1</a> ... ";
            }
            for($j=$start; $j<=$end; $j++)
            {
                if($j != $cstart)
                {
                    if ($config['allow_alt_url'] == "yes")
                        $pages .= "<a href=\"".$config['http_home_url']."actall/page/"
;.$j."/\">$j</a> ";
                    else
                        $pages .= "<a href=\"".$config['http_home_url']."index.php?do=act
all&amp;cstart=".$j."\">$j</a> ";
                } else {

                    $pages .= "<span>$j</span> ";
                }

            }

            if ($cstart != $enpages_count)
            {
                if ($config['allow_alt_url'] == "yes")
                    $pages .= $nav_prefix."<a href=\"".$config['http_home_url']."actall/page/{$en
pages_count}/\">{$enpages_count}</a>";
                else
                    $pages .= $nav_prefix."<a href=\"".$config['http_home_url']."index.php?do=act
all&amp;cstart={$enpages_count}\">{$enpages_count}</a>";
            }
            else $pages .= "<span>{$enpages_count}</span> ";
    }

      $tpl->set('{pages}', $pages);
  }

//----------------------------------
// Next link
//----------------------------------
    if($limit < $count_all AND $i < $count_all)
    {
        if ($config['allow_alt_url'] == "yes")
        {
             $next_page = $cstart + 1;
             $next = $config['http_home_url'].'actall/page/'.$next_page.'
/';
             $tpl->set_block("'\[next-link\](.*?)\[/next-link\]
;'si", "<a href=\"".$next."\">\\1</a>");
        }
        else
        {
             $next = $config['http_home_url'].'index.php?do=actall&amp;cstart
='.$next_page;
             $tpl->set_block("'\[next-link\](.*?)\[/next-link\]
;'si", "<a href=\"".$next."\">\\1</a>");
        }

    }
    else
    {
        $tpl->set_block("'\[next-link\](.*?)\[/next-link\]
;'si", "<span>\\1</span>");
        $no_next = TRUE;
    }

    if  (!$no_prev OR !$no_next)
    $tpl->compile('navpages');
        
$tpl->clear();
$tpl->result['content'] = $tpl->result['content'] . $tpl->result['navpages'];

4 комментария

Kota
Юзер

Kota - 4 января 2014 20:46 -

Вопрос закрыт. Проблему решил.

ПафНутиЙ
Админ

ПафНутиЙ - 4 января 2014 21:52 -

Как решили? Поделитесь с массами.

Каков вопрос - таков и ответ. Просто помните об этом.

Kota
Юзер

Kota - 5 января 2014 05:21 -

Так же как написл I_LOVES_AC_DC =) С использованием стандартное навигации дле =)

locksmith
Юзер

locksmith - 16 октября 2014 11:38 -

Цитата: Aleksey-Nyaka
actall/page/


Напишите подробнее как решили, что правили?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх