Настройка навигации (пагинации) товаров

Тема в разделе "Дизайн и оформление, шаблоны", создана пользователем Bikitte, 10.02.2011.

  1. Offline

    Bikitte Недавно здесь

    Регистрация:
    20.01.2011
    Сообщения:
    23
    Симпатии:
    0
    Пол:
    Мужской
    Как настроить нижнюю пагинацию в виде 1 2 ... 5 6 7 8 9 ... 48 49 при переходе на 9 страницу 1 2 ... 7 8 9 10 11 ... 48 49?
     
  2.  
  3. Offline

    Bikitte Недавно здесь

    Регистрация:
    20.01.2011
    Сообщения:
    23
    Симпатии:
    0
    Пол:
    Мужской
    Решение:
    Код (CODE):
    1. function getPagesLinks($link='') {
    2.  
    3.     global $VM_LANG;
    4.  
    5.      
    6.  
    7.     $displayed_pages = 6;
    8.  
    9.     $total_pages = ceil( $this->total / $this->limit );
    10.  
    11.     $this_page = ceil( ($this->limitstart+1) / $this->limit );
    12.  
    13.  //   $start_loop = (floor(($this_page-1)/$displayed_pages))*$displayed_pages+1;
    14.  
    15.     if ($this_page <= $displayed_pages / 2 + 1 ) {
    16.  
    17.       $start_loop = 2;
    18.  
    19.     } else {
    20.  
    21.     $start_loop = $this_page - $displayed_pages / 2;
    22.  
    23.     }
    24.  
    25.     if ($start_loop + $displayed_pages - 1 < $total_pages) {
    26.  
    27.       $stop_loop = $start_loop + $displayed_pages - 1;
    28.  
    29.     } else {
    30.  
    31.       $stop_loop = $total_pages;
    32.  
    33.     }
    34.  
    35.     $html = '<ul class="pagination"><li>'.$VM_LANG->_('PN_PRETEXT').'</li>';
    36.  
    37.    
    38.  
    39.     if ($this_page > 1) {
    40.  
    41.       $page = ($this_page - 2) * $this->limit;
    42.  
    43.       if( $link != '') {
    44.  
    45.        // $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart=0')."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_START')."\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</a></li>";
    46.  
    47.         $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_PREVIOUS')."\">&laquo; </a></li>";
    48.  
    49.       } else {
    50.  
    51.        // $html .= "\n<li><a href=\"#beg\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_START')."\" onclick=\"javascript: document.adminForm.limitstart.value=0; document.adminForm.submit();return false;\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</a></li>";
    52.  
    53.         $html .= "\n<li><a href=\"#prev\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_PREVIOUS')."\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\">&laquo; </a></li>";
    54.  
    55.       }
    56.  
    57.     } else {
    58.  
    59.      // $html .= "\n<li><span class=\"pagenav\">&laquo;&laquo; ".$VM_LANG->_('PN_START')."</span></li>";
    60.  
    61.       $html .= "\n<li><span class=\"pagenav\"style=\"font-size: 12px;\">&laquo;</span></li>";
    62.  
    63.     }
    64.  
    65.     if ( $this_page == 1) {
    66.  
    67.        $html .= "\n<li><span class=\"pagenav_current\"> 1 </span></li>";
    68.  
    69.     }
    70.  
    71.       else {
    72.  
    73.        $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart=0')."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_START')."\">1</a></li>";
    74.  
    75.       }
    76.  
    77.     if ($this_page > $displayed_pages / 2 + 2 ){
    78.  
    79.       $html .= "\n<li>...</li>";
    80.  
    81.     }
    82.  
    83.     for ($i=$start_loop; $i <= $stop_loop; $i++) {
    84.  
    85.     if ($i != $total_pages)  {
    86.  
    87.       $page = ($i - 1) * $this->limit;
    88.  
    89.       if ($i == $this_page) {
    90.  
    91.         $html .= "\n<li><span class=\"pagenav_current\"> $i </span></li>";
    92.  
    93.       } else {
    94.  
    95.         if( $link != '') {
    96.  
    97.           $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" class=\"pagenav\"><strong>$i</strong></a></li>";
    98.  
    99.         } else {
    100.  
    101.           $html .= "\n<li><a href=\"#$i\" class=\"pagenav\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\"><strong>$i</strong></a></li>";
    102.  
    103.         }
    104.  
    105.       }
    106.  
    107.       }
    108.  
    109.     }
    110.  
    111.     if ($this_page < $total_pages - $displayed_pages / 2  ){
    112.  
    113.       $html .= "\n<li>...</li>";
    114.  
    115.     }
    116.  
    117.     if ( $this_page == $total_pages) {
    118.  
    119.        $html .= "\n<li><span class=\"pagenav_current\"> $total_pages </span></li>";
    120.  
    121.     }
    122.  
    123.       else {
    124.  
    125.       $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.(($total_pages-1) * $this->limit))."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_END')."\"> $total_pages</a></li>";
    126.  
    127.       }
    128.  
    129.     if ($this_page < $total_pages) {
    130.  
    131.       $page = $this_page * $this->limit;
    132.  
    133.       $end_page = ($total_pages-1) * $this->limit;
    134.  
    135.       if( $link != '') {
    136.  
    137.         $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$page)."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_NEXT')."\">  &raquo;</a></li>";
    138.  
    139.       //  $html .= "\n<li><a href=\"".vmRoute($link.'&limit='.$this->limit.'&limitstart='.$end_page)."\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_END')."\"> ".$VM_LANG->_('PN_END')." &raquo;&raquo;</a></li>";
    140.  
    141.       } else {
    142.  
    143.         $html .= "\n<li><a href=\"#next\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_NEXT')."\" onclick=\"javascript: document.adminForm.limitstart.value=$page; document.adminForm.submit();return false;\">  &raquo;</a></li>";
    144.  
    145.       //  $html .= "\n<li><a href=\"#end\" class=\"pagenav\" title=\"".$VM_LANG->_('PN_END')."\" onclick=\"javascript: document.adminForm.limitstart.value=$end_page; document.adminForm.submit();return false;\"> ".$VM_LANG->_('PN_END')." &raquo;&raquo;</a></li>";
    146.  
    147.       }
    148.  
    149.     } else {
    150.  
    151.       $html .= "\n<li><span class=\"pagenav\" style=\"font-size: 12px;\"> &raquo;</span></li>";
    152.  
    153.      // $html .= "\n<li><span class=\"pagenav\">".$VM_LANG->_('PN_END')." &raquo;&raquo;</span></li>";
    154.  
    155.     }
    156.  
    157.     $html .= "\n</ul>";
    158.  
    159.     return $html;
    160.  
    161.   }
     

    Вложения:

    • navigaciya.jpg
      navigaciya.jpg
      Размер файла:
      32 КБ
      Просмотров:
      11
  4. Offline

    Bikitte Недавно здесь

    Регистрация:
    20.01.2011
    Сообщения:
    23
    Симпатии:
    0
    Пол:
    Мужской
    Маленький баг, при использовании фильтра по параметрам типа: в случае когда много результатов и много страниц, если зайти в середину или конец списка страниц, а потом урезать параметры фильтра, то новые результаты выводятся, но страница на которой вы находились сохраняется, а там 0 товаров.
    Решение добавить в фильтре <input type="hidden" name="limitstart" value="0" />
     

Поделиться этой страницей

Загрузка...