RSS

zapisz się: RSS Artykuły

szukaj

Zmiana wyglądu paginatora

Komentarze 0

Wertujące strony książkiPaginator pojawia się, gdy na stronie jest więcej zajawek artykułów lub komentarzy. Wówczas podzielone są one na strony a pod spodem można przełączyć te strony. Domyślnie paginator w sNews nie jest zbyt elegancki. Niniejszy dodatek zmieni wygląd paginatora na numeryczny - będzie można klikać w poszczególne numery stron. Jest to dosyć standardowe rozwiązanie na wielu stronach.

Autorem moda jest "Easy". Dokonałem w nim kilku zmian, aby dostosować do swoich potrzeb. Ok, lecimy... Najpierw oczywiście robimy kopię zapasową pliku "snews.php", następnie szukamy w niej funkcji paginator i zamieniamy całą na następującą funkcję (zamieniamy całą sekcję PAGINATOR):

// PAGINATOR
 function paginator($pageNum, $maxPage, $pagePrefix) {
 global $categorySEF,$subcatSEF, $articleSEF,$_ID, $_catID,$_POS, $_XNAME;
 switch (true){
 case !$_ID && !$_catID :
 $uri ='';
 break;
 case $_ID && $_XNAME :
 $uri = $categorySEF.'/'.$subcatSEF.'/'.$articleSEF.'/';
 break;
 case $_POS == 1 || $_XNAME :
 $uri = $categorySEF.'/'.$subcatSEF.'/';
 break;
 default :
 $uri = $categorySEF.'/';
 }
 $link = '<a href="'._SITE.$uri ;
 $prefix = !empty($pagePrefix) ? $pagePrefix : '';
 if ($pageNum > 1) {
 $goTo =  $link;
 $prev = (($pageNum-1)==1 ? $goTo :
 $link.$prefix.($pageNum - 1).'/').'" title="'.l('page').' '.($pageNum - 1).'">
 &lsaquo; Poprzednia </a> ';
 $first = $goTo.'" title="'.l('first_page').' '.l('page').'">
 &laquo; Pierwsza </a>';
 } else {
 $prev = '';
 $first = '';
 }
 if ($pageNum < $maxPage) {
 $next = $link.$prefix.($pageNum + 1).'/" title="'.l('page').' '.($pageNum + 1).'">
 Następna &rsaquo;</a> ';
 $last = $link.$prefix.$maxPage.'/" title="'.l('last_page').' '.l('page').'">
 Ostatnia &raquo;</a> ';
 } else {
 $next = '';
 $last = '';
 }
 $pages_list='';
 $prev_block='';
 $next_block='';
 $pages_wings = 4; //length of paginator = $pages_wings*2
 if($pageNum<=$pages_wings+1 || $maxPage<=$pages_wings*2){ //left
 $start = 1;
 }elseif($maxPage-$pageNum<$pages_wings-1){ //right
 $start = $maxPage-$pages_wings*2;
 }else{ //center
 $start = $pageNum-$pages_wings-1;
 }
 for($i = $start; $i <= ($maxPage); $i++) {
 if ($maxPage>$pages_wings*2){
 if($i<$pageNum-$pages_wings && $maxPage-$i>=$pages_wings*2){
 $prev_block = $link.$prefix.$i.'/" title=" '.l('page').' '.$i.'">...</a> ';
 continue;
 }
 if($i>=$pageNum+$pages_wings && $i>$pages_wings*2){
 $next_block = $link.$prefix.$i.'/" title=" '.l('page').' '.$i.'">...</a> '; 
 break;
 }
 }
 if($i!=$pageNum){
 $pages_list.=$link.$prefix.$i.'/" title=" '.l('page').' '.$i.'">'.$i.'</a> ';
 }else{
 $pages_list.='<span class="pagin-aktywny">'.$i.'</span> ';
 }
 } 
 echo '
 <div class="paginator">
 '.$first.' '.$prev.'
 <strong>'.$prev_block.$pages_list.$next_block.'</strong>
 '.$next.' '.$last.'
 </div>';
 }

I właściwie to mamy już gotowe. Należy wysłać plik na serwer. Jednak wyjaśnię jeszcze kilka szczegółów zaznaczonych powyżej. Będę omawiał każdy zaznaczony fragment jadąc o góry:

  • 1. Tu wpisujemy tekst lub może być też ścieżka do grafiki zawarta w znaczniku img. Odpowiedzialny jest on za aktywny przycisk do poprzedniej strony w paginatorze.
  • 2. Podobnie jak wyżej, tylko link prowadzi do pierwszej strony paginatora.
  • 3. W tym nawiasie najlepiej wpisać to samo co w punkcie nr 1. Różnica polega na tym, że w tym wypadku nie będzie to link, gdyż znajdujemy się na pierwszej stronie paginatora. Domyślnie pozostawiłem puste, bo i tak nie ma do jakiej strony wracać.
  • 4. Tak jak w powyższym przypadku, tylko tu należy wpisać treść dotyczącą powrotu do pierwszej strony. Również zostawiłem domyślnie puste.
  • 5. Analogicznie jak w punkcie 1, z tym, że dotyczy to przycisku "następna".
  • 6. Analogicznie jak w punkcie 2, z tym, że dotyczy to przycisku "ostatnia".
  • 7. Analogicznie jak w punkcie 3 - dotyczy tekstu "następna".
  • 8. Analogicznie jak w punkcie 4 - dotyczy tekstu "ostatnia".
  • 9. Tu wpisujemy liczbę, która określa ile kolejnych stron ma się wyświetlać w postaci linków do nich. Liczba ta jest połową tych stron. Oznacza to, że jeśli wpiszę 4 to będzie 8 cyfr/liczb z czego 7 będzie linkami do kolejnych stron a jedna stroną aktywną. Przykładowo jeśli masz 30 stron komentarzy, a znajdujesz się na 10 stronie to będą jeszcze widoczne strony 6, 7, 8 i 9 oraz 11, 12, i 13 w postaci linków do nich.
  • 10. W tym miejscu dodałem klasę. Możesz dzięki niej ustylizować w CSS stronę aktywną w dowolny sposób.

Podziel się

Bookmark and Share

Komentowanie zostało zablokowane